'''
作业1:
通过 Pandas 创建 学生成绩表的 excel 文件 。参考数据如下(可自己构建):
stu_names = ["胡歌","林更新","金世佳","丑娟"]
courses = ['语文', '数学', '英语', 'Python', '体育']
data = np.array([[87., 74., 98., 84., np.nan],[79., 69., 61., 99., np.nan],[84., 84., 94., 66., np.nan],[90., 60., 72., 90., np.nan]])
'''
导入传说中的三驾马车
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
stu_names = ["胡歌", "林更新", "金世佳", "丑娟"]
courses = ['语文', '数学', '英语', 'Python', '体育']
data = np.array([[87., 74., 98., 84., np.nan], [79., 69., 61., 99., np.nan], [84., 84., 94., 66., np.nan],
[90., 60., 72., 90., np.nan]])
# pd.DataFrame(data, index=行索引, columns=列索引)
stu_data = pd.DataFrame(data, index=stu_names, columns=courses)
# print(stu_data)
# 参数的意义 pd.DataFrame.to_excel(excel_writer :可以写路径,sheet_name :指定sheet名字)
pd.DataFrame.to_excel(stu_data, r"./file_folder/学生成绩表.xlsx", sheet_name="2021_1")
'''
再通过 Pandas 创建 选修成绩表的 excel 文件 。参考数据如下(可自己构建):
'''
ele_names = ["胡歌", "林更新", "金世佳", "丑娟"]
ele_courses = ['统计学', '日语']
ele_data = np.array([[85., np.nan], [np.nan, 69.], [np.nan, 95.], [80., np.nan]])
ele_new_data = pd.DataFrame(ele_data, index=ele_names, columns=ele_courses)
pd.DataFrame.to_excel(ele_new_data, r"./file_folder/选修课成绩表.xlsx", sheet_name="2021_1")
获得数据
read_stu_data = pd.read_excel(r"./file_folder/学生成绩表.xlsx", sheet_name="2021_1")
read_stu_data.info()
read_stu_data
展示数据:
<class 'pandas.core.frame.DataFrame'> Index: 4 entries, 胡歌 to 丑娟 Data columns (total 5 columns): 语文 4 non-null int64 数学 4 non-null int64 英语 4 non-null int64 Python 4 non-null int64 体育 0 non-null float64 dtypes: float64(1), int64(4) memory usage: 192.0+ bytes
Out[7]:
语文 | 数学 | 英语 | Python | 体育 | |
---|---|---|---|---|---|
胡歌 | 87 | 74 | 98 | 84 | NaN |
林更新 | 79 | 69 | 61 | 99 | NaN |
金世佳 | 84 | 84 | 94 | 66 | NaN |
丑娟 | 90 | 60 | 72 | 90 | NaN |
获取选修课数据:
read_ele_data = pd.read_excel(r"./file_folder/选修课成绩表.xlsx", sheet_name="2021_1")
read_ele_data
统计学 | 日语 | |
---|---|---|
胡歌 | 85.0 | NaN |
林更新 | NaN | 69.0 |
金世佳 | NaN | 95.0 |
丑娟 | 80.0 | Na |
#因为体育课全被数学老师抢了,所以学生成绩表中的体育期末成绩全为空,将其删除。
new_stu_data = read_stu_data.drop(["体育"],axis=1)
new_stu_data
展示如下:
语文 | 数学 | 英语 | Python | 统计学 | 日语 | |
---|---|---|---|---|---|---|
胡歌 | 87 | 74 | 98 | 84 | 85.0 | NaN |
林更新 | 79 | 69 | 61 | 99 | NaN | 69.0 |
金世佳 | 84 | 84 | 94 | 66 | NaN | 95.0 |
丑娟 | 90 | 60 | 72 | 90 | 80.0 | NaN |
#可以观察出来,此时的数据每个人都是五门课程,现在需添加一列 总成绩 来求得每位学生的总成绩。(pandas中有df.sum(axis=1)来进行求每行的数据之和,并且gnan跳过。)
a=pd.DataFrame.sum(total_data,axis=1)
total_data.insert(6,"总成绩",a)
语文 | 数学 | 英语 | Python | 统计学 | 日语 | 总成绩 | |
---|---|---|---|---|---|---|---|
胡歌 | 87 | 74 | 98 | 84 | 85.0 | NaN | 428.0 |
林更新 | 79 | 69 | 61 | 99 | NaN | 69.0 | 377.0 |
金世佳 | 84 | 84 | 94 | 66 | NaN | 95.0 | 423.0 |
丑娟 | 90 | 60 | 72 | 90 | 80.0 | NaN | 392.0 |
最后保存:
pd.DataFrame.to_excel(total_data, r"./file_folder/总表.xlsx", sheet_name="2021_1")