在数据挖掘过程中,数据预处理过程是占比很大的一部分工作
数据预处理过程主要有以下几个部分
1、数据清洗——2.数据集成——3.数据变换——4.数据规约
本文介绍数据清洗部分
缺失值的影响:
(1)数据建模将丢失大量有用信息
(2)数据挖掘模型所表现出的不确定性更加显著
(3)包含控制的数据会使建模过程陷入混乱,导致不可靠输出
缺失值的分析:使用简单的统计分析,可以得到含缺失值的属性的个数
处理缺失值的方法可以分为三类:删除记录、数据插补、不处理。
如果简单的删除小部分记录就能达到既定的目标,那么删除缺失值的方法是最有效的
常用的数据插补方法
插补方法 | 方法描述 |
均值/中位数/众数插补 | 根据属性类型,用该属性取值的均值/中位数/众数插补 |
使用固定值 | 将缺失的属性值用一个常量替换 |
最近临插补 | 在记录中找到与缺失样本最接近的样本的属性值进行插补 |
回归方法 | 根据已有数据与其有关的其他变量建立拟合模型来预测确实的属性值 |
插值法 | 利用已知点建立合适的插值函数f(x),未知值由对应点的函数值近似代替 |
常见的插值法包括拉格朗日插值法,牛顿插值法,hermite插值法,分段插值法,样条插值法等。
拉格朗日插值法:python 数据预处理(采用拉格朗日插值法处理缺失值)_momaojia的博客-CSDN博客_python拉格朗日插值法
牛顿插值法:牛顿插值法 [python]_宁悦的博客-CSDN博客_newton插值法
样条插值法:(数值分析)各种插值法的python实现_张渊猛的博客-CSDN博客_python 插值
hermite插值法:(数值分析)各种插值法的python实现_张渊猛的博客-CSDN博客_python 插值
(1)简单的描述性统计,看最大值和最小值
(2)3σ原则:如果数据服从正态分布,距离平均值3倍标准差的为异常值
(3)箱型图分析
import pandas as pd
catering_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() # 展示箱线图
输出结果:
异常值处理方法 | 方法描述 |
删除含有异常值的记录 | 直接删除 |
视为缺失值 | 将异常值视为缺失值,利用缺失值处理方法进行处理 |
平均值修正 | 用前后两个观测值的平均值修正该异常值 |
不处理 | 直接在含有异常值的数据集上进行挖掘建模 |