用python编程生成各班考试成绩平均分表

信息化聊科技 2025-01-21 14:07:01
# 导入pandas库,用于数据处理import pandas as pddef process_scores(): try: # 读取Excel文件并创建DataFrame对象 print('正在读取Excel文件...') df = pd.read_excel('九年级期末教学质量评价.xlsx') # 定义需要处理的学科列表(按照指定顺序) subjects = ['语文', '数学', '英语', '科学', '历史与社会'] # 将非数字值转换为NaN(空值) for subject in subjects: df[subject] = pd.to_numeric(df[subject], errors='coerce') # 存储每个班级的平均分结果 results = [] # 获取所有班级名称并自定义排序 _names = sorted(df['班级'].unique(), key=lambda x: ( # 先将1-9班排在前面 '1' if '九年级' in x and any(str(i) in x for i in range(1, 10)) else '2', # 然后按照班级序号排序 int(''.join(filter(str.isdigit, x))) )) # 遍历排序后的班级名称 for_name in_names: # 筛选出当前班级的所有数据 _data = df[df['班级'] ==_name] # 创建一个字典存储当前班级的信息 row_data = {'班级':_name} # 计算每个学科的平均分 for subject in subjects: # 计算平均分并保留两位小数 avg_score = round(class_data[subject].mean(), 2) # 直接使用学科名作为键 row_data[subject] = avg_score # 将当前班级的所有数据添加到结果列表中 results.append(row_data) # 将结果列表转换为DataFrame result_df = pd.DataFrame(results) # 设置列的顺序 columns = ['班级'] + subjects result_df = result_df[columns] # 将处理后的结果保存到新的Excel文件 result_df.to_excel('平均分.xlsx', index=False) print('\n处理完成!平均分已保存到平均分.xlsx') # 在控制台打印结果预览 print('\n各班级平均分:') # 设置显示选项,确保完整显示数据 pd.set_option('display.max_rows', None) pd.set_option('display.max_columns', None) pd.set_option('display.width', None) print(result_df.to_string(index=False)) except FileNotFoundError: print('错误:找不到Excel文件,请确保文件名正确且文件在正确的目录中。') except Exception as e: print(f'发生错误:{str(e)}')# 当直接运行此脚本时执行process_scores函数if __name__ == '__main__': process_scores()

输出效果如图所示

0 阅读:6

信息化聊科技

简介:感谢大家的关注