Pandas第四次作业20200910

数据规整相关知识总结

Pandas第四次作业20200910_第1张图片
Pandas第四次作业20200910_第2张图片

Pandas第四次作业20200910_第3张图片

Pandas第四次作业20200910_第4张图片

练习1:将 学生成绩表 与 选修成绩表 进行水平的拼接

Pandas第四次作业20200910_第5张图片
Pandas第四次作业20200910_第6张图片
目标:
Pandas第四次作业20200910_第7张图片

代码实现

#!/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')

结果:

Pandas第四次作业20200910_第8张图片

练习2
有两张表如下:
Pandas第四次作业20200910_第9张图片
Pandas第四次作业20200910_第10张图片
需求:想在一张表中直观的了解每一位同学对应的老师

代码

方法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)

结果:

Pandas第四次作业20200910_第11张图片

方法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)) # 
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

'''

你可能感兴趣的:(Python数据分析专栏)