自动化办公 | 用 Python 处理学生成绩表,实现班级平均分和成绩分班

在现代办公场景中,Excel 是不可或缺的工具,但其重复性操作往往让人感到枯燥。本文将通过一个实际案例,展示如何使用 Python 自动化处理学生成绩表,包括计算班级平均分、分班存储成绩并按分数排序。最终,我们将生成一个按班级分 sheet 的 Excel 文件。


需求描述

假设我们有一张学生成绩表,包含以下字段:

  • 班级:学生所属班级。
  • 姓名:学生姓名。
  • 成绩:学生的考试成绩。

需求如下:

  1. 计算每个班级的平均分。
  2. 将每个班级的成绩按分数从高到低排序。
  3. 将结果存储到一个 Excel 文件中,每个班级的成绩存储在独立的 sheet 中。

实现思路

实现的主要步骤如下:

  1. 加载数据:读取原始 Excel 文件或 CSV 文件。
  2. 分组计算平均分:按照班级分组,计算平均分。
  3. 按班级分 sheet:对每个班级成绩排序后,存储到独立的 sheet 中。
  4. 保存结果:生成一个多 sheet 的 Excel 文件。

实现代码

以下是完整的 Python 实现代码,使用了 pandasopenpyxl 两个库。

1. 加载必要的库

import pandas as pd 
from openpyxl import Workbook

2. 读取原始成绩表

我们假设成绩表存储在 scores.xlsx 文件中,包含三个字段:班级、姓名、成绩。

# 读取 Excel 文件 
file_path = "scores.xlsx" 
data = pd.read_excel(file_path) # 查看数据 
print(data.head())

3. 计算班级平均分

使用 pandas 提供的分组功能按班级计算平均分:

# 按班级分组并计算平均分 
average_scores = data.groupby("班级")["成绩"].mean().reset_index() 
average_scores.rename(columns={"成绩": "平均分"}, inplace=True) # 打印平均分 
print("班级平均分:\n", average_scores)

4. 按班级分 sheet 存储

我们将每个班级的数据筛选出来,按分数从高到低排序后存储到单独的 sheet 中。

# 创建一个新的 Excel 工作簿 
output_file = "成绩分班.xlsx" 
with pd.ExcelWriter(output_file, engine="openpyxl") as writer: # 遍历每个班级 
    for class_name, group_data in data.groupby("班级"): # 按成绩从高到低排序 
        sorted_group = group_data.sort_values(by="成绩", ascending=False) # 写入到对应的 sheet 
        sorted_group.to_excel(writer, sheet_name=f"班级 {class_name}", index=False) # 额外创建一个 sheet 保存班级平均分 
        average_scores.to_excel(writer, sheet_name="班级平均分", index=False)

示例数据与结果

示例输入数据

班级姓名成绩
1 班张三85
1 班李四78
2 班王五90
2 班赵六95
1 班钱七88

结果展示

1. 班级平均分 Sheet
班级平均分
1 班83.67
2 班92.5
2. 班级 1 班 Sheet
班级姓名成绩
1 班钱七88
1 班张三85
1 班李四78
3. 班级 2 班 Sheet
班级姓名成绩
2 班赵六95
2 班王五90

总结

通过这段代码,我们可以实现以下自动化操作:

  • 快速计算班级平均分。
  • 将数据按班级分组并排序。
  • 将处理后的结果存储到独立的 sheet 中,方便查看和分享。

这种方式极大地减少了人工操作的时间,尤其适合于需要处理大量数据和分组操作的场景。无论是学校的成绩处理,还是企业的数据分析,这种自动化流程都可以大幅提升效率。

代码扩展:如果你需要对成绩添加更复杂的统计,比如分数段人数统计、最高分和最低分计算,也可以在此基础上轻松扩展!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游客520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值