箱型图的具体判读与python例子

本文仅提供具体计算方法,至于具体应用暂时懒得写。

异常值检测-识别离群值

百分位数percentile第k个百分位数是具有如下性质的值x:k%的数据项位于或低于x,中位数就是第50个百分位数

四分位数:Q1 (25th percentile,第(n+3)/4个数), Q3 (75th percentile,第(3n+1)/4个数)

中间四分位数极差/四分位间距(interquartile range,IQR): IQR = Q3 – Q1

孤立点/离群值(outlier):落在至少高于第三个四分位数或低于第一个四分位数1.5×IQR处的值。位于范围外1.5×IQR到3×IQR范围的数值,称作适度离群值(mild outlier)。位于范围外3×IQR以上的数值,称作极端离群值(extreme outlier)。

上下限:上限=min{Q3+1.5IQR,MAX},下限=max{Q1-1.5IQR,MIN}。

换句话说,上下限是忽略掉异常值(包括温和异常值)之后的最大值和最小值。

例1:

 如上图,下边界=5,Q1=7,Q2=8.5,Q3=9,上边界=10,IQR=Q3-Q1=2(即△Q)。适度离群值=3.5,极端离群值=0.5。

例2:

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

prices = [100, 150, 200, 250, 300, 350, 400, 450, 500, 1000]
df = pd.DataFrame(prices, columns=['Price'])
summary_stats = df.describe().transpose()
print(summary_stats)
sns.boxplot(y=prices)
plt.show()

由输出数据可知:总数=10,均值=370,标准差=256.255,Q1=200+(250-200)*25%=212.5,中位数Q2=(300+350)/2=325.0,Q3=400+(450-400)*0.75%=437.5

计算得:

IQR=Q3-Q1=225。

箱型图中对应的五条线依次是:

下限=MIN=100,Q1=212.5,Q2=325.0,Q3=437.5,上限=去掉异常值1000后的最大值=500。

实际数据集:

import pandas as pd
import os

file_path = os.path.join('input', 'Ch3-HousePrice-train.csv')
df_train = pd.read_csv(file_path)

sns.boxplot(df_train['SalePrice'])
plt.show()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值