python箱线图异常点查询

我们通过箱线图可以发现数据大致分布情况,一幅箱线图往往包含以下几个元素。

上下界,上下四分位点,中位数和离群点。

而我们定义离群点为[ Q_{L}-1.5IQR,Q_{U}+1.5IQR ]区间外的点。

Q_{L}:下四分位点

Q_{U}:上四分位点

IQR:上下四分位点的距离

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]  # windows系统
plt.rcParams['axes.unicode_minus']=False      #正常显示符号
age= [42,54,42,36,46,33,64,-12,63,44,34,42,124,94,-32,56,45,42,1]
age=pd.Series(age)

plt.figure(figsize=(12,4))
box=plt.boxplot(age)
plt.title('小区年龄箱线图')

可以看到箱线图出现了离群点,接下来我们需要找到这些离群点。

plt.figure(figsize=(12,4))
box=plt.boxplot(age)
plt.title('小区年龄箱线图')
x=box['fliers'][0].get_xdata()   #查询离群点的横坐标
y=box['fliers'][0].get_ydata()   #查询离群点的纵坐标

for i in range(len(y)):
    plt.annotate(y[i],xy=(x[i],y[i]),xytext=(x[i]+0.05,y[i]),color='red')

 

通过fliers标注离群点的位置,再通过annotate赋予对应的纵坐标(如果离群点很多则需要自行调整文本的位置)

我们发现离群点一共有5个,显然负数年龄和124岁高龄是不合理的,需要删除,至于是否删除其他点因题而异。

另外,箱线图一般需要跟直方图,核密度图,描述性统计等综合分析,才能看清楚数据分布趋势。 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值