3、运行下列代码,得到一个包含学号及其他四门课程成绩的DataFrame对 象df,四门课程的成绩中有部分数据的值大于100。 (1)使用df对象的切片操作,将df对象列的顺序排列为 stno,math,chin.eng,comp。 (2)将每门课程中成绩大于100的值修改为100。 (3)在df对象中增加一列"total"数据,其值是四门课程成绩之和。 (4)将df对象按"total"列降序排列,输出total最大的前三名学生的stno与 total。 (5)将df对象按"total"列升降排列,如total值相同,则按math降序排列数 据,并满足条件的最后三人的stno,math,total数据值。 (6)统计每门课程的标准差,平均分,最高分与最低分,并输出math课程的 平均分和标准差。 如果运行以下代码得到的DataFrame对象df,如何完成以上的操作?
时间: 2024-02-03 17:11:59 浏览: 62
代码如下:
```
import pandas as pd
import numpy as np
data = {'stno': ['001', '002', '003', '004'],
'math': [90, 98, 105, 80],
'chin': [88, 92, 85, 74],
'eng': [76, 85, 101, 92],
'comp': [83, 90, 95, 100]}
df = pd.DataFrame(data)
# (1) 列的顺序排列为 stno,math,chin.eng,comp
df = df[['stno', 'math', 'chin', 'eng', 'comp']]
# (2) 将每门课程中成绩大于100的值修改为100
df.loc[df['math'] > 100, 'math'] = 100
df.loc[df['chin'] > 100, 'chin'] = 100
df.loc[df['eng'] > 100, 'eng'] = 100
df.loc[df['comp'] > 100, 'comp'] = 100
# (3) 增加一列"total"数据,其值是四门课程成绩之和
df['total'] = df['math'] + df['chin'] + df['eng'] + df['comp']
# (4) 将df对象按"total"列降序排列,输出total最大的前三名学生的stno与total
df_sorted = df.sort_values(by='total', ascending=False)
print(df_sorted[['stno', 'total']].head(3))
# (5) 将df对象按"total"列升降排列,如total值相同,则按math降序排列数据,并满足条件的最后三人的stno, math, total数据值
df_sorted = df.sort_values(by=['total', 'math'], ascending=[True, False])
print(df_sorted[['stno', 'math', 'total']].tail(3))
# (6) 统计每门课程的标准差,平均分,最高分与最低分,并输出math课程的平均分和标准差
print('math课程平均分:', df['math'].mean())
print('math课程标准差:', df['math'].std())
print('各门课程统计信息:')
print(df[['math', 'chin', 'eng', 'comp']].describe())
```
阅读全文