数据分析作业8
练习1练习2练习3
练习1
通过 Pandas 创建 学生成绩表的 excel 文件
import pandas as pd
import numpy as np
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
]])
course_df
= pd.DataFrame
(data,index
=stu_names,columns
=courses
)
course_df.to_excel
("学生成绩表.xlsx")
再通过 Pandas 创建 选修成绩表的 excel 文件
ele_names
= ["胡歌",
"林更新",
"金世佳",
"丑娟"]
ele_courses
= ['统计学',
'日语']
ele_data
= np.array
([[85., np.nan
],
[np.nan, 69.
],
[np.nan, 95.
],
[80., np.nan
]])
ele_course_df
= pd.DataFrame
(ele_data,index
=ele_names,columns
=ele_courses
)
ele_course_df.to_excel
("选修成绩表.xlsx")
练习2
读取两表数据,注意:此时需指定行索引为第一列。
course_data
= pd.read_excel
('学生成绩表.xlsx',index_col
=[0
])
ele_course_data
= pd.read_excel
('选修成绩表.xlsx',index_col
=[0
])
– 学生成绩表数据: – 选修成绩表数据:
练习3
因为体育课全被数学老师抢了,所以学生成绩表中的体育期末成绩全为空,将其删除。
total_courses
= course_data.drop
(axis
=0,columns
='体育')
学生成绩表.xlsx 中没有选修的数据,将 选修成绩表.xlsx 的数据添加到 学生成绩表 中。
def merge_courses
(original_courses,new_courses
):
for course_i
in range
(new_courses.shape
[1
]):
course
= new_courses.iloc
[:,course_i
]
original_courses
[course.name
] = course
return original_courses
total_courses
= merge_courses
(total_courses,ele_course_data
)
可以观察出来,此时的数据每个人都是五门课程,现在需添加一列 总成绩 来求得每位学生的总成绩。(pandas中有df.sum(axis=1)来进行求每行的数据之和,并且gnan跳过。)
total_courses
['总成绩'] = total_courses.sum
(axis
=1
)
total_courses.to_excel
("学生总成绩.xlsx")