python excel处理模块效率对比_工具篇:EXCEL与python的对比 如何处理数据表.md

工具篇:EXCEL与python的对比 如何处理数据表

第4章 数据预处理

本章主要讲的是数据的预处理,对清洗完的数据进行整理以便后期的统计和分析工作。

主要包括数据表的合并,排序,数值分列,数据分组及标记等工作

1. 数据表合并

首先是对不同的数据表进行合并,我们这里创建一个新的数据表df1,并将df和df1两个数据表进行合并。

在Excel中没有直接完成数据表合并的功能,可以通过VLOOKUP函数分步实现。

31OoWAqils0X.png?imageslim

在Python中可以通过merge函数一次性实现。下面建立df1数据表,用于和df数据表进行合并

df1=pd.DataFrame({"id":[1001,1002,1003,1004,1005,1006,1007,1008],

"gender":['male','female','male','female','male','female','male','female'],

"pay":['Y','N','Y','Y','N','Y','N','Y',],

"m-point":[10,12,20,40,40,40,30,20]})

Izzo7mWLxt1a.png?imageslim

使用merge函数对两个数据表进行合并,合并的方式为inner,将两个数据表中共有的数据匹配到一起生成新的数据表。并命名为df_inner。

#数据表匹配合并

df_inner=pd.merge(df,df1,how='inner')

Hzc7NdlLMpI5.png?imageslim

除了inner方式以外,合并的方式还有left,right和outer方式。这几种方式的差别在我其他的文章中有详细的说明和对比。

df_left=pd.merge(df,df1,how='left')

df_right=pd.merge(df,df1,how='right')

df_outer=pd.merge(df,df1,how='outer')

2. 设置索引列

EXCEL没有索引列概念

python完成数据表的合并后,我们对df_inner数据表设置索引列,索引列的功能很多,可以进行数据提取,汇总,也可以进行数据筛选等。设置索引的函数为set_index。

#设置索引列

df_inner.set_index('id')

snY0zDd5nPwu.png?imageslim

3. 排序(按索引,按数值)

Excel中可以通过数据目录下的排序按钮直接对数据表进行排序,比较简单。

tpsVDuFMLTSG.png?imageslim

Python中需要使用ort_values函数和sort_index函数完成排序

在Python中,既可以按索引对数据表进行排序,也可以看制定列的数值进行排序。

首先我们按age列中用户的年龄对数据表进行排序。使用的函数为sort_values。

#按特定列的值排序

df_inner.sort_values(by=['age'])

Blf5WxfYMonp.png?imageslim

Sort_index函数用来将数据表按索引列的值进行排序。

#按索引列排序

df_inner.sort_index()

OWnRh3GS1ITx.png?imageslim

4. 数据分组

Excel中可以通过VLOOKUP函数进行近似匹配来完成对数值的分组,或者使用“数据透视表”来完成分组。

E7uBOioEPYGw.png?imageslim

相应的 Python中使用where函数完成数据分组。

Where函数用来对数据进行判断和分组,下面的代码中我们对price列的值进行判断,将符合条件的分为一组,不符合条件的分为另一组,并使用group字段进行标记。

#如果price列的值>3000,group列显示high,否则显示low

df_inner['group'] = np.where(df_inner['price'] > 3000,'high','low')

zbdzn5CQ6rFG.png?imageslim

除了where函数以外,还可以对多个字段的值进行判断后对数据进行分组,下面的代码中对city列等于beijing并且price列大于等于4000的数据标记为1。

#对复合多个条件的数据进行分组标记

df_inner.loc[(df_inner['city'] == 'beijing') & (df_inner['price'] >= 4000), 'sign']=1

Nd6lVSzopqun.png?imageslim

5. 数据分列

与数据分组相反的是对数值进行分列,Excel中的数据目录下提供“分列”功能。

lTvEiXqOOPy1.png?imageslim

在Python中使用split函数实现分列

在数据表中category列中的数据包含有两个信息,前面的数字为类别id,后面的字母为size值。中间以连字符进行连接。我们使用split函数对这个字段进行拆分,并将拆分后的数据表匹配回原数据表中。

#对category字段的值依次进行分列,并创建数据表,索引值为df_inner的索引列,列名称为category和size

pd.DataFrame((x.split('-') for x in df_inner['category']),index=df_inner.index,columns=['category','size'])

0wwQiHopCmNg.png?imageslim

#将完成分列后的数据表与原df_inner数据表进行匹配

df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)

I8FKWhhFuqCT.png?imageslim

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值