本章要回答的问题:为什么同样一份数据,有人算出的指标总是对不上?分组聚合的"拆、算、合"到底拆了什么、合了什么?累计、滚动、条件取值这三类"边走边算"的活,各用什么函数、什么参数?本章围着汤锅把这几问炖透。
切配台上料是切好了,但报表要的是"华东区月均单量""最近七天滚动销售额""超标订单的标记"——这些数字没有一行能直接从原料里挑出来,都得下锅熬:把数据按组拆开,各自算完,再把结果合并回来。汤锅区是整间教室里"出味道"的地方:groupby 是主灶,describe 是一锅出的快手汤,rolling 是文火慢煨,np.where 是尝味后的最后调味。与讲统计理论的教材不同,本章只关心一件事——每个函数怎么用、参数怎么拧、什么时候会煳锅。
这一章的手法有一个共同底座:向量化。汤锅里没有 Python 循环的位置,凡是你想写 for 循环逐行算的地方,多半都有一味现成的汤料。底座之外的另一条暗线是"对齐"——分组键对齐、窗口边界对齐、条件分支对齐,汤的口味准不准,全看对齐功夫。
可考核知识点清单:groupby 后选择列的两种写法与 KeyError 的来历;agg 传列表、传字典、命名聚合三种形态;transform 与 apply 在"结果回填原表"场景的分工;describe 对数值列与非数值列的默认取舍;rolling 的 window 与 min_periods 联动;ewm 与 expanding 各自的窗口观;np.where 三参数的顺序语义;df.where 与 np.where 条件方向相反这件事;clip 与 2.2 截尾的呼应。
| 节 | 回答哪个问题 | 关键产出 |
|---|---|---|
| 4.1 分组聚合 | 分组指标怎么算对 | 拆算合三步与 agg 形态 |
| 4.2 描述性统计 | 一眼看清数什么样 | describe 与统计量族 |
| 4.3 累计与滚动窗口 | 边走边算怎么算 | cumsum 与 rolling 手法 |
| 4.4 条件计算 | 按条件变值怎么写 | where select clip 三件 |
**问:聚合与透视表什么关系?**4.1 的 groupby 是本体,5.3 的 pivot_table 是它的二维报表皮肤——同一笔账两种摆法。本章先把 groupby 的拆算合吃透,摆盘区的透视表就只是换个姿势。
**问:不讲统计理论,那 describe 算什么?**算"工具用法"。本章关心的是 describe 怎么调、输出怎么读、口径(比如标准差的 ddof)差在哪,至于这些统计量背后的估计理论,本册一概不展开——需要时另配方法论专册。
**问:rolling 与 groupby 什么时候叠加使用?**当你听到"每个门店各自的近七天均值"这类需求时——分组保证组间不串味,滚动保证窗口正确。4.3 末尾给了标准写法,注意它返回多层索引,取数前先想清楚层级。
汤熬好就该装盘:第 5 章摆盘区负责 merge 合并、pivot 重塑与汇总报表。本章 4.1 的分组结果会在 5.3 与 pivot_table 殊途同归;4.3 的滚动列在 8.5 的流水线实战里会作为特征列原样出现。