需要完整代码和PPT请点赞关注收藏后评论区留言私信~~~
一、数据预处理的必要性
低质量的数据导致低质量的数据挖掘结果
数据是数据挖掘的目标对象和原始资源,对数据挖掘最终结果起着决定性的作用。现实世界中的数据是多种多样的,具有不同的特征,这就要求数据的存储采用合适的数据类型,并且数据挖掘算法的适用性会受到具体的数据类型限制。
现实世界中的数据大多都是“脏”的,原始数据通常存在着噪声、不一致、部分数据缺失等问题。
1:数据的不一致
各应用系统的数据缺乏统一的标准和定义,数据结构有较大的差异
2: 噪声数据
收集数据时很难得到精确的数据,如数据采集设备故障、数据传输过程中会出现错误或存储介质可能出现的损坏等情况
3.:缺失值
系统设计时可能存在的缺陷或者在系统使用过程中人为因素的影响
数据质量要求 数据挖掘需要的数据必须是高质量的数据,即数据挖掘所处理的数据必须具有准确性(Correctness)、完整性(Completeness)和一致性(Consistency)等性质。此外,时效性(Timeliness)、可信性(Believability)和可解释性(Interpretability)也会影响数据的质量。
二、数据清洗
现实世界中的数据一般是不完整的、有噪声和不一致的“脏”数据,数据清理试图填充缺失的数据值、光滑噪声、识别离群点并纠正数据中的不一致。
数据并不总是完整的
引起空缺值的原因
设备故障
和其他数据不一致可能被删除
数据没有被录入
Missing data 需要经过推断而补上
1. 缺失值的处理
(1)忽略元组
(2)人工填写缺失值
(3)使用一个全局常量填充缺失值
(4)使用属性的中心度量(如均值或中位数)填充缺失值
(5)使用与给定元组属同一类的所有样本的属性均值或中位数
(6)使用最可能的值填充缺失值
2. 噪声数据的处理
噪声(Noise)是被测量的变量的随机误差或方差。噪声的处理方法一般有分箱、回归和离群点分析等方法、
(1)分箱 通过考察数据的近邻来光滑有序数据值,这些有序的数据被划分到一些桶或者箱子中
(2)回归 用一个函数拟合数据来光滑数据
(3)离群点分析 可以通过聚类等方法检测离群点
利用Pandas进行数据清洗
利用isnull检测缺失值
import pandas as pd
import numpy as np
string_data = pd.Series(['aardvark', 'artichoke', np.nan, 'avocado'])
print(string_data)
string_data.isnull()
Series中的None值处理
string_data = pd.Series(['aardvark', 'artichoke',np.nan, 'avocado'])
string_data.isnull()
利用isnull().sum()统计缺失值
df = pd.DataFrame(np.arange(12).reshape(3,4),columns = ['A','B','C','D'])
df.ix[2,:] = np.nan
df[3] = np.nan
print(df)
df.isnull().sum()
用info方法查看DataFrame的缺失值
df.info()
Series的dropna用法
from numpy import nan as NA
data = pd.Series([1, NA, 3.5, NA, 7])
print(data)
print(data.dropna())
布尔型索引选择过滤非缺失值
not_null = data.notnull()
print(not