Python数据分析与挖掘实战(数据预处理)

本人新书《玩转Python网络爬虫》,可在天猫、京东等商城搜索查阅或通过右侧图书链接购买,项目深入浅出,适合爬虫初学者或者是已经有一些网络爬虫编写经验,但希望更加全面、深入理解Python爬虫的开发人员。


操作系统:Windows
Python:3.5
欢迎加入学习交流QQ群:657341423


在做数据分析的时候,我们会通过爬虫或者数据库里得到一批原始数据的。这个上节说过的,但是对于这些数据需要做一个数据清洗,去除异常值,缺失值等,确保数据的准确性和后续生成的模型的正确性。
这节就讲解数据预处理。


缺失值处理:
处理方法大致三种:
1,删除记录
2,数据插补
3,不处理
如果简单删除数据达到既定的目的,这是最有效的,但是这个方法很大局限性,容易造成隐藏的信息丢失,实际中不建议。如果不处理,会直接影响数据的数值和准确性。
基本上都是采用数据插补的方式填充缺失值。这个插补方式很多,如图
Python数据分析与挖掘实战(数据预处理)
具体使用那种方式根据实际而定,这里介绍一种插补方法:
拉格朗日插值
(当看到深深的数学公式的时候,我内心是崩溃的)
在python里直接有这个方法(scipy库)
实例:
数据源,excel里
Python数据分析与挖掘实战(数据预处理)
有两列,数据有200行。
代码:
Python数据分析与挖掘实战(数据预处理)
def ployinterp_column是拉格朗日插值的使用。
这里取出缺失值前5行和后5行数据进行计算,得出一个pd的Series格式的数据。
然后剔除缺失值所在的行,或者前后5行的缺失值。
然后lagrange(y.index, list(y)),其中y.index, list(y)分别用print出来,index为数据行数,list(y)为数据。(n)是插入的位置。

这里介绍一下pd的DataFrame和Series的区别。
首先,pd.read_excel(inputfile)是生成一个DataFrame
如果要读取某个数的话,data[‘销量’][9] ,[‘销量’]是列名,如果没有声明的话,必需和excel的一致,不能用数字做索引。第二个[]是行数。
如果要获取某部分数据的话,比如
Python数据分析与挖掘实战(数据预处理)
data[‘销量’][[9,10]] 是返回一个Series
data[‘销量’][9] 是返回某个数据。

基本上,这段代码比较难的都剖释了。不难理解。


异常值处理:
异常值和缺失值不同,异常值是不符合实际的数据,比如正常情况下,月薪10亿。这个数据就在现实中就不太可能实现了。
处理方法:
Python数据分析与挖掘实战(数据预处理)
基本上常用的处理方法和缺失值处理一样的。不过实际中的处理方法还需结合实际考虑。