python 异常值检测

python数据清洗-异常点识别与检测

利用图形检测和输出异常值的方法–箱线图法。

箱线图法

箱线图实际就是利用数据的分位数识别其中的异常点,其特征如下图所示:
在这里插入图片描述
下四分位数:25%分位点所对应的值(Q1)
中位数:50%分位点对应的值(Q2)
上四分位数:75%分位点所对应的值(Q3)

上须:Q3+1.5(Q3-Q1)
下须:Q1-1.5(Q3-Q1)
其中Q3-Q1表示四分位差

判断标准: 变量的数据值大于箱线图上须或者小于箱线图的下须,就可以认为这样的数据点为异常值点

在这里插入图片描述在python中可使用matplotlib模块实现箱线图的制作,下面以1700-2009年太阳黑子数量为数据依据,利用箱线图法识别数据中的异常点。具体代码如下:

# -*- coding:utf-8 -*-
#异常值检测
import pandas as pd
import matplotlib.pyplot as plt

sunspots = pd.read_csv('C:\Users\\19047\Desktop\heizi.csv')

#绘制箱线图
plt.boxplot(x = sunspots.counts,
            whis = 1.5,#1.5倍的四分位差
            widths = 0.7,
            patch_artist = True,#填充箱体颜色
            showmeans= True,# 显示均值
            boxprops = {'facecolor':"steelblue"},#箱体填充色
            flierprops = {'markerfacecolor':'red','markeredgecolor':'red','markersize':4},#异常点填充色、边框、大小
            meanprops = {'marker':'D','markerfacecolor':'black','marksize':4},#均值点标记符号、填充色、大小
            medianprops = {'linestyle':'--','color':'orange'},#中位数处的标记符号、填充色、大小
            labels = [''])
plt.show()

# 计算上下四分位数
Q1 = sunspots.counts.quantile(q = 0.25)
Q3 = sunspots.counts.quantile(q = 0.75)

#异常值判断标准, 1.5倍的四分位差 计算上下须对应的值
low_quantile = Q1 - 1.5*(Q3-Q1)
high_quantile = Q3 + 1.5*(Q3-Q1)

# 输出异常值
value = sunspots.counts[(sunspots.counts > high_quantile) | (sunspots.counts < low_quantile)]

print value

在这里插入图片描述
如上图所示,利用matplotlib子模块pyplot中的boxplot函数可以非常方便地绘制箱线图,从图中可知,数据集中至少存在5个异常点,它们均在上须之上,其中数据索引和值输出为;

在这里插入图片描述

  • 12
    点赞
  • 89
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值