You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python校园项目求助:如何处理CSV数据后输出薪资报表至控制台?

处理employees.csv并生成薪资报表的解决方案

嘿,别慌!处理CSV文件生成薪资报表其实是Python里很常见的任务,我给你两种实用的方案,你可以根据自己的项目需求来选:


方案一:使用Python内置csv模块(适合基础学习)

如果你的项目要求只用Python标准库,这个方法最适合。假设你的employees.csv结构大概是这样(列名可根据你的实际文件调整):

name,department,monthly_salary
Alice,Engineering,8500
Bob,Marketing,7200
Charlie,Engineering,9000

步骤如下:

  • 导入内置的csv模块
  • 读取文件并解析数据
  • 计算薪资相关统计(比如总薪资、部门平均薪资等)
  • 格式化输出美观的报表到控制台

代码示例:

import csv

# 初始化统计变量
total_employees = 0
total_salary = 0
department_salaries = {}

# 读取CSV文件
try:
    with open('employees.csv', mode='r', newline='', encoding='utf-8') as file:
        reader = csv.DictReader(file)
        # 遍历每一行数据
        for row in reader:
            total_employees += 1
            salary = float(row['monthly_salary'])
            total_salary += salary
            
            # 按部门统计薪资
            dept = row['department']
            if dept not in department_salaries:
                department_salaries[dept] = {'count': 0, 'total': 0}
            department_salaries[dept]['count'] += 1
            department_salaries[dept]['total'] += salary

    # 生成控制台报表
    print("=" * 50)
    print("                员工薪资报表                ")
    print("=" * 50)
    print(f"总员工数: {total_employees}")
    print(f"总月度薪资: ${total_salary:,.2f}")
    print(f"平均月度薪资: ${total_salary/total_employees:,.2f}")
    print("\n" + "-" * 50)
    print("各部门薪资统计:")
    print("-" * 50)
    for dept, data in department_salaries.items():
        avg_salary = data['total'] / data['count']
        print(f"{dept}: 员工数 {data['count']} | 总薪资 ${data['total']:,.2f} | 平均薪资 ${avg_salary:,.2f}")
    print("=" * 50)

except FileNotFoundError:
    print("错误:未找到employees.csv文件,请检查路径是否正确!")
except ValueError:
    print("错误:薪资数据格式不正确,请确保是数字类型!")

方案二:使用pandas库(高效简洁,适合复杂数据处理)

如果你的项目允许使用第三方库,pandas会让数据处理和报表生成更轻松,代码量更少。

首先安装pandas(如果还没装):

pip install pandas

代码示例:

import pandas as pd

try:
    # 读取CSV文件
    df = pd.read_csv('employees.csv')
    
    # 确保薪资列是数值类型
    df['monthly_salary'] = pd.to_numeric(df['monthly_salary'], errors='raise')
    
    # 计算统计数据
    total_employees = len(df)
    total_salary = df['monthly_salary'].sum()
    avg_salary = df['monthly_salary'].mean()
    dept_stats = df.groupby('department')['monthly_salary'].agg(['count', 'sum', 'mean'])

    # 输出报表
    print("=" * 50)
    print("                员工薪资报表                ")
    print("=" * 50)
    print(f"总员工数: {total_employees}")
    print(f"总月度薪资: ${total_salary:,.2f}")
    print(f"平均月度薪资: ${avg_salary:,.2f}")
    print("\n" + "-" * 50)
    print("各部门薪资统计:")
    print("-" * 50)
    # 遍历部门统计数据
    for dept, stats in dept_stats.iterrows():
        print(f"{dept}: 员工数 {stats['count']} | 总薪资 ${stats['sum']:,.2f} | 平均薪资 ${stats['mean']:,.2f}")
    print("=" * 50)

except FileNotFoundError:
    print("错误:未找到employees.csv文件,请检查路径是否正确!")
except ValueError:
    print("错误:薪资数据格式不正确,请确保是数字类型!")

小提示

  1. 确保employees.csv和你的Python脚本在同一目录下,或者使用完整文件路径(比如C:/projects/employees.csv)
  2. 如果你的CSV列名和示例不同,记得修改代码里的列名(比如monthly_salary换成你实际的列名)
  3. 可以根据项目需求扩展报表内容,比如添加最高/最低薪资、薪资区间统计等

内容的提问来源于stack exchange,提问作者IsuckAtPython

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:40:43