利用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安装Imaging报错:The _imaging C module is not installed问题解决方法
Aug 22 Python
Python配置文件解析模块ConfigParser使用实例
Apr 13 Python
Python根据区号生成手机号码的方法
Jul 08 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
Django使用Mysql数据库已经存在的数据表方法
May 27 Python
django 将model转换为字典的方法示例
Oct 16 Python
python实现点击按钮修改数据的方法
Jul 17 Python
详解Python修复遥感影像条带的两种方式
Feb 23 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
Python3使用 GitLab API 进行批量合并分支
Oct 15 Python
flask框架中的cookie和session使用
Jan 31 Python
利用Python读取微信朋友圈的多种方法总结
Aug 23 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
js验证表单大全
2006/11/25 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
jQuery性能优化技巧分析
2015/02/20 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
jQuery实用技巧必备(中)
2015/11/03 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
省市区三级联动jquery实现代码
2020/04/15 Javascript
javascript基本数据类型及类型检测常用方法小结
2016/12/14 Javascript
微信小程序 wx.uploadFile无法上传解决办法
2016/12/14 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
AngularJS使用ocLazyLoad实现js延迟加载
2017/07/05 Javascript
详解Vue的computed(计算属性)使用实例之TodoList
2017/08/07 Javascript
详解node+express+ejs+bootstrap构建项目
2017/09/27 Javascript
jQuery实现模糊搜索功能的方法分析
2018/06/29 jQuery
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
Vue简单封装axios之解决post请求后端接收不到参数问题
2020/02/16 Javascript
JS实现网页烟花动画效果
2020/03/10 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
mapboxgl实现带箭头轨迹线的代码
2021/01/04 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中用post、get方式提交数据的方法示例
2017/09/22 Python
Python实现京东秒杀功能代码
2019/05/16 Python
Python项目 基于Scapy实现SYN泛洪攻击的方法
2019/07/23 Python
django基于存储在前端的token用户认证解析
2019/08/06 Python
Django 拆分model和view的实现方法
2019/08/16 Python
使用PyWeChatSpy自动回复微信拍一拍功能的实现代码
2020/07/02 Python
Java里面Pass by value和Pass by Reference是什么意思
2016/05/02 面试题
高校生生产实习自我鉴定
2013/09/21 职场文书
物业保安员岗位职责制度
2014/01/30 职场文书
机动车交通事故协议书
2015/01/29 职场文书
七年级作文之冬景
2019/11/07 职场文书
Python3 如何开启自带http服务
2021/05/18 Python
Java集成swagger文档组件
2021/06/28 Java/Android
悬疑名作《朋友游戏》动画无字ED宣传片 新角色公开
2022/04/13 日漫