1.假设全校考试成绩如下:

全校考生成绩 表
2.程序代码如下:
import pandas as pd# 读取原始 Excel 文件input_file = '期末教学质量评价.xlsx'output_file = '人数.xlsx'# 读取 Excel 文件df = pd.read_excel(input_file)# 将分数列转换为数值类型for subject in ['语文', '数学', '英语', '科学', '历史与社会']: df[subject] = pd.to_numeric(df[subject], errors='coerce')# 定义分数段score_ranges = { '90以上': 90, '80以上': 80, '70以上': 70, '60以上': 60, '60以下': 0}# 定义学科列表subjects = ['语文', '数学', '英语', '科学', '历史与社会']# 创建一个 ExcelWriter 对象,用于写入多个工作表with pd.ExcelWriter(output_file) as writer: # 遍历每个学科 for subject in subjects: print(f"正在处理学科: {subject}") # 打印当前学科 # 初始化一个空的 DataFrame 用于存储统计结果 result_df = pd.DataFrame(columns=['班级', '90以上', '80以上', '70以上', '60以上', '60以下']) # 遍历每个班级 for_name in df['班级'].unique(): print(f"正在处理班级: {class_name}") # 打印当前班级 # 筛选当前班级的数据 _df = df[df['班级'] ==_name] # 统计各分数段的人数 count_90 =_df[class_df[subject] >= 90].shape[0] count_80 =_df[(class_df[subject] >= 80) & (class_df[subject] < 90)].shape[0] count_70 =_df[(class_df[subject] >= 70) & (class_df[subject] < 80)].shape[0] count_60 =_df[(class_df[subject] >= 60) & (class_df[subject] < 70)].shape[0] count_below_60 =_df[class_df[subject] < 60].shape[0] # 将统计结果添加到 DataFrame 中 new_row = pd.DataFrame({ '班级': [class_name], '90以上': [count_90], '80以上': [count_80], '70以上': [count_70], '60以上': [count_60], '60以下': [count_below_60] }) result_df = pd.concat([result_df, new_row], ignore_index=True) # 将统计结果写入新的工作表 result_df.to_excel(writer, sheet_name=subject, index=False)print(f"统计结果已保存到 {output_file}")3.输出结果:

输出五个工作表