4

我想对 pyspark 数据框进行分组并计算特定列的方差。对于平均而言,这很容易,可以像这样完成

from pyspark.sql import functions as func
AVERAGES=df.groupby('country').agg(func.avg('clicks').alias('avg_clicks')).collect()

但是对于方差,函数子模块中似乎没有任何聚合函数(我也想知道为什么,因为这是一个很常见的操作)

4

2 回答 2

3

您可以做的是将数据帧转换为 RDD 对象,然后使用为 RDD 提供的方差函数。

df1 = df.groupby('country').agg(func.avg('clicks').alias('avg_clicks'))
rdd = df1.rdd
rdd.variance()
于 2015-08-12T13:40:12.510 回答
2

由于标准偏差是方差的平方根,因此纯 PySpark 数据框解决方案是:

df = sc.parallelize(((.1, 2.0), (.3, .2))).toDF()
df.show()
varianceDF = df.select(stddev('_1') * stddev('_1'))
varianceDF.show()
于 2017-03-14T10:44:39.353 回答