首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python数据分析-pandas详细教程四

这期主要分享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已全部分享结束了,文中如有错误和叙述不妥之处,还望指正!

学习与分享,关注小号

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180312G15HGF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com