乐于分享
好东西不私藏

用Python轻松搞定Excel业绩统计,3步实现复杂数据分析!

用Python轻松搞定Excel业绩统计,3步实现复杂数据分析!

在日常工作中,你是否经常遇到这样的场景:

手里有一份员工业绩明细表,需要统计每个部门的个人最高业绩部门总业绩,还要计算业绩达标人数...

如果数据量少,还可以用Excel公式慢慢算。但数据量一大,不仅容易出错,还特别耗时!

今天,就教大家用Python + pandas,3步搞定这类复杂的数据统计


📊 需求场景

假设我们有这样一份业绩excel数据:

部门
员工ID
业绩(元)
销售部
E001
9000
销售部
E001
9001
销售部
E002
9002
技术部
E004
9003
技术部
E004
9004
...
...
...

注意:同一个员工可能有多条业绩记录,需要先汇总个人业绩,再进行部门统计。

最终需要得到的结果:

部门
员工个人最高业绩
部门总业绩
个人≥10000员工数
销售部
15000
35000
2
技术部
20000
34000
1
行政部
9000
21500
0
市场部
25000
25000
1

💻 核心代码实现

第一步:读取Excel数据

import pandas as pd

# 读取Excel文件
df = pd.read_excel('employee_performance.xlsx')
print(df.head())

第二步:计算员工个人总业绩

关键点:同一个员工可能有多条业绩记录,需要先按"部门+员工ID"分组求和。

# 计算每个员工的个人总业绩
emp_total = df.groupby(['部门''员工 ID'])['业绩(元)'].sum().reset_index(name='个人总业绩')

print(emp_total)

解释

  • groupby(['部门', '员工 ID']):按部门和员工ID分组
  • ['业绩(元)'].sum():对业绩求和
  • reset_index(name='个人总业绩'):重置索引,并将新列命名为"个人总业绩"

第三步:按部门聚合统计

这是最核心的一步,需要同时计算三个指标:

# 按部门聚合核心指标
result = emp_total.groupby('部门').agg(
    员工个人最高业绩=('个人总业绩''max'),
    个人≥10000 员工数=('个人总业绩'lambda x: (x >= 10000).sum())
).reset_index()

# 计算部门总业绩(从原始数据直接求和)
dept_total = df.groupby('部门')['业绩(元)'].sum().rename('部门总业绩')

# 合并结果
result = result.merge(dept_total, on='部门')

# 调整列顺序
result = result[['部门''员工个人最高业绩''部门总业绩''个人≥10000 员工数']]

# 确保数据类型为整型
result = result.astype({
'员工个人最高业绩': int, 
'部门总业绩': int, 
'个人≥10000 员工数': int
})

print(result)

关键技巧解析

  1. agg函数的高级用法

    agg(
        新列名=('原列名''聚合函数'),
        新列名2=('原列名2'lambda x: 自定义函数)
    )
  2. 统计达标人数

    lambda x: (x >= 10000).sum()

    这个lambda函数会:

    • 先判断每个值是否≥10000,返回True/False
    • True会被当作1,False当作0
    • sum()求和就得到了达标人数
  3. 部门总业绩的计算

    • 注意这里是从原始数据df直接求和,而不是从emp_total
    • 这样可以避免数据精度问题

🎯 完整代码

import pandas as pd

# 读取Excel文件
df = pd.read_excel('employee_performance.xlsx')

# 计算每个员工的个人总业绩
emp_total = df.groupby(['部门''员工 ID'])['业绩(元)'].sum().reset_index(name='个人总业绩')

# 按部门聚合核心指标
result = emp_total.groupby('部门').agg(
    员工个人最高业绩=('个人总业绩''max'),
    个人≥10000 员工数=('个人总业绩'lambda x: (x >= 10000).sum())
).reset_index()

# 计算部门总业绩
dept_total = df.groupby('部门')['业绩(元)'].sum().rename('部门总业绩')

# 合并结果
result = result.merge(dept_total, on='部门')

# 调整列顺序和数据类型
result = result[['部门''员工个人最高业绩''部门总业绩''个人≥10000 员工数']]
result = result.astype({
'员工个人最高业绩': int, 
'部门总业绩': int, 
'个人≥10000 员工数': int
})

# 打印结果
print(" 最终统计结果:")
print(result.to_string(index=False))

# 导出到新Excel
result.to_excel('result_summary.xlsx', index=False)
print("\n 结果已保存至: result_summary.xlsx")

📈 运行结果

📊 最终统计结果:
  部门  员工个人最高业绩  部门总业绩  个人≥10000 员工数
 销售部         15000     35000              2
 技术部         20000     34000              1
 行政部          9000     21500              0
 市场部         25000     25000              1

💾 结果已保存至: result_summary.xlsx

通过本文,你学会了:

  1. ✅ 使用groupby进行多级分组汇总
  2. ✅ 使用agg函数同时计算多个指标
  3. ✅ 使用lambda函数实现自定义统计
  4. ✅ 使用merge合并多个统计结果
  5. ✅ 数据类型转换和列顺序调整

Python + pandas 的组合,让复杂的数据分析变得如此简单!


你平时工作中还有哪些重复性的Excel处理工作?欢迎在评论区留言,下期可能就会教你用Python自动化解决!

👍 觉得有用,记得点赞+在看+转发!