Python数据分析基础与应用电子活页5-16使用concat()函数沿轴连接数据.docx
Python数据分析基础与应用
模块
PAGE4
PAGE3
电子活页5-16使用concat()函数沿轴连接数据
【技能训练5-16】使用concat()函数沿轴连接数据
【训练要求】
在JupyterNotebook开发环境中创建j5-16.ipynb,然后编写代码使用concat()函数沿轴连接数据。
【实施过程】
1.使用concat()函数纵向连接对象DataFrame
创建2个DataFrame对象,并对其进行连接。
(1)纵向外连接操作
代码如下:
importpandasaspd
data11={Id:[1001,1002,1003,1004],
name:[安静,路远,温暖,向北],
sex:[女,男,男,女],
age:[21,20,19,22],
height:[171,180,189,166]}
df11=pd.DataFrame(data11)
data21={Id:[1005,1006,1007,1008],
name:[阳光,白雪,夏天,云朵],
sex:[男,女,男,女],
age:[23,18,20,22],
score:[65,84,78,92.5]}
df21=pd.DataFrame(data21)
#纵向外连接df11与df21
pd.concat([df11,df21])
输出结果:
(2)纵向内连接操作
代码如下:
#纵向内连接df11与df21
pd.concat([df11,df21],join=inner,axis=0)
输出结果:
从上述输出结果可以看出,纵向内连接方式只会将被连接的两个数据集中共有的列(Id、name、sex、age)数据纵向连接,非共有的列不会出现在结果数据集中。
2.使用concat()函数横向连接DataFrame对象
(1)横向外连接操作
代码如下:
importpandasaspd
data12={Id:[1001,1002,1003,1004],
name:[安静,路远,温暖,向北],
sex:[女,男,男,女]}
df12=pd.DataFrame(data12)
data22={score1:[71,80,89,92,65],
score2:[82,72,96,88,93.5]}
df22=pd.DataFrame(data22)
#横向外连接df12与df22
pd.concat([df12,df22],axis=1,join=outer)
输出结果:
从上述输出结果可以看出,横向连接两个DataFrame对象,将会追加新的列。由于被连接对象的列长度不同,所以连接后会产生不存在的数据,这些数据会自动使用NaN进行填充。
(2)横向内连接操作
代码如下:
#横向内连接df12与df22
pd.concat([df12,df22],axis=1,join=inner)
输出结果:
从上述输出结果可以看出,输出结果的行数与左数据集行数相同。
3.在concat()函数中使用keys参数给DataFrame对象连接一个指定的键
代码如下:
importpandasaspd
data13={name:[安静,路远,温暖,向北],
sex:[女,男,男,女],
age:[21,20,19,22],
score:[71,80,89,92]}
label13=[0,1,2,3]
df13=pd.DataFrame(data13,index=label13)
data23={name:[阳光,白雪,夏天,云朵],
sex:[男,女,男,女],
age:[23,18,20,22],
score:[65,84,78,92.5]}
label23=[1,2,3,4]
df23=pd.DataFrame(data23,index=label23)
#连接df13与df23,并给df13、d223连接一个指定的键
pd.concat([df13,df23],keys=[第1小组,第2小组])
输出结果:
从上述输出结果可以看出,行索引存在重复使用的现象。如果想让输出的行索引遵循依次递增的规则,那么需要将ignore_index参数设置为True。
将i