4-3-1数据清洗与预处理教学课件PPT.pptx
《4-3-1数据清洗与预处理教学课件PPT.pptx》由会员分享,可在线阅读,更多相关《4-3-1数据清洗与预处理教学课件PPT.pptx(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、4-3-1数据清洗与预处理弘 德 明 志 博 学 笃 行第第4 4章章 数据处理和分析数据处理和分析-Pandas-Pandas第第0606讲讲 数据清洗与预处理数据清洗与预处理主讲人:马学强弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行数据预处理在现实世界中,由于数据采集、数据存储、数据操作等诸多方面的原因,可能使得数据缺少某些感兴趣的属性值,存在名称或代码的差异以及错误或异常的值等,即数据通常是不完整的、不一致的、有噪声的、低质量的。因此,通过数据预处理,将来源于多个异构数据源的原始数据转换为高质量的、可以理解的数据格式,以符合和满足问题的数据需求是必要的。为什么要进行数据预
2、处理?弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行数据预处理选取合适的数据子集,使数据的行、列标识意义明确,便于理解和使用;缺失数据的检测、滤除或填充,使得信息更加完整;重复数据处理,包括记录重复、特征重复两种类型,可消除其中的数据冗余,优化存储空间;异常值处理,更多地表现为离群值或不良数据,一般采用删除的方式处理,但在删除之前,必须弄清这些数据产生的原因,避免对数据分析结果的误判;数据转换主要指数据类型转换,数据映射、数据的离散化和哑变量处理,其主要目的是降低内存消耗;数据匹配是对信息主体拥有的数据项进行比对和差异分析,主要有模糊匹配、正则表达式匹配两种方式;数据规范化是为消
3、除作为评价指标的数据特征之间的量纲和取值范围(数量级)差异的影响,以保证结果的可靠性。数据清洗的主要表现:弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行数据预处理数据预处理主要表现为数据清洗,是占据数据科学工作者大约80%精力的一项繁琐工作;数据清洗的脚本代码可使用函数方式编写,不仅结构简单清晰,而且可以大大减少重复性工作,节省数据清洗的成本。数据清洗的实践,情况复杂,涵盖各行各业的场景。需要具备严谨的态度和所研究领域全面、系统的知识,需要在数据科学探索的道路上不断积累成功和失败的经验,才能最终成为一名合格的数据清洗专家。弘 德 明 志 博 学 笃 行Contents目录01检测
4、和处理缺失值检测和处理缺失值检测和处理重复值检测和处理重复值02检测和处理异常值检测和处理异常值03弘 德 明 志 博 学 笃 行01检测和处理缺失值缺失值是指数据中不完整的某个或某些特征值。造成数据缺失的原因很多:疏忽或遗漏; 有意保留; 特征不存在数据缺失在很多数据应用场景中都会碰到,甚至是不可避免的。缺失值一般用NA(Not Available)表示,Pandas中的浮点值NaN(Not a Number)、Numpy中的nan、Python内置的None值都可以被视为NA。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行检测缺失值Pandas使用isnull()、notnu
5、ll()分别用于识别缺失值和非缺失值,两种方法均返回布尔值True和False。结合sum()等统计函数,可以检测缺失值的分布、缺失值的数量。以某电商公司简单的交易数据(customer.xlsx)为例,说明缺失值的检测。 data=pd.read_excel(customer.xlsx) #读取Excel文件的数据,返回DataFrame对象 data.shape #DataFrame对象的行列数为(3000, 6) data.isnull() #检测数据集中的缺失值 data.isnull().sum(axis=0) #按列统计各特征的缺失值数量 data.isnull().sum(axi
6、s=0)/data.shape0 #按列统计缺失值占比率通过对数据中缺失值的检测和统计,可以得出一些基本的结论。但在进行数据清洗时,最好直接对缺失数据进行分析,以判断数据缺失是不是由于数据采集的问题,缺失数据会不会导致数据分析的偏差。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行滤除缺失值缺失值的滤除,可以使用Pandas提供的dropna()方法,其语法如下:dropna(axis=0, how=any, thresh=None, subset=None, inplace=False)该方法在Pandas的Series和DataFrame对象上都可以使用,但功能会有较大差别。对
7、缺失值的处理,最简单直接的方式就是滤除缺失值,这种方法在样本数据量非常大且缺失值较少的情况下是非常有效的。缺失值的滤除,也会带来如下问题: 通过减少历史数据以换取完整的信息,可能会牺牲大量数据或丢失很多隐藏的重要信息; 在缺失数据量比较大的情况下,直接删除可能会导致数据的分布规律发生偏离,如原始数据符合正态分布,滤除缺失值后变为非正态分布。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行滤除缺失值示例from numpy import nan as NAdata=pd.Series(2,NA,3.5,None,7.6) #定义系列对象data.dropna() #滤除缺失值,等价于
8、datadata.notnull()df=pd.DataFrame(name: Alfred, Batman, Catwoman, #创建对象 toy: NA, Batmobile, Bullwhip, born: pd.NaT, pd.Timestamp(1940-04-25),None) df.dropna() #滤除含有缺失值的所有行 df.dropna(axis=1) #按列滤除缺失值,默认axis=0(按行) df.dropna(how=all) #行中所有值均为缺失值,则滤除 df.dropna(thresh=2) #行中缺失值有2个及以上,则滤除 df.dropna(subset
9、=name,born) #对指定的列进行滤除 df.dropna(inplace=True) #真正滤除对象内部的缺失值弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行填充缺失值-替换法要填充缺失值,按照要填充缺失值,按照数据类型的不同数据类型的不同,可以采取以下两种替换方法:,可以采取以下两种替换方法: 数值型:通常用特征的均值(mean)、中位数(median)和众数(mode)等描述其集中趋势的统计量来填充缺失值。如一个班级的同学,其缺失的身高值可以用全班同学身高的平均值或中位数来填充。 类别型:通常用众数填充。如一个学校的同学,男生、女生的人数分别为500人、50人,则特征
10、的缺失值可以用人数较多的男生来填充。这种方法虽然简单,但是准确性不高,可能会引入噪声,或者可能会改变特征原有的分布规律。对缺失值的填充,可采用替换或插值的方法等。其中,替换是使用数据中非缺失数据的相似性进行填充,插值则是对数据中的特征进行建模以决定填充的缺失值。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行填充缺失值-替换法 热卡法(hot deck imputation):对于一个包含缺失值的变量,在数据集中找到一个与它最相似的对象,然后用这个对象的值进行填充。这种方法常用相关系数矩阵来确定变量之间的相似性,然后用最相似变量的值来替换缺失值。这种方法概念简单,利用数据间的关系来
11、进行缺失值估计,但难以定义相似标准,主观因素较多。 K-均值聚类法(k-means clusting):将所有样本进行k-近邻聚类划分,然后再通过划分的种类的均值对各类的缺失值进行填充。这是一种无监督机器学习的聚类方法。使用这种方法对缺失值进行填充,其准确性取决于聚类结果的好坏,而聚类结果受初始选择点的影响变化大,适用于短时间内变化不大的变量。缺失值的填充,也可采用近似值替换缺失值的方法,主要有热卡法或k-近邻聚类法两种。注意:近似值的判定,针对不同的问题会选用不同的标准。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行填充缺失值-替换法示例 from numpy import n
12、an as NA #将numpy.nan定义为缺失值标记NA df = pd.DataFrame(NA, 2, NA, 0,3, 4, NA, 1,NA, NA, NA, 5,NA, 3, NA, 4, columns=list(ABCD) #创建DataFrame对象 df.fillna(df.mean() #用均值填充缺失值 df.fillna(method=ffill) #按列从第1个非NaN值开始向前填充 values = A: 0, B: 1, C: 2, D: 3 #定义字典 df.fillna(value=values) #按字典键值对关系分别填充各列 df.fillna(val
13、ue=values,limit=1) #按字典键值对,填充各列中第1个NaN在大多数情况下,缺失值的替换可以使用DataFrame.fillna()方法,其语法如下:fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, *kwarg)弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行填充缺失值-插值法比较常用的插值法有线性插值、多项式插值和样条插值等,如下:线性插值:是一种较为简单的插值方法,它针对已知的值求出线性方程,通过求解线性方程得到缺失值。多项式插值:是利用已知
14、的值拟合一个多项式,使得现有的数据满足这个多项式,再利用这个多项式求解缺失值,常见的多项式插值法有拉格朗日插值和牛顿插值等。样条插值:是以可变样条来作出一条经过一系列点的光滑曲线的插值方法,插值样条由一些多项式组成,每一个多项式都是由相邻两个数据点决定,这样可以保证两个相邻多项式及其导数在连接处连续。从拟合结果来看,多项式插值和样条插值在大多数情况下拟合都非常出色,线性插值法只在自变量和因变量为线性关系的情况下拟合才较为出色。在实际的数据处理和分析中,满足线性关系的情况比较少,因此多项式插值和样条插值是较为合适的选择。在缺失值的处理上,直接滤除缺失值简单易行,但是会引起数据结构的变动和样本数量
15、的减少;缺失值的替换方法理解相对容易,使用难度较低,但是会影响数据的标准差,导致信息量变动。因此,在数据缺失值的处理上,可以使用另一种常用的方法,即插值法。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行填充缺失值-插值法示例 s = pd.Series(0, 1, np.nan, 3) #创建Series对象 s.interpolate() #线性插值 s = pd.Series(None, single_one, None, fill_two_more, None, None, None, 4.71, np.nan) #创建Series对象 s.interpolate(meth
16、od=pad, limit=2) #用已经存在的值填充邻近的NaN s = pd.Series(0, 2, np.nan, 8) #创建Series对象 s.interpolate(method=polynomial, order=2) #多项式插值,次数为2 df = pd.DataFrame(0.0, None, -1.0, 1.0), (None, 2.0, None, None),(2.0, 3.0, None, 9.0), (None, 4.0, -4.0, 16.0), columns=list(ABCD) #创建DataFrame对象 df.interpolate(method=
17、linear, limit_direction=forward, axis=0) #使用线性插值法,按列向前填充缺失值 dfD.interpolate(method=polynomial, order=2) #使用多项式插值,次数为2Pandas库提供了interpolate()方法进行缺失值的插值填充,适用于Series和DataFrame对象,其语法如下:interpolate(method=linear,axis=0,limit=None,inplace=False,limit_direction=forward, limit_area=None, downcast=None, *kwa
18、rgs)注:在使用多项式插值或样条插值方法时,必须指定多项式或样条的次数,且只能适用于索引(index)为数值型(numeric)或日期时间型(datetime)的数据。弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行填充缺失值-小结 Python的外部扩展库SciPy,其中的interpolate模块提供了更为丰富的插值方法,除常规的一维、二维插值方法外,还提供了如在图形学领域具有重要作用的重心坐标插值(BarycentricInterpolator)等。在实际应用中,需要根据不同的场景,选择合适的插值方法。 对缺失数据的填充处理,除替换和插值这两种方法外,针对具有随机特性的数据
19、集,按照数据缺失的机制、模式及变量的类型,还可以使用最大似然估计(maximum likelihood estimation)、蒙特卡洛(Monte Carlo)方法、随机森林等方法,拟合预测数据的缺失值。可在将来的数据挖掘(Data Mining)中进一步学习。对缺失值的填充,做如下总结:弘 德 明 志 博 学 笃 行02检测和处理重复值弘 德 明 志 博 学 笃 行弘 德 明 志 博 学 笃 行检测和处理重复值检测和处理重复值的意义由于数据分布、数据共享等原因,在数据的采集和处理过程中,会产生大量的重复数据,大大增加存储成本。对重复数据的有效检查和删除,在不损坏数据保真度或完整性的前提下,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 清洗 预处理 教学 课件 PPT
限制150内