【问题标题】:How to calculate 95 percentile in pyspark如何在pyspark中计算95个百分位数
【发布时间】:2022-12-13 08:26:11
【问题描述】:

我使用了 'agg' 并在我的数据框中获取了列的平均值,就像这样

df.groupBy('day','city')
  .agg(count("*"),
       avg(df.price).alias("avgPrice")
    )

从这里 Calculate percentile on pyspark dataframe columns,它说我可以使用 df.selectExpr('percentile(MOU_G_EDUCATION_ADULT, 0.95)') 获得列的 95 个百分点。 那么如何将它添加到 agg() 函数中呢?

【问题讨论】:

    标签: pyspark


    【解决方案1】:

    您可以使用expr函数添加agg

    (df.groupBy('city')
     .agg(count("*"),
          avg(df.price).alias("avgPrice"),
          expr("percentile(price, 0.95)").alias("percentile"))
    )
    

    但是,正如链接所建议的那样,如果您的数据集很大并且不介意一些近似值,请考虑使用percentile_approx

    (df.groupBy('city')
     .agg(count("*"),
          avg(df.price).alias("avgPrice"),
          percentile_approx('price', 0.95).alias('percentile')
    )
    

    【讨论】:

      猜你喜欢
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 2020-02-14
      • 1970-01-01
      • 2014-05-14
      • 2022-01-14
      • 2021-05-26
      • 1970-01-01
      相关资源
      最近更新 更多