《Python数据分析与挖掘实战》一3.1 数据质量分析

3.1 数据质量分析

数据质量分析是数据挖掘中数据准备过程的重要一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础,没有可信的数据,数据挖掘构建的模型将是空中楼阁。
数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。在常见的数据挖掘工作中,脏数据包括如下内容。
缺失值。
异常值。
不一致的值。
重复数据及含有特殊符号(如#、¥、*)的数据。
本小节将主要对数据中的缺失值、异常值和一致性进行分析。

3.1.1 缺失值分析

数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确,以下从缺失值产生的原因及影响等方面展开分析。
(1)缺失值产生的原因
1)有些信息暂时无法获取,或者获取信息的代价太大。
2)有些信息是被遗漏的。可能是因为输入时认为不重要、忘记填写或对数据理解错误等一些人为因素而遗漏,也可能是由于数据采集设备的故障、存储介质的故障、传输媒体的故障等非人为原因而丢失。
3)属性值不存在。在某些情况下,缺失值并不意味着数据有错误。对一些对象来说某些属性值是不存在的,如一个未婚者的配偶姓名、一个儿童的固定收入等。
(2)缺失值的影响
1)数据挖掘建模将丢失大量的有用信息。
2)数据挖掘模型所表现出的不确定性更加显著,模型中蕴涵的规律更难把握。
3)包含空值的数据会使建模过程陷入混乱,导致不可靠的输出。
(3)缺失值的分析
使用简单的统计分析,可以得到含有缺失值的属性的个数,以及每个属性的未缺失数、缺失数与缺失率等。
从总体上来说,缺失值的处理分为删除存在缺失值的记录、对可能值进行插补和不处理3种情况,将在4.1.1节详细介绍。

3.1.2 异常值分析

异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响;重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。
异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点分析。
(1)简单统计量分析
可以先对变量做一个描述性统计,进而查看哪些数据是不合理的。最常用的统计量是最大值和最小值,用来判断这个变量的取值是否超出了合理的范围。如客户年龄的最大值为199岁,则该变量的取值存在异常。
(2)3原则
如果数据服从正态分布,在3原则下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。在正态分布的假设下,距离平均值3之外的值出现的概率为P(|x-|>3)≤0.003,属于极个别的小概率事件。
如果数据不服从正态分布,也可以用远离平均值的多少倍标准差来描述。
(3)箱型图分析
箱型图提供了识别异常值的一个标准:异常值通常被定义为小于QL-1.5IQR或大于QU+1.5IQR的值。QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半。

箱型图依据实际数据绘制,没有对数据作任何限制性要求(如服从某种特定的分布形式),它只是真实直观地表现数据分布的本来面貌;另一方面,箱型图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的鲁棒性:多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不能对这个标准施加影响。由此可见,箱型图识别异常值的结果比较客观,在识别异常值方面有一定的优越性,如图3-1所示。
在餐饮系统中的销量额数据可能出现缺失值和异常值,如表3-1中数据所示。

分析餐饮系统日销量额数据可以发现,其中有部分数据
是缺失的,但是如果数据记录和属性较多,使用人工分辨的方法就不切合实际,所以这里需要编写程序来检测出含有缺失值的记录和属性以及缺失率个数和缺失率等。
在Python的Pandas库中,只需要读入数据,然后使用describe()函数就可以查看数据的基本情况。

import pandas as pd
catering_sale = '../data/catering_sale.xls' #餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') #读取数据,指定“日期”列为索引列
data.describe()

运行结果如下。

销量
count   200.000000
mean   2755.214700
std     751.029772
min      22.000000
25%    2451.975000
50%    2655.850000
75%    3026.125000
max    9106.440000

其中count是非空值数,通过len(data)可以知道数据记录为201条,因此缺失值数为1。另外,提供的基本参数还有平均值(mean)、标准差(std)、最小值(min)、最大值(max)以及1/4、1/2、3/4分位数(25%、50%、75%)。更直观地展示这些数据,并且可以检测异常值的方法是使用箱线图。其Python检测代码如代码清单3-1所示。

运行上面的程序,其结果为“缺失值个数为:1”,同时可以得到如图3-2所示的箱型图。
从图3-2中可以看出,箱型图中的超过上下界的7个销售额数据可能为异常值。结合具体业务可以把865、4060.3、4065.2归为正常值,将22、51、60、6607.4、9106.44归为异常值。最后确定过滤规则为:日销量在400以下5000以上则属于异常数据,编写过滤程序,进行后续处理。

3.1.3 一致性分析

数据不一致性是指数据的矛盾性、不相容性。直接对不一致的数据进行挖掘,可能会产生与实际相违背的挖掘结果。
在数据挖掘过程中,不一致数据的产生主要发生在数据集成的过程中,这可能是由于被挖掘数据是来自于从不同的数据源、对于重复存放的数据未能进行一致性更新造成的。例如,两张表中都存储了用户的电话号码,但在用户的电话号码发生改变时只更新了一张表中的数据,那么这两张表中就有了不一致的数据。

时间: 2024-10-31 23:44:26

《Python数据分析与挖掘实战》一3.1 数据质量分析的相关文章

《Python数据分析与挖掘实战》一导读

前 言 为什么要写这本书LinkedIn对全球超过3.3亿用户的工作经历和技能进行分析后得出,目前最炙手可热的25项技能中,数据挖掘排名第一.那么数据挖掘是什么?数据挖掘是从大量数据(包括文本)中挖掘出隐含的.先前未知的.对决策有潜在价值的关系.模式和趋势,并用这些知识和规则建立用于决策支持的模型,提供预测性决策支持的方法.工具和过程.数据挖掘有助于企业发现业务的趋势,揭示已知的事实,预测未知的结果,因此"数据挖掘"已成为企业保持竞争力的必要方法. 但跟国外相比,由于我国信息化程度不太

