这期主要分享DataFrame数据的合并、连续变量离散化和分类变量哑编码等。
一、merge函数合并数据集
1、merge数据集的合并,通过连接键,进行表的连接,具体参数如下所示:
# merge函数常用参数
how:连接方式:‘inner’(默认);还有,‘outer’、‘left’、‘right’
on:用于连接左右两个DataFrame中相同列名
left_on:左侧DataFarme中用作连接键的列
right_on:右侧DataFarme中用作连接键的列
left_index:将左侧的行索引用作其连接键
right_index:将右侧的行索引用作其连接键
2、当两张表的有共同连接键时,可使用on来指定连接键,示例如下:
In [1]:importpandasaspd
In [2]:df1=pd.DataFrame({'key':['b','b','a','c','a','a','b'],'col1':range(7)})
In [3]:df1
Out[3]:
col1 key
0 0b
1 1b
2 2a
3 3c
4 4a
5 5a
6 6b
In [4]:df2=pd.DataFrame({'key':['a','b','d'],'col2':range(3)})
In [5]:df2
Out[5]:
col2 key
0 0a
1 1b
2 2d
In [6]:df=pd.merge(df1,df2,on='key',how='inner')
In [7]:df
Out[7]:
col1 key col2
0 0b1
1 1b1
2 6b1
3 2a
4 4a
5 5a
3、当两张表没有共同连接键时,可使用left_on、right_on来指定左右连接键,示例如下:
In [1]:importpandasaspd
In [2]:df3=pd.DataFrame({'lkey':['b','b','a','c','a','a','b'],'col1':range(7)})
In [3]:df3
Out[3]:
col1 lkey
0 0b
1 1b
2 2a
3 3c
4 4a
5 5a
6 6b
In [4]:df4=pd.DataFrame({'rkey':['a','b','d'],'col2':range(3)})
In [5]:df4
Out[5]:
col2 rkey
0 0a
1 1b
2 2d
In [6]:df=pd.merge(df3,df4,left_on='lkey',right_on='rkey',how='inner')
In [7]:df
Out[7]:
col1 lkey col2 rkey
0 0b1b
1 1b1b
2 6b1b
3 2aa
4 4aa
5 5aa
4、当连接键位于索引中时,通过索引进行合并,传入left_index、right_index参数来说明索引的情况,示例如下:
In [1]:importnumpyasnp
In [2]:importpandasaspd
In [3]:df5=pd.DataFrame(np.arange(6).reshape(3,2),index=['a','b','e'],columns=['k1','k2'])
In [4]:df5
Out[4]:
k1 k2
a0 1
b2 3
e4 5
In [5]:df6=pd.DataFrame(np.arange(7,15).reshape(4,2),index=['b','c','d','e'],columns=['k3','k4'])
In [6]:df6
Out[6]:
k3 k4
b7 8
c9 10
d11 12
e13 14
In [7]:df=pd.merge(df5,df6,left_index=True,right_index=True,how='outer')
In [8]:df
Out[8]:
k1 k2 k3 k4
a0.0 1.0NaN NaN
b2.0 3.0 7.0 8.0
c NaN NaN9.0 10.0
d NaN NaN11.0 12.0
e4.0 5.0 13.0 14.0
二、concat函数合并数据集
concat函数主要是轴的合并,默认是并集、纵向连接,示例如下:
In [1]:importpandasaspd
In [2]:df1=pd.DataFrame({'A':['A0','A1','A2','A3'],'B':['B0','B1','B2','B3'],'C':['C0','C1','C2','C3'],'D':['D0','D1','D2','D3']},index=[,1,2,3])
In [3]:df2=pd.DataFrame({'A':['A4','A5','A6','A7'],'B':['B4','B5','B6','B7'],'C':['C4','C5','C6','C7'],'D':['D4','D5','D6','D7']},index=[4,5,6,7])
In [4]:df3=pd.DataFrame({'B':['B2','B3','B6','B7'],'D':['D2','D3','D6','D7'],'F':['F2','F3','F6','F7']},index=[2,3,6,7])
In [5]:result=pd.concat([df1,df2])
通过ignore_index=True重置索引,自动生成0到N的整数型索引,示例如下:
In [6]:result=pd.concat([df1,df3],ignore_index=True)
三、join函数合并数据集
join函数拼接列,默认按照索引左外连接合并,示例入下:
In [1]:importpandasaspd
In [2]:left=pd.DataFrame({'A':['A0','A1','A2'],'B':['B0','B1','B2']},index=['K0','K1','K2'])
In [3]:right=pd.DataFrame({'C':['C0','C2','C3'],'D':['D0','D2','D3']},index=['K0','K2','K3'])
In [4]:result=left.join(right)
In [5]:result=left.join(right,how='inner')
In [6]:result=left.join(right,how='outer')
四、连续变量离散化
这里特别提一下apply函数的应用,它作用于DataFrame一列或一行,且与自定义函数的结合,示例如下:
importpandasaspd
#读取数据
info_data=pd.read_csv('D:/info_data.csv',sep=',',encoding='utf-8')
print(info_data.head())
#连续变量离散化
deff(x):
ifx>18andx
return'YoungAdult'
ifx>30andx
return'MiddleAged'
else:
return'Senior'
info_data['Age']=info_data['Age'].apply(f)
print(info_data.head())
五、分类变量哑编码
如何将分类变量转换为哑变量,这里介绍get_dummies函数,示例如下:
#读取数据
info_data=pd.read_csv('D:/info_data.csv',sep=',',encoding='utf-8')
#分类变量哑编码
dummies_Sex=pd.get_dummies(info_data['Sex'],prefix='Sex')
print(dummies_Sex.head())
# 按照索引进行表连接
info_data=info_data.join(dummies_Sex)
#删除原始Sex字段
info_data.drop('Sex',axis=1,inplace=True)
print(info_data.head())
此次DataFrame已全部分享结束了,文中如有错误和叙述不妥之处,还望指正!
学习与分享,关注小号
领取专属 10元无门槛券
私享最新 技术干货