大一下学期计算综测时候非常痛苦,所以写了一个针对本校计算机院的综测计算脚本(Python),现在马上毕业了,送给计算机院各位班长团支书
1. 数据预处理
由于无法保证学办发的文件格式的不变,我们做出约定:
-
输入文件必须为excel(.xlsx)表格
-
主要数据需集中在
Sheet1
工作表内(且该表索引顺序第一) -
首行应直接为列名,比如: 姓名 班级 学号
-
用到的列为:班级、姓名、学分、成绩,如果对应列名发生了变化,需要同步更改脚本
2. 脚本
使用该脚本时,将下面使用()
占位的部分根据自身情况进行修改
import pandas as pd
# file 需要进行操作的表格路径
file = r'(学办发文件路径,准确到文件名.xlsx)'
data = pandas.read_excel(file, sheet_name=0, skiprows=0)
# 查找指定班级的所有学生成绩
jk3data = data[data['班级'] == '(这是班级)']
# 按姓名分组
group_data = jk3data.groupby(['姓名'])
# 定义一个字典
smart_score_dict = dict()
# 对表中的成绩进行遍历
for item in group_data:
stuName, each = item
# 计算总学分
total_study_score = each['学分'].sum()
# 定义学上的智育成绩变量
person_total_study_score = 0
# 计算智育成绩 成绩*学分/总学分
for row in each.itertuples():
person_total_study_score += float(getattr(row, '成绩')) * float(getattr(row, '学分')) / total_study_score
# 将计算完的成绩存到字典中
smart_score_dict[stuName] = person_total_study_score
# 将字典中的数据遍历一下,准备保存到表格
res_list = []
for key, value in smart_score_dict.items():
res_list.append({
"姓名": key,
"成绩": value
})
# 导出表格
df = pd.DataFrame(res_list)
# 结果输出位置路径
df.to_excel(r"(结果文件路径,准确到文件名.xlsx)")
print(df)
特别感谢:okfang616-CSDN博客