利用下方代码从文件中读出2张表的数据,存入DataFrame对象score和duty。 excel = pd.read_excel ('score.xlsx', sheet_name=[0,1], header=0) score =excel[0] duty =excel[1] (1)输出score的前三行数据,输出score 一共有多少行 (2)score对象新增一.列“总分”,值为前三列成绩之和。 (3)score对象依据“总分”列的值从高到低进行排序。 (4)score 对象根据“性别”列进行分组,输出男生、女生各自的平均成绩。 (5)输出男生的最高总分、女生的最高总分 (6)score对象新增一列“ 等级",总分大于等于270的等级为A,总分小于210的等级为C,总分介于210到270的等级为B (7)使用merge( )函数以“学号”列为关联主键,将score对象与duty对象合并,合并时保留score对象的所有数据行,合并后生成一个新 DataFrame对象students。 (8)将students对象数据存入一个新的 Excel文件students.xlsx,文件内容如下图所示。 (9)使用matplotlib库绘制英语和总分成绩排名横向条形图。
时间: 2024-03-11 11:51:44 浏览: 188
ClosedXML.Report:ClosedXML.Report是用于生成报告的工具,您可以使用XLSX模板轻松地将.NET类中的任何数据导出到Excel。
以下是代码实现:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据
excel = pd.read_excel('score.xlsx', sheet_name=[0, 1], header=0)
score = excel[0]
duty = excel[1]
# (1) 输出score的前三行数据,输出score一共有多少行
print(score.head(3))
print("score一共有{}行".format(score.shape[0]))
# (2) score对象新增一列“总分”,值为前三列成绩之和
score["总分"] = score.iloc[:, 1:4].sum(axis=1)
# (3) score对象依据“总分”列的值从高到低进行排序
score = score.sort_values(by='总分', ascending=False)
# (4) score对象根据“性别”列进行分组,输出男生、女生各自的平均成绩
mean_score = score.groupby('性别')['语文', '数学', '英语', '总分'].mean()
print("男生平均成绩:\n", mean_score.loc['男'])
print("女生平均成绩:\n", mean_score.loc['女'])
# (5) 输出男生的最高总分、女生的最高总分
male_max = score.loc[score['性别'] == '男', '总分'].max()
female_max = score.loc[score['性别'] == '女', '总分'].max()
print("男生最高总分为:", male_max)
print("女生最高总分为:", female_max)
# (6) score对象新增一列“等级”,总分大于等于270的等级为A,总分小于210的等级为C,总分介于210到270的等级为B
score.loc[score['总分'] >= 270, '等级'] = 'A'
score.loc[score['总分'] < 210, '等级'] = 'C'
score.loc[(score['总分'] >= 210) & (score['总分'] < 270), '等级'] = 'B'
# (7) 使用merge()函数以“学号”列为关联主键,将score对象与duty对象合并,合并时保留score对象的所有数据行,合并后生成一个新DataFrame对象students
students = pd.merge(score, duty, on='学号', how='left')
# (8) 将students对象数据存入一个新的Excel文件students.xlsx,文件内容如下图所示
students.to_excel('students.xlsx', index=False)
# (9) 使用matplotlib库绘制英语和总分成绩排名横向条形图
score = score.sort_values(by=['总分', '英语'], ascending=False)
score.plot(kind='barh', x='姓名', y=['总分', '英语'])
plt.show()
```
注意:在运行代码前需要保证安装了 pandas 和 matplotlib 库。
阅读全文