数据分组统计还用Excel?Pandas分组聚合,分分钟出报表
- 2026-09-24 07:48:39
做数据分析的朋友都经历过这种场景。领导扔给你一张Excel表,里面有几千行销售数据,让你按地区统计销售额。你打开Excel,点开数据透视表,选字段,拖来拖去。数据少还好说,要是表格有几十万行,电脑风扇转得呼呼响,卡得点一下等十秒。等你把报表弄出来,黄花菜都凉了。
我刚开始工作那会儿也这样。有一次处理一个三百万行的订单数据,Excel直接崩溃了三次。后来同事教我用了Pandas,我才知道原来报表可以这样出。潘大师可能听起来像日本名字,它其实是Python里一个数据处理工具。你不用管它多复杂,记住它能帮你快速搞定分组统计就行。
举个例子。你有下面这样一张销售表。
order_id region product sales
001 华东 A 1200
002 华东 B 800
003 华北 A 1500
004 华北 B 900
你想知道每个地区的总销售额。Excel里你得插入透视表,选字段,然后才能看到结果。用Pandas就两行。
import pandas as pd
df = pd.read_excel(‘sales.xlsx’)
result = df.groupby(‘region’)[‘sales’].sum()
你打印result,就能看到华东2000,华北2400。就这么简单。你不用点鼠标,不用等进度条。
再复杂一点的情况。你想统计每个地区每个产品的销售额。Excel里你得放地区在产品上面,还要调格式。Pandas一句话。
result = df.groupby([‘region’, ‘product’])[‘sales’].sum()
结果会按地区分组,产品再分组,自动汇总。整个过程零卡顿。我曾经用Excel做同样的统计花了十五分钟,用Pandas不到十秒。你感受一下。
Pandas真正的优势是处理大数据不崩溃。 只要你的电脑内存够,几十万行数据秒出结果。我见过有人用Excel处理两百行数据就喊累,换Pandas后自己都惊讶了。
你可能会担心,学Python会不会很难。说实话,如果你只是做分组统计,记住三个函数就行。第一是groupby,用来指定分组字段。第二是聚合函数,比如sum, mean, count。第三是reset_index,把分组结果转成表格格式。就这么多。
看这个例子。你想统计各个地区有多少订单。
counts = df.groupby(‘region’)[‘order_id’].count().reset_index()
打印counts,你会看到一个表格,列名是region和order_id,清清楚楚。你甚至可以直接输出到Excel。
counts.to_excel(‘地区订单数.xlsx’, index=False)
整个流程不会超过三行代码。
最让人省心的是重复性工作。 你写好一次脚本,以后每周每月跑一遍就行。不用每次都重新拖字段。我有个朋友每个月要出三十几张报表,以前用Excel做到手抽筋。后来我用Pandas给他写了个脚本,他每天只花一分钟点个运行,报表自动生成。他跟我说感觉像多活了半辈子。
你可能会问,Excel里的图表呢。Pandas也能做图,但如果你是老板或者甲方,非要看图表,可以先把数据导出到Excel,再用Excel画图。这样既不耽误数据处理速度,又能满足常规需求。
再送你一个小技巧。如果你要按年龄段统计用户消费。Excel里你得先手动创建年龄段列,再用透视表。Pandas里可以这么写。
bins = [0, 20, 30, 40, 60, 100]
labels = [‘20岁以下’, ‘20-30’, ‘30-40’, ‘40-60’, ‘60以上’]
df[‘age_group’] = pd.cut(df[‘age’], bins=bins, labels=labels)
result = df.groupby(‘age_group’)[‘spending’].sum()
你会得到一个按年龄段分组的消费总额。整个过程不到十行代码。
我知道有些人会觉得学新东西麻烦。但你想一下,你每次用Excel拖表格卡住的时候,那种着急的心情。你希望数据快点出结果,好早点下班。Pandas就是帮你节省那个时间的东西。你不需要成为编程高手,你只需要会复制粘贴这十几行代码就可以。
开始可能会觉得陌生。你打开python,装个pandas库,把Excel文件放好,复制上面的代码,改改文件名和列名,跑一下。看到结果的那一刻,你会觉得前面那点麻烦很值得。
数据分组统计这种事,用Excel不是不行,但如果你天天做、经常做,Pandas能帮你从重复劳动里解脱出来。 报表不是目的,把数据说清楚才是。工具顺手了,活儿自然也就快了。