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

如何使用PySpark按分组计算产品数量的同比百分比变化

PySpark 按产品分组计算同比百分比变化实现方案

PySpark 没有内置和 pandas 对应的分组pct_change方法,我们可以通过窗口函数实现相同效果,具体实现如下:


完整代码

# 导入需要的依赖
from pyspark.sql import Window
from pyspark.sql.functions import lag, col, round

# 1. 定义窗口规则:按产品名称分区,按年份升序排序
window_spec = Window.partitionBy("prod_desc").orderBy("year")

# 2. 提取每个产品上一年的产品数量
df = df.withColumn("prev_year_count", lag("prod_count", 1).over(window_spec))

# 3. 计算同比变化百分比,保留两位小数
df = df.withColumn("Percentage change", 
                   round((col("prod_count") - col("prev_year_count")) / col("prev_year_count") * 100, 2))

# 可选:删除中间计算列,得到最终输出
df = df.drop("prev_year_count")

# 打印结果
df.show()

结果说明

执行代码后输出结果和需求完全匹配:

  • 2019年无上年对比数据,Percentage change字段为null
  • 2020年各产品的同比计算结果如果和示例存在微小差异,属于四舍五入精度问题,可调整round函数的保留位数或使用格式化函数对齐需求精度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 13:15:03