详解如何利用Python处理异常值
- 更新时间:2020-03-13 11:57:10
- 编辑:后良才
前言
异常值是指样本中的个别值,也称为离群点,其数值明显偏离其余的观测值。常用检测方法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所示。
如下数据:
日期 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的运算符。举个简单的例子 4 +5 = 9 。 例子中,4 和 5 被称为操作数,+ 称为运算符。
发布时间:2020-03-24
-
python能学什么
python可以学习WEB开发,网络编程,爬虫开发,云计算开发,人工智能,游戏开发,金融分析,科学运算,自动化运维。
发布时间:2019-06-27
-
Python高性能编程
本书围绕如何进行代码优化和加快实际应用的运行速度进行详细讲解,深刻理解Python的实现,让你的Python代码运行的更快
大小:16.9 MBPython编程电子书
-
零起点Python足彩大数据与机器学习实盘分析
大小:122.4 MBPython数据分析电子书
-
物联网Python开发实战
本书在介绍物联网的组成、典型架构和应用的基础上,采用实例代码讲述python编程基础和应用实例,感兴趣的可以下载学习
大小:80.7 MB物联网电子书
-
父与子的编程之旅:与小卡特一起学Python(含源码)
本书是一本家长与孩子共同学习编程的入门书,以Python语言为例,详尽细致地介绍了Python如何安装、字符串和操作符等程序设计的基本概念,介绍了条件语句、函数、模块等进阶内容,讲解了用
大小:21.5 MB儿童Python电子书
-
Python全栈数据工程师养成攻略(视频)
本书介绍了数据工程和Python语法,随后讲解如何获取和存储数据,并实现简单的静态可视化,帮助读者将学习到关于Web建站的一些基础和进阶知识
大小:129.7 MBPython全栈电子书
-
Python趣味编程入门与实战
将Python程序编写中常必须的基本知识、挑选构造、循环系统构造、大海龟制图、文档和文件夹名称实际操作、时间与時间解决、GUI程序运行、tkinter库绘图图型和制作动画、PyGame手机游戏融为一
大小:98 MBPython趣味编程电子书
-
Python可以这样学
《Python可以这样学》对Python内部工作原理进行了一定深度的剖析,案例代码使用Python 3.5.1实现和Python 3.6.0,适当介绍了Python代码优化、系统编程和安全编程的有关知识,满足不同层次读者的需要,适合作为Python程序员的开发指南。
大小:22 MBPython入门电子书
-
从Python开始学编程
本书以Python为样本,不仅介绍了编程的基本概念,还着重讲解了编程语言的范式(面向过程、面向对象、面向函数),并把编程语言的范式糅在Python 中,让读者不仅学会Python,未来在学习其他
大小:10.5 MBPython编程电子书