每月报表不用愁:Pandas 把几十个 CSV 揉成一张表

举报
柠檬-夏日清爽 发表于 2026/09/15 14:33:15 2026/09/15
【摘要】 用pandas几行代码把分散在多个csv的销售数据纵向拼接、按部门汇总,一键导出成 Excel 报表。

每到月底,运营同学最怕的一件事就是"汇报表"——各个门店、各个系统导出来的 CSV 散落一地,手工复制到一张表里既慢又容易错。其实这种活儿交给 Pandas,几行代码就能搞定。我这次就是把三十多个分店的销售 CSV 拼成一张月度汇总表,顺手记一下做法。

image.png

一、需求其实很土

每个分店每天导出一个 销售_XX店_日期.csv,字段都是 门店,商品,数量,金额。我要的是:按门店汇总总销量和总金额,导出成一张 Excel 给财务。难点不在计算,在于"文件多、字段一致但顺序可能乱"。

二、读进来再拼起来

用 glob 把目录里的 CSV 全捞出来,逐个读成 DataFrame,再 concat 纵向拼:

import pandas as pd
import glob

files = glob.glob("sales/*.csv")
dfs = [pd.read_csv(f) for f in files]
all_df = pd.concat(dfs, ignore_index=True)
print(all_df.shape)   # 看一眼总共多少行

ignore_index=True 会重排索引,避免拼接后索引重复。这一步之后,所有分店的数据就躺在同一张表里了。

三、按门店汇总

汇总才是重点,用 groupby 一行搞定:

report = (
    all_df
    .groupby("门店", as_index=False)
    .agg(总销量=("数量", "sum"), 总金额=("金额", "sum"), 订单数=("数量", "count"))
)
report = report.sort_values("总金额", ascending=False)

with pd.ExcelWriter("月度报表.xlsx") as w:
    report.to_excel(w, index=False, sheet_name="按门店")

agg 里可以同时对不同列用不同聚合函数,比写多个 groupby 清爽得多。

四、几种写法的差别

写法 可读性 适合场景
pd.concat + groupby 高 文件同结构、要合并后分析
循环逐个 df.append 低 老代码兼容,不推荐
pd.read_csv 直接读文件夹(需第三方) 中 一次性快速预览

绝大多数情况,第一种就够用且最稳。

一点心得

报表类任务的本质永远是"先统一结构,再按维度聚合"。Pandas 把这两步都封装得很好,真正要花心思的反而是确认每个 CSV 的字段真的一致——我曾经因为某个分店把"金额"写成"金额(元)",拼完后汇总直接少一列。读进来后先 print(all_df.columns) 看一眼列名,能省掉后面一堆麻烦。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。