在数据挖掘过程中,数据预处理过程是占比很大的一部分工作
数据预处理过程主要有以下几个部分
1、数据清洗——2.数据集成——3.数据变换——4.数据规约
本文介绍数据清洗部分
一、缺失值分析与处理
1.缺失值分析
缺失值的影响:
(1)数据建模将丢失大量有用信息
(2)数据挖掘模型所表现出的不确定性更加显著
(3)包含控制的数据会使建模过程陷入混乱,导致不可靠输出
缺失值的分析:使用简单的统计分析,可以得到含缺失值的属性的个数
2.缺失值处理
处理缺失值的方法可以分为三类:删除记录、数据插补、不处理。
如果简单的删除小部分记录就能达到既定的目标,那么删除缺失值的方法是最有效的
常用的数据插补方法
常见的插值法包括拉格朗日插值法,牛顿插值法,hermite插值法,分段插值法,样条插值法等。
拉格朗日插值法:python 数据预处理(采用拉格朗日插值法处理缺失值)_momaojia的博客-CSDN博客_python拉格朗日插值法
牛顿插值法:牛顿插值法 [python]_宁悦的博客-CSDN博客_newton插值法
样条插值法:(数值分析)各种插值法的python实现_张渊猛的博客-CSDN博客_python 插值
hermite插值法:(数值分析)各种插值法的python实现_张渊猛的博客-CSDN博客_python 插值
二、异常值分析与处理
1.异常值分析
(1)简单的描述性统计,看最大值和最小值
(2)3σ原则:如果数据服从正态分布,距离平均值3倍标准差的为异常值
(3)箱型图分析
import pandas as pdcatering_sale = './Python数据分析与挖掘实战(第2版)/chapter3/demo/data/catering_sale.xls' # 餐饮数据data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列print(data.describe()) #使用describe()方法即可查看数据的基本情况import matplotlib.pyplot as plt # 导入图像库plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号plt.figure() # 建立图像p = data.boxplot(return_type='dict') # 画箱线图,直接使用DataFrame的方法x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签y = p['fliers'][0].get_ydata()y.sort() # 从小到大排序,该方法直接改变原对象'''用annotate添加注释其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制以下参数都是经过调试的,需要具体问题具体调试。'''for i in range(len(x)):if i>0:plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))else:plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))plt.show() # 展示箱线图
输出结果: