根据给出的【统计学类专业成绩单.xlsx 】(表中一共有十列,第一列为学号,第二列为班级,第三列到第十列分别为不同科目),用Python完成下列问题:请添加 2 列,1 列为加权平均成绩,另 1 列为加权平均绩点。加权平均成绩=每科成绩乘以这科的学分再除以总学分。每科的绩点计算方式为:分数在90-100之间,绩点为4.0;分数在86-89之间,绩点为3.7;分数在83-85之间,绩点为3.3;分数在80-82之间,绩点为3.0;分数在76-79之间,绩点为2.7;分数在73-75之间,绩点为2.3;分数在70-72之间,绩点为2.0;分数在66-69之间,绩点为1.7;分数在63-65之间,绩点为1.3,;分数在60-62之间,绩点为1.0;分数小于60,绩点为0。 加权绩点=各科目所得绩点总和除以32
时间: 2024-03-25 21:39:15 浏览: 119
好的,根据您的要求,我已经明白了您的问题。为了解决这个问题,您需要使用 Pandas 库对 Excel 文件进行读取和处理,并进行加权平均成绩和加权平均绩点的计算。下面是示例代码:
```python
import pandas as pd
# 读取 Excel 文件
df = pd.read_excel('统计学类专业成绩单.xlsx')
# 计算加权平均成绩和加权平均绩点
credit = [2, 3, 3, 2, 2, 2, 2, 2] # 每科学分
score = df.iloc[:, 2:] # 取出分数列
weighted_score = (score * credit).sum(axis=1) / credit.sum() # 计算加权平均成绩
point_dict = {100: 4.0, 89: 3.7, 85: 3.3, 82: 3.0, 79: 2.7, 75: 2.3, 72: 2.0,
69: 1.7, 65: 1.3, 62: 1.0, 60: 0.0} # 分数与绩点的对应关系
def get_point(score):
for key, value in point_dict.items():
if score >= key:
return value
return 0.0
weighted_point = score.applymap(get_point).mul(credit).sum(axis=1) / credit.sum() # 计算加权平均绩点
# 将加权平均成绩和加权平均绩点添加到 DataFrame 中
df['加权平均成绩'] = weighted_score
df['加权平均绩点'] = weighted_point
# 将处理后的 DataFrame 保存到新的 Excel 文件中
df.to_excel('处理后的成绩单.xlsx', index=False)
```
这段代码会将处理后的 DataFrame 保存到名为“处理后的成绩单.xlsx”的新 Excel 文件中,其中会包含添加的两列“加权平均成绩”和“加权平均绩点”。注意,在计算加权平均绩点时,我们使用了一个分数与绩点的对应关系字典 point_dict,根据您的要求进行了设置。如果您需要修改分数与绩点的对应关系,只需要修改这个字典即可。
阅读全文