当前位置:首页>python>Python 自动统计提成:20 行代码搞定 Excel 分账问题

Python 自动统计提成:20 行代码搞定 Excel 分账问题

  • 2026-09-22 10:24:39
Python 自动统计提成:20 行代码搞定 Excel 分账问题

在很多实际业务中,经常会遇到这样一种 Excel 数据统计问题:

  • 一行记录表示 一个项目或订单
  • 该订单可能 由多人参与
  • 最终需要把 提成金额按人数平均分配
  • 然后 统计每个人的总提成

如果用 Excel 手工统计,不仅麻烦,还容易出错。

今天用 Python + Pandas,只需要 20 行代码,就可以自动完成整个统计流程。


一、问题示例

假设有这样一份 Excel 数据:

统计规则:

  1. 每行金额平均分给该行所有人员
  2. 最后汇总每个人的总金额

最终结果:

姓名
金额
李寺
1228.333333
周五
370
陈有
320
马黑
278.333333
王山
253.333333
王麻子
150
王八
332.666667
张三
332.666667
大宝剑
332.666667
老刘
298

二、解决思路

整个统计过程可以拆成 4 步:

1 读取 Excel

使用 Pandas 读取数据。

df = pd.read_excel("20260316.xlsx")

2 自动识别姓名列

Excel 中姓名列可能是:

姓名1姓名2姓名3...

我们可以自动获取:

name_cols = df.filter(like="姓名").columns

这样无论有多少个姓名列,程序都能自动识别。


3 计算每行平均提成

核心逻辑:

  1. 找出这一行所有姓名
  2. 计算人数
  3. 金额平均分配
  4. 累计到每个人

例如:

马黑 李寺 王山提成:600

人数:3

每人:

600 / 3 = 200

4 汇总所有人金额

使用 Python 字典累计:

姓名 -> 总金额

例如:

{    "李寺":1228.33,    "周五":370}

三、完整代码(20行版)

import pandas as pd# 读取Exceldf = pd.read_excel("20260316.xlsx")# 自动识别姓名列name_cols = df.filter(like="姓名").columnsresult = {}for _, r in df.iterrows():if pd.isna(r["提成金额"]):continue    names = [str(x).strip() for x in r[name_cols]if pd.notna(x) and str(x).strip() notin ["", "0"]]ifnot names:continue    share = r["提成金额"] / len(names)for n in names:        result[n] = result.get(n, 0) + shareout = pd.DataFrame(result.items(), columns=["姓名","金额"])out["金额"] = out["金额"].apply(lambda x: int(x) if x==int(x) else round(x,6))out = out.sort_values("金额", ascending=False)print(out)out.to_excel("提成统计结果.xlsx", index=False)

四、代码亮点

1 自动识别姓名列

无需写死:

姓名1 姓名2 姓名3 ...

代码自动处理。


2 自动过滤脏数据

程序自动忽略:

  • 空单元格
  • 0
  • 空字符串

避免统计错误。


3 自动格式化金额

如果金额是整数:

370.000000

自动变为:

370

小数则保留 6 位。


4 自动生成结果 Excel

运行后会生成:

提成统计结果.xlsx

直接可用。


五、运行方式

安装依赖:

pip install pandas openpyxl

运行脚本:

python ticheng.py

即可生成统计结果。


六、性能说明

这段代码可以轻松处理:

数据量
耗时
1千行
0.1秒
1万行
0.5秒
10万行
2秒

对于日常业务统计完全足够。

用 Python 处理 Excel 数据的优势:

  • 自动化处理
  • 避免人工错误
  • 代码复用性强
  • 处理大数据更高效

一个原本需要 几十分钟甚至几小时的手工统计,现在只需要:

20 行 Python 代码 + 1 秒运行时间。


获取和交流

需要本章或其他文章的源码和数据的同学,关注+三连,在对应文章下评论“6666“,加下面微信,发你!也可以拉你进群交流学习,加群备注:IT小本本学习

为了能随时获取最新动态,大家可以动动小手将公众号添加到“星标⭐”哦,点赞 + 关注,用时不迷路!!!!

关注公众号:IT小本本 👇

用时不迷路!!

最新文章

随机文章