我想对 pyspark 数据框进行分组并计算特定列的方差。对于平均而言,这很容易,可以像这样完成
from pyspark.sql import functions as func
AVERAGES=df.groupby('country').agg(func.avg('clicks').alias('avg_clicks')).collect()
但是对于方差,函数子模块中似乎没有任何聚合函数(我也想知道为什么,因为这是一个很常见的操作)
我想对 pyspark 数据框进行分组并计算特定列的方差。对于平均而言,这很容易,可以像这样完成
from pyspark.sql import functions as func
AVERAGES=df.groupby('country').agg(func.avg('clicks').alias('avg_clicks')).collect()
但是对于方差,函数子模块中似乎没有任何聚合函数(我也想知道为什么,因为这是一个很常见的操作)
您可以做的是将数据帧转换为 RDD 对象,然后使用为 RDD 提供的方差函数。
df1 = df.groupby('country').agg(func.avg('clicks').alias('avg_clicks'))
rdd = df1.rdd
rdd.variance()
由于标准偏差是方差的平方根,因此纯 PySpark 数据框解决方案是:
df = sc.parallelize(((.1, 2.0), (.3, .2))).toDF()
df.show()
varianceDF = df.select(stddev('_1') * stddev('_1'))
varianceDF.show()