案例3:有一score.csv文件,记录了同学的语数外的成绩、综合测评和体育成绩 综合测评有ABCD四个等级,体育成绩有优秀良好及格不及格四个等级 现计算每个人的总分并人高到低的排序,显示姓名和总分。 ABCD折算为100、80、60、0。 优秀良好及格不及格折算为100、80、60、0
时间: 2023-07-10 08:04:02 浏览: 92
可以使用 pandas 库来读取和处理 csv 文件数据,然后计算每个人的总分并排序。以下是示例代码:
```python
import pandas as pd
# 读取 csv 文件数据
df = pd.read_csv('score.csv')
# 定义折算规则
grade_dict = {'A': 100, 'B': 80, 'C': 60, 'D': 0,
'优秀': 100, '良好': 80, '及格': 60, '不及格': 0}
# 计算每个人的总分
df['总分'] = df.apply(lambda row: grade_dict[row['语文']] + grade_dict[row['数学']] + grade_dict[row['英语']]
+ grade_dict[row['综合测评']] + grade_dict[row['体育']], axis=1)
# 排序并显示姓名和总分
df[['姓名', '总分']].sort_values(by='总分', ascending=False).reset_index(drop=True).reset_index().rename(columns={'index': '排名'})
```
解释一下代码:
首先使用 pandas 库的 `read_csv()` 函数读取 csv 文件数据,并存储在 DataFrame 对象 df 中。
然后定义一个字典 grade_dict,存储各个等级对应的得分折算规则。
接着使用 `apply()` 函数对每一行数据进行操作,计算出每个人的总分,并添加到 df 的新列“总分”中。
最后使用 `sort_values()` 函数对“总分”列进行排序,并使用 `reset_index()` 函数重置索引,最终只显示“姓名”和“总分”两列数据,其中“排名”列是自动生成的。
注意:以上代码中的折算规则和等级名称需要根据实际情况进行修改。
阅读全文