Pandas数据分析实战(2)——concat&merge&insert

上一节我们学习了如何创建数据框和Series,以及对探索Chipotle快餐数据进行初始查看,对数据进行初步了解,这一节我们学习如何对数据进行合并。

3.数据集成

3.1concat数据串联

pd.concat([df1,df2],axis = 0 )等价于df1.append(df2),pd.concat([df1,df3],axis = 1 )

import pandas as pd
import numpy as np
#创建数据框
df1 = pd.DataFrame( data = np.random.randint (0,150,size = [10,3]),
                    index = list('ABCDEFGHIJ'),
                    columns = ['python','tensorflow','keras'])
df2 = pd.DataFrame(data = np.random.randint(0,150,size = [10,3]),
                   index = list('KLMNOPQRST'),
                   columns =['python','tensorflow','keras'])
df3 = pd.DataFrame(data = np.random.randint(0,150,size = [10,2]),
                   index = list('ABCDEFGHIJ'),
                   columns =['python','Paddle'])
#纵向堆叠,即按照行的维度进行合并                
print(pd.concat([df1,df2],axis = 0))
print(df1.append(df2))#等价上一行,在df1后面追加
#横向扩展,即按照列的维度进行合并    
print(pd.concat([df1,df3],axis = 1))      

输出:
在这里插入图片描述
在这里插入图片描述

3.2Insert插入

在横向扩展数据框时,如果想在指定位置插入,可以使用insert,参数loc指定列索引插入位置。

df1.insert(loc = 1,column = 'Pytorch',value = 1024)
print(df1)

在这里插入图片描述

3.3merge合并

df1和df3在进行横向扩展时,是有相同的列名,当时我们忽略这一点,直接使用concat进行串联。但数据集合并时,需要根据一个或多个键将数据拼接起来,可以使用pd.merge,参数on为根据拼接的键,参数how为拼接方式,比较类似SQL中的join。

df_weigth = pd.DataFrame(data = {
    
    'name':['softpo','Daniel','Brandon','Ella'],
                           'weight':[70,55,75,65]})#记录体重
df_height = pd.DataFrame(data = {
    
    'name':['softpo','Daniel','Brandon','Cindy'],
                           'height':[172,170,170,160]})#记录身高
df3 = pd.DataFrame(data = {
    
    '姓名':['softpo','Daniel','Brandon','Cindy'],
                           'height':[172,170,170,160]})#列名与上两个的'name'不一致,是'姓名'

#交集,以姓名为键,两个数据框都有姓名信息
print(pd.merge(df_weigth,df_height,on = 'name',how = 'inner'))
#以左边为主,不会出现'Cindy'信息
print(pd.merge(df_weigth,df_height,on = 'name',how = 'left'))
#以右边为主,不会出现'Ella'信息
print(pd.merge(df_weigth,df_height,on = 'name',how = 'right'))
#并集,左右合并依据不同名
print(pd.merge(df_weigth,df3,left_on = 'name',right_on = '姓名',how = 'outer'))

输出:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

df1 = pd.DataFrame( data = np.random.randint (0,150,size = [10,3]),
                    index = list('ABCDEFGHIJ'),
                    columns = ['python','tensorflow','keras'])
#计算每个人三科的平均分,得到一个10*1的数据框
scores = pd.DataFrame(df1.mean(axis = 1).round(1),columns={
    
    '平均值'})
print(scores)
#将平均分与原数据框合并,通过index进行关联
print(pd.merge(df1,scores,left_index=True,right_index=True))
#也可以使用上面学习的insert,但是原数据框会直接改变
df1.insert(loc = 3,column='平均值',value=scores)
print(df1)

输出:
在这里插入图片描述
在这里插入图片描述
今天先写到这里,我们下期再见O(∩_∩)O

**整理课件不易,走过路过觉得课程内容不错,请帮忙点赞、收藏!Thanks♪(・ω・)ノ****如需转载,请注明出处

猜你喜欢

转载自blog.csdn.net/zxxxlh123/article/details/115581702