一、什么是透视表
透视表 = 把明细数据按「行、列、值」三个维度重新聚合。
- • index(行):想按什么分组,比如「月份」。
- • columns(列):想展开成列的维度,比如「部门」。
- • values(值):要统计什么,比如「销售额」。
- • aggfunc(算法):sum / mean / count。
二、核心代码
import pandas as pd
import glob
frames = [pd.read_excel(f) for f in glob.glob("data/*.xlsx")]
df = pd.concat(frames, ignore_index=True)
pt = df.pivot_table(
values="销售额",
index="月份",
columns="部门",
aggfunc="sum",
fill_value=0
)
pt.to_excel("透视结果.xlsx")
100 个文件先合并,再一次性透视,全程不到 1 秒。
三、加总计(margins)
pt = df.pivot_table(values="销售额", index="月份", columns="部门",
aggfunc="sum", fill_value=0, margins=True, margins_name="合计")
四、多值 / 多聚合
# 同时看销售额合计与订单数
pt = df.pivot_table(values=["销售额","订单数"], index="月份",
columns="部门", aggfunc="sum")
# 同一列又求和又求平均
pt = df.pivot_table(values="销售额", index="月份",
aggfunc=["sum","mean"])
五、常见坑
- • 透视前确认「行 + 列」组合唯一对应一行,否则会报错——先
df.drop_duplicates() 或确认无重复键。 - • 索引/列字段名要和下方的
df.columns 完全一致(大小写、空格)。 - • 空值透视后可能是 NaN,用
fill_value=0 变 0,更干净。 - • 合并 100 个文件时列名要一致,否则会被拼成多列。
六、配套工具怎么用
打开 main.py:
- 2. 自动合并后,下拉选「行字段 / 列字段 / 值字段 / 聚合方式」。
- 4. 导出
透视结果.xlsx,顺手勾「显示总计」。
下班,就现在。