pandas groupby 分组统计笔记
586 字
3 分钟
pandas groupby 分组统计笔记
pandas groupby 分组统计笔记
做表格分析时,经常会遇到一个问题:原始数据是一行一条记录,但我们真正想看的结果是按类别汇总后的统计值。比如按商品类别统计销售额,按班级统计平均分,按日期统计订单数量。
在 pandas 里,这类问题一般用 groupby 解决。
1、准备一份示例数据
import pandas as pd
data = { "日期": ["2026-07-01", "2026-07-01", "2026-07-02", "2026-07-02"], "类别": ["图书", "数码", "图书", "数码"], "销量": [3, 2, 5, 1], "单价": [40, 300, 35, 280],}
df = pd.DataFrame(data)df["销售额"] = df["销量"] * df["单价"]print(df)这里先增加一列 销售额,后面统计时会用到。
2、按一个字段分组
如果想看每个类别的总销售额:
result = df.groupby("类别")["销售额"].sum()print(result)输出结果的索引就是类别,值就是每个类别汇总后的销售额。
如果希望结果仍然是普通表格,可以加上:
result = df.groupby("类别", as_index=False)["销售额"].sum()print(result)as_index=False 对后续导出 Excel 或继续合并数据比较方便。
3、按多个字段分组
如果想看每天、每个类别的销售额:
result = df.groupby(["日期", "类别"], as_index=False)["销售额"].sum()print(result)多个字段分组时,可以理解为先按日期分,再在每个日期里面按类别分。
4、一次统计多个指标
实际分析时,经常不只看一个指标。可以使用 agg:
summary = df.groupby("类别", as_index=False).agg( 总销量=("销量", "sum"), 平均单价=("单价", "mean"), 总销售额=("销售额", "sum"),)print(summary)这种写法的好处是输出列名可以自己命名,结果比较清楚。
5、排序和筛选
汇总后通常还要排序:
summary = summary.sort_values("总销售额", ascending=False)print(summary)也可以筛选出销售额较高的类别:
high = summary[summary["总销售额"] > 200]print(high)这样就能从原始明细数据得到更适合观察的统计结果。
总结
groupby 的核心思路是“先分组,再统计”。单字段分组适合看某个类别的汇总,多字段分组适合看交叉维度,agg 适合一次输出多个指标。写分析代码时,可以先把问题翻译成“按什么分组、统计什么列、使用什么函数”,再去写 pandas 代码。
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
pandas groupby 分组统计笔记
https://blog.tjcheng.cn/posts/daily/2026-07-01/pandas-groupby-summary/相关文章智能推荐
1
pandas 交叉表统计
数据分析记录 pandas crosstab 交叉表的用法,用于分析两个分类变量之间的关系。
2
pandas 导出 Excel 笔记
数据分析记录 pandas 导出 Excel 时多 sheet、索引、列宽和结果复核的常用做法。
3
pandas 分类字段统计
数据分析记录 pandas 分类字段统计的常用写法,以及统计前需要做的文本清洗。
4
pandas merge 左连接笔记
数据分析说明 pandas merge 左连接的适用场景、对账方法和重复键风险。
5
pandas 缺失值处理
数据分析记录 pandas 中缺失值检查、删除、填充和简单统计的常用写法。
随机文章随机推荐













