数据规整相关知识总结
练习1:将 学生成绩表 与 选修成绩表 进行水平的拼接
目标:
代码实现
#!/user/bin/env python
#-*-coding: utf-8-*-
#@Time : 2020/9/1010:28
#@Author : GodSpeed
#@File : Pandas第四次作业.py
#@Software : PyCharm
import pandas as pd
import numpy as np
'''
练习1
将 学生成绩表 与 选修成绩表 进行水平的拼接
'''
#获取学生成绩表数据
tbl_stu_score = pd.read_excel('学生成绩表.xlsx',index_col=0)
#print(tbl_stu_score)
'''
语文 数学 英语 Python 体育
胡歌 87 74 98 84 NaN
林更新 79 69 61 99 NaN
金世佳 84 84 94 66 NaN
丑娟 90 60 72 90 NaN
'''
#获取选修成绩表数据
tbl_elective_score = pd.read_excel('选修成绩表.xlsx',index_col=0)
#print(tbl_elective_score)
'''
统计学 日语
胡歌 85.0 NaN
林更新 NaN 69.0
金世佳 NaN 95.0
丑娟 80.0 NaN
'''
# 方法1: 采用join拼接
df_join = tbl_stu_score.join(tbl_elective_score)
#print(df_join)
'''
语文 数学 英语 Python 体育 统计学 日语
胡歌 87 74 98 84 NaN 85.0 NaN
林更新 79 69 61 99 NaN NaN 69.0
金世佳 84 84 94 66 NaN NaN 95.0
丑娟 90 60 72 90 NaN 80.0 NaN
'''
#方法2:采用concat进行堆叠
df_concat = pd.concat((tbl_stu_score,tbl_elective_score),axis=1)
print(df_concat)
'''
语文 数学 英语 Python 体育 统计学 日语
胡歌 87 74 98 84 NaN 85.0 NaN
林更新 79 69 61 99 NaN NaN 69.0
金世佳 84 84 94 66 NaN NaN 95.0
丑娟 90 60 72 90 NaN 80.0 NaN
'''
df_join.to_excel('df_join学生成绩表.xlsx')
#df_concat.to_excel('concat学生成绩表.xlsx')
结果:
练习2
有两张表如下:
需求:想在一张表中直观的了解每一位同学对应的老师
代码
方法1不指定行索引采用merge
#获取学生分配表数据
tbl_stu_assign = pd.read_excel('学生分配表.xlsx')
print(tbl_stu_assign)
'''
姓名 班级
0 刘亦菲 一班
1 godspeed 一班
2 冰冰 二班
3 mia 四班
4 阿牛 三班
5 勿忘初心 三班
'''
#获取老师排班表数据
tbl_teacher_schedule = pd.read_excel('老师排班表.xlsx')
print(tbl_teacher_schedule)
'''
班级 老师
0 一班 老Amy
1 二班 居然
2 三班 jerry
3 四班 cheney
'''
# 公共列为班级可以采用merge stu_teacher
tbl_stu_teacher = pd.merge(tbl_stu_assign,tbl_teacher_schedule,how="left") #以tbl_stu_assign为主
print(tbl_stu_teacher)
'''
姓名 班级 老师
0 刘亦菲 一班 老Amy
1 godspeed 一班 老Amy
2 冰冰 二班 居然
3 mia 四班 cheney
4 阿牛 三班 jerry
5 勿忘初心 三班 jerry
'''
#重置索引
tbl_stu_teacher = tbl_stu_teacher.reindex(["姓名","老师","班级"],axis=1)
print(tbl_stu_teacher)
'''
姓名 老师 班级
0 刘亦菲 老Amy 一班
1 godspeed 老Amy 一班
2 冰冰 居然 二班
3 mia cheney 四班
4 阿牛 jerry 三班
5 勿忘初心 jerry 三班
'''
tbl_stu_teacher.to_excel('学生教师表.xlsx',index=0)
结果:
方法2: 指定行索引读取文件采用concat、join
#!/user/bin/env python
#-*-coding: utf-8-*-
#@Time : 2020/9/1011:43
#@Author : GodSpeed
#@File : Pandas第四次作业02.py
#@Software : PyCharm
import pandas as pd
import numpy as np
#获取学生分配表数据
tbl_stu_assign = pd.read_excel('学生分配表.xlsx',index_col=1)
print(tbl_stu_assign)
'''
姓名
班级
一班 刘亦菲
一班 godspeed
二班 冰冰
四班 mia
三班 阿牛
三班 勿忘初心
'''
#获取老师排班表数据
tbl_teacher_schedule = pd.read_excel('老师排班表.xlsx',index_col=0)
print(tbl_teacher_schedule)
print(type(tbl_teacher_schedule)) # <class 'pandas.core.frame.DataFrame'>
print(tbl_teacher_schedule.shape) # (4, 1)
'''
老师
班级
一班 老Amy
二班 居然
三班 jerry
四班 cheney
'''
df_concat = pd.concat((tbl_stu_assign,tbl_teacher_schedule),axis=1, join='inner')
print(df_concat)
'''
姓名 老师
班级
一班 刘亦菲 老Amy
一班 godspeed 老Amy
二班 冰冰 居然
四班 mia cheney
三班 阿牛 jerry
三班 勿忘初心 jerry
'''
df_join = tbl_stu_assign.join(tbl_teacher_schedule)
print(df_join)
'''
姓名 老师
班级
一班 刘亦菲 老Amy
一班 godspeed 老Amy
三班 阿牛 jerry
三班 勿忘初心 jerry
二班 冰冰 居然
四班 mia cheney
'''