4)判断每个学生的整体状态是否通过。如果3门课中有一门为Fail,则最后考核为Fail,合并新的数据列status。 (5)对于总评是Pass的数据,根据平均分设置5级制成绩,即percentage大于90分为优秀,80~90分为良好,70~79分为中等,60~69分为及格,其他为不及格。
时间: 2024-02-23 19:59:58 浏览: 112
好的,这是一个继续数据处理的问题,需要在之前的基础上进行扩展。
``` python
import pandas as pd
# 读取文件并查看相关信息
df = pd.read_csv("data.csv")
print(df.head())
print(df.info())
print(df.describe())
# 检查是否有空值
print(df.isnull().sum())
# 计算总分和平均分
df['total_score'] = df['reading_score'] + df['math_score'] + df['writing_score']
df['percentage'] = df['total_score'] / 3
# 判断是否通过
df['pass_reading'] = df['reading_score'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
df['pass_math'] = df['math_score'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
df['pass_writing'] = df['writing_score'].apply(lambda x: 'Pass' if x >= 60 else 'Fail')
# 判断整体状态是否通过
df['status'] = df.apply(lambda x: 'Fail' if x['pass_reading'] == 'Fail' or x['pass_math'] == 'Fail' or x['pass_writing'] == 'Fail' else 'Pass', axis=1)
# 根据平均分设置5级制成绩
def grade(percentage):
if percentage >= 90:
return '优秀'
elif percentage >= 80:
return '良好'
elif percentage >= 70:
return '中等'
elif percentage >= 60:
return '及格'
else:
return '不及格'
df['grade'] = df['percentage'].apply(grade)
# 输出结果
print(df.head())
```
解释一下上面的代码实现:
- 判断整体状态是否通过:在之前的基础上,使用 Pandas 的 `apply` 函数,对每个学生的三门课成绩判断是否有一门不及格,得到一个布尔值,再用 lambda 函数将布尔值转换成 Pass/Fail 的字符串,合并成新的数据列 status;
- 根据平均分设置5级制成绩:使用 Pandas 的数据框操作,创建一个函数 grade,根据平均分返回不同的等级,再使用 `apply` 函数将平均分传入该函数得到每个学生的成绩等级,合并成新的数据列 grade;
- 输出结果:打印出处理后的数据框。
希望我的回答能够帮助你!
阅读全文