初学数据挖掘——数据探索(一):数据质量分析:缺失值分析、异常值分析(简单统计量、箱型图、)、一致性分析

数据质量分析是数据挖掘中数据准备过程很重要的一个阶段,是数据预处理的前提。

数据质量分析的主要任务是检查原数据中是否存在脏数据

脏数据:
一般是指不符合要求的以及不能直接进行相应分析的数据。常见的脏数据:缺失值、异常值、不一致的值、重复数据即含有特殊符号(如#、¥、*)的数据

一、缺失值分析

1、缺失值产生的原因:

1.有些信息暂时无法获取,或获取信息的代价太高。

2.信息被遗漏,可能是人为因素,如收集信息不认真、忘记填写信息等 ;也可能是机器故障等非人为因素。

3.缺失值本身就不存在。

2、缺失值的影响

1.数据挖掘建模将丢失大量有用信息。

2.数据挖掘模型的不确定性更强,数据规律更难把握。

3.包含空值的数据会使建模过程陷入混乱,导致不可靠的输出。

3、缺失值的分析

1.缺失值统计分析
可以得到含有缺失值的属性个数,以及每个属性的未缺失值个数、缺失值数、缺失率等。

2.处理缺失值可以:

  • 删除存在缺失值的记录;
  • 对可能值进行插补
  • 对缺失值不做处理

二、异常值分析

异常值:

异常值是我们在数据分析中会经常遇到的一种特殊情况,所谓的异常值就是非正常、不合常理的数据。

有的时候异常数据对我们是有用的,比如在分析银行欺诈案例时,核心就是要发现异常值,这个时候异常值对我们是有用的。

有的时候异常数据不仅对我们无用,反而会影响我们正常的分析结果。

异常值是指样本中的个别值,其数值明显偏离其他的观测值。
异常值也称为离群点,异常值分析也称为离群点分析。

1、简单统计量分析

即对变量做一个描述性统计,进而查看哪些数据是不合理的。
最常用的统计量是最大值和最小值,用来判断这个变量的取值是否超出了合理范围。

在python的pandas库中,只需要读入数据,然后使用describe()
方法即可查看数据的基本情况:

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

print(data.describe())
print(len(data))

在这里插入图片描述
其中:
count是非空值数(可理解为非空数据记录的个数),提供的其他基本参数还有平均值、标准差、最小值、最大值、1/4、1/2、3/4分位数

通过len(data)可以知道数据记录为201条,因此缺失值数为1。

PS:原数据部分展示:
在这里插入图片描述

2、在这里插入图片描述

在数据服从正态分布时,在在这里插入图片描述
中异常值被定义为与平均值的偏差超过三倍标准差的值。

若数据不服从正态分布,也可以使用远离平均值的标准差倍数来描述。

3、箱型图分析

箱型图分析中识别异常值的标准:小于下四分位数-Q或大于上四分位数+Q的称为异常值。
其中:Q为上四分位数与下四分位数之差
在这里插入图片描述
箱型图识别异常值的结果比较客观,在识别异常值方面有一定的优越性。

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() #fliers即为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() #按照y从小到大排序,该方法直接改变原对象
'''
用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() #展示箱线图

在这里插入图片描述
PS:原数据部分展示:
在这里插入图片描述
从上图可以看出,箱线图中超过上下界的8个日销售额可能为异常值。
结合具体业务可以把865.0、4060.3、4065.2归为正常值,将22.0、51.0、60.0、6607.4、9106.44归为异常值
最后确定过滤规则为日销售额在400元以下或5000元以上则属于异常数据,编写过滤程序,进行后续处理。

三、一致性分析

数据的不一致性是指数据的矛盾性不相容性

原数据:

本文用到的原数据取用:
链接:https://pan.baidu.com/s/1bAer7S4MmuRNx4Q9V5ZfrQ
提取码:2677

猜你喜欢

转载自blog.csdn.net/qq_45154565/article/details/109276479