You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在PySpark的agg()函数中添加95百分位数计算?

在PySpark的agg函数中添加百分位数计算

你可以在agg()函数中通过两种方式加入百分位数计算,对应你的需求实现如下:

方式一:使用expr()嵌入SQL风格表达式

这种方式和你提到的selectExpr逻辑一致,直接将百分位数计算表达式传入agg():

from pyspark.sql.functions import count, avg, expr

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

方式二:使用PySpark内置的percentile_approx函数(推荐)

针对大数据场景,官方更推荐使用近似百分位计算函数percentile_approx,性能更优:

from pyspark.sql.functions import count, avg, percentile_approx

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

你还可以给percentile_approx添加第三个参数指定精度(默认值为10000),数值越高精度越高但性能会略有下降,例如percentile_approx("price", 0.95, 100000)。

内容的提问来源于stack exchange,提问作者n179911a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 19:20:19