ZBLOG

import numpy as np import pandas as pd import json courses = json.load(open('courses.json', 'r', encoding='utf-8')) scores = {'优': 90.0, '良': 80.0, '中': 70.0, '及格': 60.0, '不及格': 0.0, '未考': 0.0} def main(): data = pd.read_excel(r'data.xlsx')...

这段代码的主要功能是处理学生成绩数据,并生成排名表和不及格信息表。

首先,它导入了 numpypandasjson 模块,并加载了一个名为 courses.json 的 JSON 文件,该文件包含课程代码和名称的映射关系。

接下来,定义了一个字典变量 scores,其中包含各个评分等级对应的分数。

然后,定义了一个 main() 函数。在函数内部,首先使用 pd.read_excel() 函数读取名为 data.xlsx 的 Excel 文件,并选择特定的列进行处理。随后进行一系列数据清洗操作:

  • 使用 data.dropna() 删除包含缺失值的行;
  • 使用 .apply() 方法和 str.isnumeric() 函数过滤掉学号列中非数字类型的值;
  • 将总评成绩复制给新的成绩列,并将总评成绩转换为浮点型数值;
  • 将学分转换为浮点型数值;
  • 使用 .isin() 方法过滤出属于指定课程代码的行;

接着,在变量 fail 中存储了所有总评成绩低于 60 分(即不及格)的数据,并按姓名进行排序并重置索引。

然后创建了一个空的 DataFrame 对象 rank,用于存储排名表。通过遍历每个学生的学号,在循环中进行以下操作:

  • 通过筛选学号相同的行,计算学分加权成绩并求和;
  • 计算均分,并将相关信息存储到新的 Series 对象 new_stu 中;
  • 使用 pd.concat() 函数将 new_stu 添加到 rank 中;
  • 创建一个新的 Series 对象 new_row,其中包含每个课程对应的总评成绩,并通过 _append() 方法将其添加到 rank 中。

最后,对排名表进行排序、重新设置索引和添加排名列。然后使用 .to_excel() 方法将排名表保存为 Excel 文件,并且删除所有值都是缺失值的列。

代码中还有一行错误的操作:rank = pd.concat([rank, new_row], ignore_index=True) 应该在循环内部而不是外部,否则会报错。可以将其移动到循环内部,在遍历每个学生时更新排名表。

如果需要打印输出变量 courses 的内容,可以取消注释最后一行代码:print(courses)

请注意,这只是对给出的代码段进行简单解读,并提供了可能的修改建议。如果您有具体问题或需求,请提供更多信息,以便我能够更好地帮助您。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://sdn.0voice.com/?id=4851

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?