《Python数据分析与挖掘实战》一2.5 小结

2.5 小结 本章主要对Python进行简单介绍,包括软件安装.使用入门及相关注意事项和Python数据分析及挖掘相关工具箱.由于Python包含多个领域的扩展库,而且扩展库的功能也相当丰富,本章只介绍与数据分析及数据挖掘相关的一小部分,包括高维数组.数值计算.可视化.机器学习.神经网络和语言模型等.这些扩展库里面包含的函数在后续章节中会进行实例分析,通过在Python平台上完成实际案例来掌握数据分析和数据挖掘的原理,培养读者应用数据分析和挖掘技术解决实际问题的能力.

《Python数据分析与挖掘实战》一3.4 小结

3.4 小结 本章从应用的角度出发,从数据质量分析和数据特征分析两个方面对数据进行探索分析,最后介绍了Python常用的数据探索函数及用例.数据质量分析要求我们拿到数据后先检测是否存在缺失值和异常值:数据特征分析要求我们在数据挖掘建模前,通过频率分布分析.对比分析.帕累托分析.周期性分析.相关性分析等方法,对采集的样本数据的特征规律进行分析,以了解数据的规律和趋势,为数据挖掘的后续环节提供支持. 要特别说明的是,在数据可视化中,由于主要使用Pandas作为数据探索和分析的工具,因此我们介绍的作图

《Python数据分析与挖掘实战》一2.1 搭建Python开发平台

2.1 搭建Python开发平台 2.1.1 所要考虑的问题 Python的官网:https://www.python.org/. 搭建Python开发平台有几个问题需要考虑,第一是选择什么操作系统,是Windows还是Linux?第二是选择哪个Python版本,是2.x还是3.x? 首先,来回答后一个问题.3.x是对2.x的一个较大的更新,可以认为,Python 3.x什么都好,就是它的部分代码不兼容2.x的,这使得不少好用的库都无法支持3.x(值得庆幸的是,越来越多的主流库已经开始支持3.x

《Python数据分析与挖掘实战》一2.3 Python数据分析工具

2.3 Python数据分析工具 Python本身的数据分析功能不强,需要安装一些第三方扩展库来增强它的能力.本书用到的库有Numpy.Scipy.Matplotlib.Pandas.Scikit-Learn.Keras和Gensim等,下面将对这些库的安装和使用进行简单的介绍. 如果读者安装的是Anaconda发行版,那么它已经自带了以下库:Numpy.Scipy.Mat-plotlib.Pandas和Scikit-Learn. 本章主要是对这些库进行简单的介绍,在后面的章节中,会通过各种案例

《Python数据分析与挖掘实战》一第2章 Python数据分析简介

第2章 Python数据分析简介 Python是一门简单易学且功能强大的编程语言.它拥有高效的高级数据结构,并且能够用简单而又高效的方式进行面向对象编程.Python优雅的语法和动态类型,再结合它的解释性,使其在许多领域成为编写脚本或开发应用程序的理想语言. 要认识Python,首先得明确一点,Python是一门编程语言!这就意味着,原则上来说,它能够完成Matlab能够做的所有事情(因为大不了从头开始编写),而且在大多数情况下,同样功能的Python代码会比Matlab代码更加简洁.易懂:另一

《Python数据分析与挖掘实战》一3.2 数据特征分析

3.2 数据特征分析 对数据进行质量分析以后,接下来可通过绘制图表.计算某些特征量等手段进行数据的特征分析. 3.2.1 分布分析 分布分析能揭示数据的分布特征和分布类型.对于定量数据,欲了解其分布形式是对称的还是非对称的,发现某些特大或特小的可疑值,可通过绘制频率分布表.绘制频率分布直方图.绘制茎叶图进行直观地分析:对于定性分类数据,可用饼图和条形图直观地显示分布情况.1.定量数据的分布分析对于定量变量而言,选择"组数"和"组宽"是做频率分布分析时最主要的问题,一

《Python数据分析与挖掘实战》一3.3 Python主要数据探索函数

3.3 Python主要数据探索函数 Python中用于数据探索的库主要是Pandas(数据分析)和Matplotlib(数据可视化).其中,Pandas提供了大量的与数据探索相关的函数,这些数据探索函数可大致分为统计特征函数与统计作图函数,而作图函数依赖于Matplotlib,所以往往又会跟Matplotlib结合在一起使用.本节对Pandas中主要的统计特征函数与统计作图函数进行介绍,并举例以方便理解. 3.3.1 基本统计特征函数 统计特征函数用于计算数据的均值.方差.标准差.分位数.相关

《Python数据分析与挖掘实战》一2.2 Python使用入门

2.2 Python使用入门 限于篇幅,本书不可能详细地讲解Python的使用,而只能是针对本书涉及的数据挖掘案例所用到的代码进行基本讲解.如果读者是初步接触Python,并且用Python的目的就是数据挖掘,那么相信本节的介绍对你来说是比较充足的.如果读者需要进一步了解Python,或者需要运行更加复杂的任务,那么本书是不够的(例如,本书没有谈及到面向对象编程),请读者自行阅读相应的Python教程. 2.2.1 运行方式 本节示例代码使用的是Python 2.7.运行Python代码有两种方