利用Python进行异常值分析实例代码


Posted in Python onDecember 07, 2017

前言

异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值。常用检测方法3σ原则和箱型图。其中,3σ原则只适用服从正态分布的数据。在3σ原则下,异常值被定义为观察值和平均值的偏差超过3倍标准差的值。P(|x−μ|>3σ)≤0.003,在正太分布假设下,大于3σ的值出现的概率小于0.003,属于小概率事件,故可认定其为异常值。

异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,对结果会产生不良影响;重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。

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

(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所示。

利用Python进行异常值分析实例代码

如下数据:

日期 2015/2/10 2015/2/11 2015/2/12 2015/2/13 2015/2/14

销量额 2742.8 3014.3 865 3036.8

我们对其进行异常值分析

import pandas as pd

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

import matplotlib.pyplot as plt #导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

plt.figure() #建立图像
p = data.boxplot() #画箱线图,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() #从小到大排序,该方法直接改变原对象

#用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()

结果如下:

利用Python进行异常值分析实例代码

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
一个小示例告诉你Python语言的优雅之处
Jul 04 Python
python列表操作实例
Jan 14 Python
python、java等哪一门编程语言适合人工智能?
Nov 13 Python
Python语言实现百度语音识别API的使用实例
Dec 13 Python
Python实现求数列和的方法示例
Jan 12 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
Jan 23 Python
Python opencv实现人眼/人脸识别以及实时打码处理
Apr 29 Python
python 中pyqt5 树节点点击实现多窗口切换问题
Jul 04 Python
浅谈tensorflow中张量的提取值和赋值
Jan 19 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
Python类型转换的魔术方法详解
Dec 23 Python
python字典与json转换的方法总结
Dec 28 Python
Python3解决棋盘覆盖问题的方法示例
Dec 07 #Python
python实现对excel进行数据剔除操作实例
Dec 07 #Python
Python编程实现使用线性回归预测数据
Dec 07 #Python
机器学习10大经典算法详解
Dec 07 #Python
机器学习的框架偏向于Python的13个原因
Dec 07 #Python
python编程线性回归代码示例
Dec 07 #Python
基于Django的ModelForm组件(详解)
Dec 07 #Python
You might like
php 删除一个数组中的某个值.兼容多维数组!
2012/02/18 PHP
PHP实现通过strace定位故障原因的方法
2018/04/29 PHP
解决laravel groupBy 对查询结果进行分组出现的问题
2019/10/09 PHP
JS将光标聚焦在文本最后的实现代码
2014/03/28 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
js实现鼠标感应向下滑动隐藏菜单的方法
2015/02/20 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
微信小程序 常见问题总结(4058,40013)及解决办法
2017/01/11 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
小程序视频列表中视频的播放与停止的示例代码
2018/07/20 Javascript
Puppeteer环境搭建的详细步骤
2018/09/21 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
python mysqldb连接数据库
2009/03/16 Python
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
菜鸟使用python实现正则检测密码合法性
2016/01/05 Python
python结合API实现即时天气信息
2016/01/19 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
Python入门_浅谈逻辑判断与运算符
2017/05/16 Python
对pandas中iloc,loc取数据差别及按条件取值的方法详解
2018/11/06 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
解决Django删除migrations文件夹中的文件后出现的异常问题
2019/08/31 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
浅谈在django中使用redirect重定向数据传输的问题
2020/03/13 Python
需要知道的CSS3动画技术
2010/01/01 HTML / CSS
HTML5中在title标题标签里设置小图标的方法
2020/06/23 HTML / CSS
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
linux面试相关问题
2013/04/28 面试题
办公室岗位职责
2014/02/12 职场文书
大学生村官演讲稿
2014/04/25 职场文书
2014年专项整治工作总结
2014/11/17 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python