【问题标题】:Calculate variance across columns in pyspark计算pyspark中各列的方差
【发布时间】:2017-04-28 15:25:57
【问题描述】:

如何计算 pyspark 中众多列的方差? 例如如果 pyspark.sql.dataframe 表是:

ID  A   B   C
1   12  15  7
2   6   15  2
3   56  25  25
4   36  12  5

需要的输出是

ID  A   B   C   Variance
1   12  15  7   10.9
2   6   15  2   29.6
3   56  25  25  213.6
4   36  12  5   176.2

pyspark 中有一个方差函数,但它只能按列工作。

【问题讨论】:

    标签: pyspark multiple-columns variance


    【解决方案1】:

    只需使用concat_ws 函数连接您需要的列,然后使用 udf 计算方差,如下所示

    from pyspark.sql.functions import *
    from pyspark.sql.types import *
    from statistics import pvariance
    
    def calculateVar(row):
        data = [float(x.strip()) for x in row.split(",")]
        return pvariance(data)
    
    varUDF = udf(calculateVar,FloatType())
    df.withColumn('Variance',varUDF(concat_ws(",",df.a,df.b,df.c))).show()
    

    输出:

    +---+---+---+---+---------+
    | id|  a|  b|  c| Variance|
    +---+---+---+---+---------+
    |  1| 12| 15|  7|10.888889|
    |  2|  6| 15|  2|29.555555|
    |  3| 56| 25| 25|213.55556|
    |  4| 36| 12|  5|176.22223|
    +---+---+---+---+---------+
    

    【讨论】:

      猜你喜欢
      • 2021-08-18
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2020-07-25
      • 2016-08-12
      • 2016-06-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多