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/












