Pandas第四次作业20200910

数据规整相关知识总结

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

练习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

'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Narutolxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值