第四部分是数据的预处理,对清洗完的数据进行整理以便后期的统计和分析工作。主要包括数据表的合并,排序,数值分列,数据分组及标记等工作。
1)数据表合并
首先是对不同的数据表进行合并,我们这里创建一个新的数据表 df1,并将 df 和 df1 两个数据表进行合并。在 Excel 中没有直接完成数据表合并的功能,可以通过 VLOOKUP 函数分步实现。在 python 中可以通过 merge 函数一次性实现。
下面建立 df1 数据表,用于和 df 数据表进行合并。
1 #创建 df1 数据表
2 df1=pd.DataFrame({‘id’:[1001,1002,1003,1004,1005,1006,1007,1008],
3 ‘gender’:[‘male’,‘female’,‘male’,‘female’,‘male’,‘female’,‘male’,‘female’],
4 ‘pay’:[‘Y’,‘N’,‘Y’,‘Y’,‘N’,‘Y’,‘N’,‘Y’,],
5 ‘m-point’:[10,12,20,40,40,40,30,20]})
使用 merge 函数对两个数据表进行合并,合并的方式为 inner,将两个数据表中共有的数据匹配到一起生成新的数据表。并命名为 df_inner。
1#数据表匹配合并,inner 模式
2df_inner=pd.merge(df,df1,how=‘inner’)
除了 inner 方式以外,合并的方式还有 left,right 和 outer 方式。这几种方式的差别在我其他的文章中有详细的说明和对比。
1#其他数据表匹配模式
2df_left=pd.merge(df,df1,how=‘left’)3df_right=pd.merge(df,df1,how=‘right’)4df_outer=pd.merge(df,df1,how=‘outer’)
2)设置索引列
完成数据表的合并后,我们对 df_inner 数据表设置索引列,索引列的功能很多,可以进行数据提取,汇总,也可以进行数据筛选等。
设置索引的函数为 set_index。
1#设置索引列
2df_inner.set_index(‘id’)
3)排序(按索引,按数值)
Excel 中可以通过数据目录下的排序按钮直接对数据表进行排序,比较简单。Python 中需要使用 ort_values 函数和 sort_index 函数完成排序。
在 python 中,既可以按索引对数据表进行排序,也可以看制定列的数值进行排序。首先我们按 age 列中用户的年龄对数据表进行排序。
使用的函数为 sort_values。
1#按特定列的值排序
2df_inner.sort_values(by=[‘age’])
函数用来将数据表按索引列的值进行排序。
1#按索引列排序
2df_inner.sort_index()
3)数据分组
Excel 中可以通过 VLOOKUP 函数进行近似匹配来完成对数值的分组,或者使用“数据透视表”来完成分组。相应的 python 中使用 where 函数完成数据分组。
Where 函数用来对数据进行判断和分组,下面的代码中我们对 price 列的值进行判断,将符合条件的分为一组,不符合条件的分为另一组,并使用 group 字段进行标记。
1#如果 price 列的值>3000,group 列显示 high,否则显示 low
2df_inner[‘group’] = np.where(df_inner[‘price’] > 3000,‘high’,‘low’)
除了 where 函数以外,还可以对多个字段的值进行判断后对数据进行分组,下面的代码中对 city 列等于 beijing 并且 price 列大于等于 4000 的数据标记为 1。
1#对复合多个条件的数据进行分组标记
2df_inner.loc[(df_inner[‘city’] == ‘beijing’) & (df_inner[‘price’] >= 4000), ‘sign’]=1
4)数据分列
与数据分组相反的是对数值进行分列,Excel 中的数据目录下提供“分列”功能。在 python 中使用 split 函数实现分列。
在数据表中 category 列中的数据包含有两个信息,前面的数字为类别 id,后面的字母为 size 值。中间以连字符进行连接。我们使用 split 函数对这个字段进行拆分,并将拆分后的数据表匹配回原数据表中。
1 #对 category 字段的值依次进行分列,并创建数据表,索引值为 df_inner 的索引列,列名称为 category 和 size
2 pd.DataFrame((x.split(’-’) for x in df_inner[‘category’]),index
=df_inner.index,columns=[‘category’,‘size’])
1#将完成分列后的数据表与原 df_inner 数据表进行匹配
2df_inner=pd.merge(df_inner,split,right_index=True, left_index=True)
2、数据提取
第五部分是数据提取,也是数据分析中最常见的一个工作。这部分主要使用三个函数,loc,iloc 和 ix,loc 函数按标签值进行提取,iloc 按位置进行提取,ix 可以同时按标签和位置进行提取。下面介绍每一种函数的使用方法。
1)按标签提取(loc)
Loc 函数按数据表的索引标签进行提取,下面的代码中提取了索引列为 3 的单条数据。
1#按索引提取单行的数值
2df_inner.loc[3]3id 10044date 2013-01-05 00:00:005city shenzhen6category 110-C7age 328price 54339gender female10m-point 4011pay Y12group high13sign NaN14category_1 11015size C16Name: 3, dtype: object
使用冒号可以限定提取数据的范围,冒号前面为开始的标签值,后面为结束的标签值。下面提取了 0 到 5 的数据行。
1#按索引提取区域行数值
2df_inner.loc[0:5]
Reset_index 函数用于恢复索引,这里我们重新将 date 字段的日期设置为数据表的索引,并按日期进行数据提取。
1#重设索引
2df_inner.reset_index()
1#设置日期为索引
2df_inner=df_inner.set_index(‘date’)
使用冒号限定提取数据的范围,冒号前面为空表示从 0 开始。提取所有 2013 年 1 月 4 日以前的数据。
1#提取 4 日之前的所有数据
2df_inner[:‘2013-01-04’]
2)按位置提取(iloc)
使用 iloc 函数按位置对数据表中的数据进行提取,这里冒号前后的数字不再是索引的标签名称,而是数据所在的位置,从 0 开始。
1#使用 iloc 按位置区域提取数据
2df_inner.iloc[:3,:2]
iloc 函数除了可以按区域提取数据,还可以按位置逐条提取,前面方括号中的 0,2,5 表示数据所在行的位置,后面方括号中的数表示所在列的位置。
1#使用 iloc 按位置单独提取数据
2df_inner.iloc[[0,2,5],[4,5]]
3)按标签和位置提取(ix)
ix 是 loc 和 iloc 的混合,既能按索引标签提取,也能按位置进行数据提取。下面代码中行的位置按索引日期设置,列按位置设置。
1#使用 ix 按索引标签和位置混合提取数据
2df_inner.ix[:‘2013-01-03’,:4]
4)按条件提取(区域和条件值)
除了按标签和位置提起数据以外,还可以按具体的条件进行数据。下面使用 loc 和 isin 两个函数配合使用,按指定条件对数据进行提取 。
使用 isin 函数对 city 中的值是否为 beijing 进行判断。
1 #判断 city 列的值是否为 beijing
2 df_inner[‘city’].isin([‘beijing’])
4 date
5 2013-01-02 True
6 2013-01-05 False
7 2013-01-07 True
8 2013-01-06 False
9 2013-01-03 False
10 2013-01-04 False
11 Name: city, dtype: bool
将 isin 函数嵌套到 loc 的数据提取函数中,将判断结果为 Ture 数据提取出来。这里我们把判断条件改为 city 值是否为 beijing 和 shanghai。如果是就把这条数据提取出来。
1#先判断 city 列里是否包含 beijing 和 shanghai,然后将复合条件的数据提取出来。
2df_inner.loc[df_inner[‘city’].isin([‘beijing’,‘shanghai’])]
5)按筛选条件提取
数值提取还可以完成类似数据分列的工作,从合并的数值中提取出制定的数值。
1 category=df_inner[‘category’]
2 0 100-A
3 3 110-C
4 5 130-F
5 4 210-A
6 1 100-B
7 2 110-A
8 Name: category, dtype: object
10 #提取前三个字符,并生成数据表
11pd.DataFrame(category.str[:3])
文章来源:网络 版权归原作者所有
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系小编,我们将立即处理
Python
是一门动态的、面向对象的脚本语言,同时也是一门简约,通俗易懂的编程语言。
Python
入门简单,代码可读性强,一段好的
Python
代码,阅读起来像是在读一篇外语文章。
Python
这种特性称为“伪代码”,它可以使你只关心完成什么样的工作任务,而不是纠结于
Python
的语法。
如何快速
提取
出
数据
集里的数值型变量或者分类变量?如何根据
数据
格式,
提取
其
中
一类格式的所有
数据
?比如
提取
出
数据
集
中
所有float格式的
数据
。
1.1 创建DataFrame
data = {"col1":['
Python
', 'C', 'Java', 'R', 'SQL', 'PHP', '
Python
', 'Java', 'C', '
Python
'],
"col2":[6, 2, 6, 4, 2, 5, 8, 10, 3, 4],
"col3":[4, 2, 6, 2,
Whenever a dataset comes the first step is to extract data and manipulate it. It is the most important part as it gives the most useful information about the dataset. I have taken the IPL dataset. Let...
数据
提取
概要
本阶段课程主要学习获取响应之后如何从响应
中
提取
我们想要的
数据
,在本阶段课程
中
我们会讲解一些常用的方法和模块,基本上我们以后遇到的情况在掌握本阶段课程之后都能搞定。
了解 响应内容的分类;
了解 xml和html的区别;
1、响应内容的分类
在发送请求获取响应之后,可能存在多种不同类型的响应内容;而且很多时候,我们只需要响应内容
中
的一
部分
数据
。
结构化的响应内容
json 字符串
可以使用re、json等模块
提取
特定
数据
;
json字符串的例子如下图;
xml字符串
可以使用re、lx
在我们要对某一种情况进行分析时,需要大批量的
数据
材料作为分析的基础,在使用
python
爬取时,就会涉及到不同的抓取方法。在抓取
数据
的类型时,又会分为不同的情况进行讨论,本篇整理了三种
提取
数据
方法:正则表达式、BeautifulSoup、lxml。下面就这些方法进行详解。假设我们需要爬取该网页
中
的国家名称和概况,我们依次使用这三种
数据
抓取的方法实现
数据
抓取。1、正则表达式(re库)正则表达式通常用于...
(1)使用codecs库的open()方法按行读取txt
数据
。注意txt文件读取时,编码方式设置(例如:encoding='utf-8');
(2)选取txt
数据
特定列。使用append()方法对特定列
数据
进行存储;
(3)循环遍历得到的特定列
数据
,并保存到txt
数据
文件
中
;
二、以下案例以保存txt文件的前两列
数据
为例,使用该方法实现特定列
数据
保存:
import codecs
f = codecs.open('1.txt', mode.
pandas的
数据
抽取主要采用.loc和.iloc来取出自己需要的某行和某列的
数据
1.介绍.loc和.iloc
df.loc[ ]:主要是通过列名和行名来抽取
数据
,当只有一个参数时,默认是行名,即抽取这一行的
数据
。
df.iloc[ ]:主要是通过行索引和列索引来抽取
数据
,当只有一个参数时,默认为取某一行的
数据
。
df.iat[ ]:主要是定为dataframe
中
的某一个
数据
,如df.iat[2,2],定位的为(3,3)的
数据
。
2.对行
数据
的抽取
初始化
数据
:
#pandas之
数据
抽取
import p