使用Pyspark DataFrame,对一个列进行分组,并计算方差。

4
我希望您能够对pyspark数据框进行分组,并计算特定列的方差。对于平均值,这很容易实现,可以像这样完成:
from pyspark.sql import functions as func
AVERAGES=df.groupby('country').agg(func.avg('clicks').alias('avg_clicks')).collect()

然而,在方差计算上,似乎在函数子模块中没有任何聚合函数可用(我也很好奇为什么,因为这是一种相当常见的操作)。


我也看不到。你可能可以直接使用两个经典的方差公式之一,或者将其作为UDF使用。这些公式只需要平均值和平方运算。它们会给你一个平均操作,所以你需要能够进行平方运算,例如你可以使用func.pow('clicks',2)来得到点击次数的平方。 - Paul
2个回答

3
您可以将数据框转换为RDD对象,然后使用提供的RDD方差函数来进行计算。
df1 = df.groupby('country').agg(func.avg('clicks').alias('avg_clicks'))
rdd = df1.rdd
rdd.variance()

2

由于标准差是方差的平方根,因此可以使用纯 PySpark 数据帧解决:

df = sc.parallelize(((.1, 2.0), (.3, .2))).toDF()
df.show()
varianceDF = df.select(stddev('_1') * stddev('_1'))
varianceDF.show()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接