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("错误:薪资数据格式不正确,请确保是数字类型!")
小提示
- 确保
employees.csv和你的Python脚本在同一目录下,或者使用完整文件路径(比如C:/projects/employees.csv) - 如果你的CSV列名和示例不同,记得修改代码里的列名(比如
monthly_salary换成你实际的列名) - 可以根据项目需求扩展报表内容,比如添加最高/最低薪资、薪资区间统计等
内容的提问来源于stack exchange,提问作者IsuckAtPython
相关产品推荐
相关产品推荐

