Pandas库:从入门到应用(三)——多表连接操作

一 、concat数据连接

1.1、concat()函数参数
pd.concat(objs, axis=0, join='outer', ignore index=False, keys=None, levels=None, names=Noneverify integrity=False, sort= False, copy=True)

objs:多个 DataFrame 或者 Series
axis:0-行拼接 1-列拼接
join:{‘inner’,'outer’},其他轴上的数据是按交集 (inner) 还是并集 (outer) 进行合并inner
ignore_index:布尔类型,是否保留原表索引
keys:列表,使用传递的键作为最外层级别来构造层次结构索引,就是给每个表指定一个一级索引
levels:列表,用于构造Multilndex的特定级别
names:列表,索引的名称,包括多层索引
verify_integrity:布尔类型,参数为True时,如果合并的数据与原数据包含索引相同的行,将报错
sort:布尔类型,对非连接轴进行排序
copy:布尔类型,是否进行深拷贝

1.2、行连接
1.2.1、数据准备
import numpy as np
import pandas as pd

df1 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                  ,columns=['Python','Math','English','Chinese']
                  ,index=list('abcde'))
df1

Pandas库:从入门到应用(三)——多表连接操作_第1张图片

df2 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                   ,columns=['Java','Math','English','Chinese']
                   ,index=list('xyzab'))
df2

Pandas库:从入门到应用(三)——多表连接操作_第2张图片

1.2.2、并集模式拼接(join=‘outer’)
pd.concat([df2,df1],axis=0) #df1与df2行拼接

Pandas库:从入门到应用(三)——多表连接操作_第3张图片

df2.append(df1) #使用append 追加 达到拼接效果

Pandas库:从入门到应用(三)——多表连接操作_第4张图片

1.2.3、交集模式拼接(join=‘inner’)
pd.concat([df1,df2],axis=0,join='inner')

Pandas库:从入门到应用(三)——多表连接操作_第5张图片

1.3、列连接
1.3.1、并集模式拼接(join=‘outer’)
pd.concat([df1,df2],axis=1,join='outer')

Pandas库:从入门到应用(三)——多表连接操作_第6张图片

1.3.2、交集模式拼接(join=‘inner’)
pd.concat([df1,df2],axis=1,join='inner')

Pandas库:从入门到应用(三)——多表连接操作_第7张图片

二、insert数据插入

2.1、insert函数参数
df.insert(loc,column,value,allow_duplicates)

loc:#int 使用整数定义_列数据_插入的位置,必须是0到columns列标签的长度 0 <= loc <= len(columns)
column: # 可选字符串、数字或者object;列标签名
value: # 整数、Series或者数组型数据
allow_duplicates: # 可选参数,如果dataframe中已经存在某列,将allow_duplicates置为true才可以将指定得列插入

2.2、插入不存在列数据
import numpy as np
import pandas as pd


df1 = pd.DataFrame(data=np.random.randint(1,151,size=(5,4))
                   ,columns=['Python','Math','English','Chinese']
                   ,index=list('abcde'))

df1.insert(loc=1,column='Java',value=100) #插入Java列数据 值为100
df1

Pandas库:从入门到应用(三)——多表连接操作_第8张图片

2.3、插入存在列数据
df1.insert(loc=1,column='Python',value=100) #插入Python列数据 值为100

在这里插入图片描述

直接报错了,必须要加上参数allow_duplicates=True

df1.insert(loc=1,column='Python',value=100,allow_duplicates=True)#插入Python列数据 值为100
df1

Pandas库:从入门到应用(三)——多表连接操作_第9张图片

三、merge数据合并(sql join风格)

3.1、merge函数参数
pd.merge(DataFrame2, how=‘inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', ‘_y'))
how 默认为inner,可设为inner/outer/left/right
on 根据某个字段进行连接,必须存在于两个DateFrame中(若未同时存在,则需要分别使用left_on和right_on来设置)
left_on 左连接,以DataFrame1中用作连接键的列
right_on 右连接,以DataFrame2中用作连接键的列
left_index 将DataFrame1行索引用作连接键
right_index 将DataFrame2行索引用作连接键
sort 根据连接键对合并后的数据进行排列,默认为True
suffixes 对两个数据集中出现的重复列,新数据集中加上后缀_x,_y进行区别
3.2、使用inner内连接模式
import pandas as pd
import numpy as np
# 表⼀中记录的是name和体重信息
df1 = pd.DataFrame(data = {'name':['softpo','Daniel','Brandon','Ella'],'weight':[70,55,75,65]})

# 表⼆中记录的是name和身⾼信息
df2 = pd.DataFrame(data = {'name':['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})

df3 = pd.DataFrame(data = {'名字':
                               ['softpo','Daniel','Brandon','Cindy'],'height':[172,170,170,166]})
# 根据共同的name将俩表的数据,进⾏合并
pd.merge(df1,df2,
         how = 'inner',# 内合并代表两对象交集
         on = 'name' #两个表的关联建,即相同便可以关联上,不同数据就关联不上
         )

Pandas库:从入门到应用(三)——多表连接操作_第10张图片

3.3、使用outer外连接模式
pd.merge(df1,df3,
         how = 'outer',# 全外连接,两对象并集
         left_on = 'name',# 左边DataFrame使⽤列标签 name进⾏合并
         right_on = '名字')# 右边DataFrame使⽤列标签 名字进⾏合并

Pandas库:从入门到应用(三)——多表连接操作_第11张图片

你可能感兴趣的:(pandas,python,数据分析)