Python Excel分组统计求和count mean
用pandas groupby对Excel分组聚合,按部门/地区/产品统计求和、计数、平均值、最大值,一行代码替代Excel分类汇总。
Python Excel分组统计求和count
场景痛点
一份订单明细,要按部门统计总金额、订单数、客单价;按产品看销量排名。Excel里用分类汇总或者透视表,每次数据更新都得重做。用pandas的 groupby 写好规则,一键刷新。
用到的库
pip install pandas openpyxl
完整代码
import pandas as pd
def groupby_demo(input_file, output_file):
df = pd.read_excel(input_file)
# 1. 单字段分组:按部门汇总
g1 = df.groupby("部门").agg(
总金额=("金额", "sum"),
订单数=("订单号", "count"),
平均金额=("金额", "mean"),
最大单笔=("金额", "max")
).reset_index()
# 2. 多字段分组:部门 × 产品
g2 = df.groupby(["部门", "产品"]).agg(
总销量=("数量", "sum"),
总金额=("金额", "sum")
).reset_index()
# 3. 不同列用不同聚合函数
g3 = df.groupby("地区").agg({
"金额": ["sum", "mean", "count"],
"数量": "sum"
}).reset_index()
# 4. 分组后排序
g4 = g1.sort_values(by="总金额", ascending=False)
with pd.ExcelWriter(output_file, engine="openpyxl") as writer:
g1.to_excel(writer, sheet_name="按部门", index=False)
g2.to_excel(writer, sheet_name="部门×产品", index=False)
g3.to_excel(writer, sheet_name="多指标", index=False)
g4.to_excel(writer, sheet_name="部门金额排序", index=False)
print("分组统计完成")
print(g4)
if __name__ == "__main__":
groupby_demo("./销售明细.xlsx", "./分组统计结果.xlsx")
代码讲解
groupby("部门")按部门分组,.agg()一次指定多个聚合指标。- 命名聚合写法
新列名=(原列, 聚合函数),输出列名直接是中文,不用事后再改。 - 聚合函数:
sum求和、count计数(非空)、mean平均、max最大、min最小、median中位数。 reset_index()把分组键从索引变回普通列,导出Excel时好看。- 多列分组
groupby(["部门","产品"])形成层级汇总。
运行结果
生成 分组统计结果.xlsx,4个sheet对应不同维度的汇总,控制台打印按部门排序后的结果。
注意事项
count数的是非空单元格,要数总行数用size。- 分组键有空值会单独成一组,先
fillna("未填写")补上更友好。 - 金额列如果是字符串(带逗号带货币符号),先
df["金额"] = df["金额"].str.replace(",","").astype(float)转数值。

更新时间:2026-09-15 09:06:57
上一篇:Python Excel 隐藏与显示行列 openpyxl 方法