python交通数据分析统计服_技术分享 - python数据分析(1)——数据质量分析

1. 前言

数据质量分析是数据挖掘中数据预处理的前提,主要任务是检查脏数据。

脏数据包括:

缺失值

异常值

不一致的值

重复数据或者含有特殊符号(#、*、¥)的数据

2. 缺失值

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

3. 异常值(离群点)

3.1 简单统计量分析

可以先对变量做一个描述性的统计,进而查看哪些数据是不合理的。

最常用的统计量是最大值和最小值:eg:客户年龄一般在0-150岁

3.2 正态分布分析

如果数据服从正态分布,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值。

回忆一下初中的知识点,正态分布图,当时老师告诉我们,99.7%的数据都会落在平均值的偏差超过3倍标准差范围之间。

d99982929941afd713c1358bc75e5fe5.jpg

其他的0.3%就作为异常值了。

3.3 箱型图分析

箱线图(Box-plot)又称盒须图、盒式图或箱形图,是一种用作显示一组数据分散情况资料的统计图,在数据分析中经常被使用到,可以被用于异常值的检测。

24beb3365e159e9a15063ae45e7f768d.jpg

3.3.1下四分位数Q1确定四分位数的位置。Qi所在位置=i(n+1)/4,其中i=1,2,3。n表示序列中包含的项数。

根据位置,计算相应的四分位数。

3.3.2 中位数(第二个四分位数)Q2

中位数,即一组数由小到大排列处于中间位置的数。若序列数为偶数个,该组的中位数为中间两个数的平均数。

3.3.3 上四分位数Q3

计算方法同下四分位数。

3.3.4 上限

上限是非异常范围内的最大值。

首先要知道什么是四分位距如何计算的?

四分位距IQR=Q3-Q1,那么上限=Q3+1.5IQR

3.3.5 下限

下限是非异常范围内的最小值。

下限=Q1-1.5IQR

4. 一致性

不一致数据主要发生在数据集成的过程中,可能是由于被挖掘数据是来自于从不同的数据源、对于重复存放的数据未能进行一致性更新造成的。

例如两张存储用户电话的表只有一张更新。

5. 实例

数据

餐饮日销额数据

时间

2015/2/10

2015/2/11

2015/2/12

2015/2/13

2015/2/14

销售额(元)

2742.8

2014.3

865

3036.8

首先,我们用describe来查看数据的基本情况

importpandasaspd

dinnersale='dinnersale.xlsx'#数据文件地址

data=pd.read_excel(dinnersale,index_col=u'时间')#读取数据,指定索引列

describe=data.describe()#查看数据的基本情况

print(describe)

结果如下

be986838a7a19d3ec4ec1e0f4227660e.png

其中count是非空值数,通过len(data)可以知道数据记录为多少条,这样就得到了缺省值数。

此外,提供的基本参数还有平均值(mean),标准差(std),最小值(min),1/4位数(25%),1/2位数(50%),3/4位数(75%)及最大值(max)。这样其实方便了大家使用箱型图排除异常值。

importpandasaspd

importmatplotlib.pyplotasplt

dinnersale='dinnersale.xlsx'

data=pd.read_excel(dinnersale,index_col=u'时间')

plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签

plt.rcParams['axes.unicode_minus']=False#用来正常显示负号

plt.figure()#建立图像

p=data.boxplot(return_type='dict')#画箱线图,直接使用DataFrame的方法

#要指定返回类型否则下面下标获取不到

#'fliers'即为异常值的标签

x=p['fliers'][0].get_xdata()

y=p['fliers'][0].get_ydata()

y.sort()#从小到大排序,该方法直接改变原对象

#annotate添加注释

# 第一个参数是注释的内容

# xy设置箭头尖的坐标

# xytext设置注释内容显示的起始位置

foriinrange(len(x)):

ifi>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()#展示箱线图

图片如下,异常值就是上下限外的(还需要结合实际情况)

23d0334d95f719cca2fe5ce2023d3b00.png

Tips:

安装matplotlib包

python -m pip install -U matplotlib

数据质量分析很重要,记得老师说过数据70%在于前期的处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值