4.3.1-数据分组.md

4.3.1 数据分组

数据分组是指根据一个或多个列的值,将数据框(DataFrame)中的数据分为若干组,以便随后对每组做汇总、统计、计算等聚合操作。分组由数据框对象的 groupby() 方法完成:参数为分组的列标签,返回一个分组对象。导入惯例为 from pandas import DataFrame 或 import pandas as pd。

课程以销售业绩数据框为例,可用字典创建:键为列名「姓名」「分区」「一季度」「二季度」「三季度」「四季度」,值为对应列表,共 8 行(赵四、钱多、孙冰、李萌、周金、吴达、郑华、王军)。按「分区」分组写作 group = df.groupby('分区')。该数据框中分区取值为天河、黄埔、越秀,因此会被分成 3 组。groupby() 只完成分组、生成分组对象,本身并不打印各组明细,也不直接给出合计数字。

生成分组对象后,可通过该对象查看分组情况。属性 ngroups 给出分组个数,本例 group.ngroups 结果为 3。方法 size() 查看各分组的数量:天河 3 人、越秀 2 人、黄埔 3 人。还可用 for name, g in group: 遍历各分组:name 是分组名(该组的分区值),g 是该组对应的子数据框,并保留原行标签。本例遍历顺序为天河、越秀、黄埔;天河组含赵四、周金、吴达(行标签 0、4、5),越秀组含孙冰、王军(2、7),黄埔组含钱多、李萌、郑华(1、3、6)。

易错点:groupby 的参数是列标签字符串(如 '分区'),不是该列的数据本身;要看组数用 ngroups,要看各组行数用 size(),要看各组原始行用遍历。分组对象需先保存再查看,直接打印通常看不到各组明细。遍历顺序按分组键排列(课程演示为天河、越秀、黄埔),不是数据框中该列值首次出现的顺序(天河、黄埔、越秀)。本节只负责分组,对分组做求和、均值等属于后续的聚合操作。

关键要点

下载此文件