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

第4章 数据预处理

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

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

1. 数据表合并

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

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

python中merge函数用法 merge在python_python excel处理模块效率对比

在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]})

python中merge函数用法 merge在python_python中merge函数用法_02

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

#数据表匹配合并

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

python中merge函数用法 merge在python_字段_03

除了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')

python中merge函数用法 merge在python_python excel处理模块效率对比_04

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

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

python中merge函数用法 merge在python_python excel处理模块效率对比_05

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

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

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

#按特定列的值排序

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

python中merge函数用法 merge在python_字段_06

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

#按索引列排序

df_inner.sort_index()

python中merge函数用法 merge在python_字段_07

4. 数据分组

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

python中merge函数用法 merge在python_字段_08

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

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

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

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

python中merge函数用法 merge在python_python中merge函数用法_09

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

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

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

python中merge函数用法 merge在python_python excel处理模块效率对比_10

5. 数据分列

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

python中merge函数用法 merge在python_python excel处理模块效率对比_11

在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'])

python中merge函数用法 merge在python_python excel处理模块效率对比_12

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

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

python中merge函数用法 merge在python_python excel处理模块效率对比_13