通过 Pandas 创建 学生成绩表的 excel 文件 。参考数据如下(可自己构建):
因为体育课全被数学老师抢了,所以学生成绩表中的体育期末成绩全为空,将其删除。
学生成绩表.xlsx 中没有选修的数据,将 选修成绩表.xlsx 的数据添加到 学生成绩表 中。
可以观察出来,此时的数据每个人都是五门课程,现在需添加一列 总成绩 来求得每位学生的总成绩。(pandas中有df.sum(axis=1)来进行求每行的数据之和,并且gnan跳过。)
import numpy as np
import pandas as pd
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]])
# 随机创建,并形成一个4*5的数组
data = np.array(np.random.randint(0,100,20).reshape(4, 5))
# 用ndarray数组生成DataFrame
df = pd.DataFrame(data, index=stu_names, col=courses)
# 设置体育课成绩=0分
df["体育"] = 0
# 删除体育课的成绩
del df["体育"]
# 再通过 Pandas 创建 选修成绩表的 excel 文件 。参考数据如下(可自己构建):
ele_data = np.array([[85., np.nan],[np.nan, 69.],[np.nan, 95.],[80., np.nan]])
df_ele = pd.DataFrame(np.array(ele_data).reshape(4,2),
index=stu_names,
col=["统计学", "日语"])
# 使用concat()方法将选修课成绩添加到df中,因为是横向添加,所以axis=1
df = pd.concat([df, df_ele], axis=1)
# 在df中添加一列用来计算总分
df["total points"] = df.sum(axis=1).astype('int')
print(df)
df.to_excel("学生成绩总表.xlsx")