# 4.3.2 对分组数据进行聚合操作

对分组数据进行聚合操作，是指先用数据框的 `groupby()` 按一个或多个列的值分成若干组，再对每个组进行汇总、统计、计算，从而提取有用的信息。本节的实现方法是分组对象的 `agg` 方法。课程给出的聚合操作及对应函数名为：求和（sum）、计数（count）、平均值（mean）、最大值（max）、最小值（min）等。`agg` 的参数是一个字典：列标签是键，操作名是值。

示例数据框包含「姓名、分区、一季度～四季度」，人员分属天河、黄埔、越秀。先执行 `group = df.groupby('分区')`，再按三种方式调用 `agg`。（1）对一个列标签执行一种聚合：`group.agg({'一季度':'sum'})`，结果为天河 9116、越秀 6939、黄埔 11991，表示各区一季度所有人的总和。（2）对一个列标签执行多种聚合：`group.agg({'一季度':['sum','max']})`，字典的值改为操作名列表，一季度下同时出现 sum 与 max 两列，天河为 9116 和 4109（4109 为该区一季度最大值）。（3）对多个列标签执行多种聚合：`group.agg({'一季度':['sum','max'],'二季度':['mean','min']})`，每个列标签和操作构成一个键值对。天河二季度 mean 为 3492.0、min 为 2322；越秀为 2292.5 与 1214；黄埔为 2934.0 与 1831。

易错点：必须先 `groupby` 得到分组对象再调用 `agg`；字典的键必须是已有列标签；一种聚合写字符串（如 `'sum'`），多种聚合写列表（如 `['sum','max']`），不要把多种操作写成一个字符串；多列时每个列各自一对键值，不要把不同列的操作混在同一个值里。聚合结果以分组键「分区」为行索引，多种聚合时列名呈多层结构。`agg` 把每个组压成一行汇总，不要与下一节 `transform()`（结果对齐回原始各行）混淆。

## 关键要点
- 聚合在分组之后进行，用分组对象的 `agg` 方法对每组做汇总、计算。
- 常用操作：求和 `sum`、计数 `count`、平均值 `mean`、最大值 `max`、最小值 `min`。
- 参数是字典：列标签为键，操作名为值。
- 一列一种：`group.agg({'一季度':'sum'})`。
- 一列多种：值改为列表，如 `{'一季度':['sum','max']}`。
- 多列多种：多个键值对，如 `{'一季度':['sum','max'],'二季度':['mean','min']}`。
- 结果以分组键为行索引；多种聚合时出现多层列名。`agg` 压成每组一行，不同于 `transform()`。
