第3章--数据探索 之一

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

第3章节目录

3.1 数据质量分析

    3.1.1 缺失值分析

    3.1.2 异常值分析

    3.1.3 一致性分析

3.2数据特征分析

    3.2.1 分布分析

    3.2.2 对比分析

    3.2.3 统计量分析

    3.2.4 周期性分析

    3.2.5 贡献度分析

    3.2.6 相关性分析

3.3 Python主演数据探索函数

   3.3.1 基本统计特征函数

   3.3.2 拓展统计特征函数

    3.3.3 统计作图函数

数据探索

通过检验数据集的数据质量、绘制图表、计算某些特征量等手段,对样本数据集的结构和规律进行分析的过程就是数据探索。

本章从数据质量分析数据特征分析两个角度对数据进行探索。      

3.1 数据质量分析

数据质量分析主要任务:检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。

脏数据主要包括:
1、缺失值
2、异常值
3、不一致的值
4、重复数据及含有特殊符号的数据。
 
3.1.1 缺失值分析
数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失。
以下从缺失值产生的原因及影响等方面展开分析。
1、缺失值的产生原因
      1)有些信息暂时无法获取,或者获取代价太大
      2)有些信息是被遗漏的。
      3)属性值不存在。在某些情况下,缺失值并不意味着数据有错误。对一些对象来说某些属性值是不存在的,如一个儿童的固定收入。
 
2、缺失值的影响
  1)数据挖掘建模将丢失大量有用的信息
  2)数据挖掘模型所表现出的不确定性更加显著,模型中蕴含的规律更难把握
  3)包含空值的数据会使建模过程陷入混乱,导致不可靠的输出。
 
3、缺失值的分析
使用简单统计分析,得到含有缺失值的属性的个数,以及每个属性的未缺失数、缺失数与缺失率。

 缺失值的处理分为:删除存在缺失值的记录、对可能只进行插补和不处理。

3.1.2 异常值分析

异常值分析是检验数据是否有录入错误以及含有不合理的数据。

异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点分析。
1、简单统计量分析
可以先对变量做一个描述性统计,进而查看那些数据是不合理的。最常用的统计量是最大值和最小值,用来判断这个变量的取值是否超出了合理的范围。
 
2、3σ原则
如果数据服从正太分布,在3σ原则下,异常值被定义为一组测定值与平均值的偏差超过3倍标准差的值。
不服从正态分布,也可用于远离平均值的多少倍标准差来描述。
 
3、箱线图分析
箱形图提供了识别异常值的一个标准:
异常值通常定义为小于QL-1.5QR或大于QU+1.5QR的值。QL称为下四分位数,表示全部观察值中有四分之一的数据取值比它小;QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大。
IQR称为四分位数间距,是QU与QL的差,其间包含了全部观察值的一半。
 案例:
餐饮系统中的销量数据出现缺失值和异常值,对此进行分析:
代码实现:
1 import pandas as pd
2 import numpy as np
3 #读取数据
4 df=pd.read_csv(r'C:\Users\Administrator\Desktop\chapter3\demo\data\catering_sale.csv',encoding='gbk')
5 df.describe()
 1 import matplotlib.pyplot as plt
 2 #用来正常显示中文标签
 3 plt.rc('font', family='STXihei', size=15) 
 4 #用来正常显示负号
 5 plt.rcParams['axes.unicode_minus']=False
 6 
 7 plt.figure() #建立图像
 8 
 9 #p=df.boxplot() 书中
10 p=df.boxplot(return_type='dict')  #画出箱线图
11 
12 x=p['fliers'][0].get_xdata()  #'fliers'即为异常值的标签
13 y=p['fliers'][0].get_ydata()
14 y.sort()   #从小到大排序,该方法直接改变原对象
15 
16 #用annotate添加注释
17 #其中有些相近的点,注解会出现重叠,难以看清,需要一些技巧来控制。
18 #以下参数都是经过调试的,需要具体问题具体调试。
19 for i in range(len(x)):
20     if i>0:
21         plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.03-0.8/(y[i]-y[i-1]),y[i]))
22     else:
23         plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.08,y[i]))
24 plt.show()

 

3.1.3 一致性分析
数据不一致性是指数据的矛盾性、不相容性。
不一致数据的产生只要发生在数据集成的过程中,可能是由于被挖掘数据来自不同的数据源、对重复存放的数据未能进行一致性更新造成的。
posted @ 2018-07-30 18:17  平淡才是真~~  阅读(384)  评论(0编辑  收藏  举报