pandas transform 做组内统计

566 字
3 分钟
pandas transform 做组内统计

pandas transform 做组内统计#

有些分析既要保留每一行明细,又要知道它所在组的统计值。groupby().agg() 会把数据压缩成汇总表,而 transform 可以把组内结果对齐回原表。

数据分析里最容易出问题的地方,不是函数不会用,而是数据口径没有在一开始说清楚。一个步骤如果不能解释输入是什么、输出是什么、失败时怎么看,就很难放进稳定流程。

使用场景#

例如订单明细中想比较每笔订单是否高于本城市平均值,就适合用 transform。它返回的长度和原表一致,方便继续筛选、打标签和导出明细。

我会先准备一个小样本,保证可以人工检查结果。大表直接跑起来很快,但一旦结果不对,很难判断是代码错、字段错,还是数据本身脏。

最小代码#

df["city_avg"] = df.groupby("city")["amount"].transform("mean")
df["above_city_avg"] = df["amount"] > df["city_avg"]
print(df[["city", "amount", "city_avg", "above_city_avg"]].head())

检查结果#

  • 行数是否符合预期,不能只看代码是否报错。
  • 关键字段的类型、缺失值和唯一值数量是否合理。
  • 输出结果能否用三到五行样本手工复算。
  • 如果生成报表,要保留清洗前后的对账数字。

容易忽略的点#

transform 不适合生成多列复杂汇总。遇到多指标报表时,先用 agg 做汇总,再 merge 回明细,通常更清楚。

最小验收样例#

我会用三行数据做一次手工验收:一行正常记录,一行边界记录,一行异常记录。代码跑完后,把输出和手工计算结果对照一遍,确认不是字段名写对了但口径理解错了。

如果这一步会进入日报、周报或正式报告,还要把输入行数、输出行数和被过滤的记录数写到日志里。数据处理的可信度,来自这些可以复查的中间证据。

小结#

pandas transform 做组内统计 要解决的是一个可复查的数据处理问题。先定义口径,再写代码,最后用样本和统计结果验收,分析结果才站得住。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

pandas transform 做组内统计
https://blog.tjcheng.cn/posts/daily/2026-07-03/pandas-transform-group-stat/
作者
TengJinCheng
发布于
2026-07-03
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录