当前位置:首页>python>Python 办公:拒绝加班!一键透视 100 个 Excel

Python 办公:拒绝加班!一键透视 100 个 Excel

  • 2026-09-06 03:15:45
Python 办公:拒绝加班!一键透视 100 个 Excel

Python 办公:拒绝加班!一键透视 100 个 Excel

老板要一张「各月 × 各部门 销售额汇总」的透视表,而你手上是 100 个分公司的 Excel。
手动建透视表?今晚别睡了。用 pandas 的 pivot_table,一行搞定。

一、什么是透视表

透视表 = 把明细数据按「行、列、值」三个维度重新聚合。

  • • 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:

  1. 1. 选文件夹(放那 100 个 Excel)。
  2. 2. 自动合并后,下拉选「行字段 / 列字段 / 值字段 / 聚合方式」。
  3. 3. 点「生成透视表」,结果即时显示。
  4. 4. 导出 透视结果.xlsx,顺手勾「显示总计」。

下班,就现在。

最新文章

随机文章