1.概述

boxplot是在1977年由美国的统计学家约翰·图基(John Tukey)发明的,其包含五个基本元素:

  • 最小值(Q0,第0四分位): 去除离群点后的最小数值
  • 最大值(Q4): 去除离群点后的最大数值
  • 中位数: 样本中所有数值由小到大排列后第50%的数字
  • 第一四分位数 (Q1): 又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
  • 第三四分位数 (Q3): 又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。

除了上述5个基本元素,四分位距(InterQuartile Range,IQR)也常被用于boxplot的构造,其定义为第三四分位数与第一四分位数的差值,即 IQR=Q3-Q1。

boxplot的图形如下所示,其由箱(box)与须(whiskers )构成,其中,箱的上下边界由Q3、Q1构成,箱的中间用中位数隔开。须(whiskers )的上下边界则有多种变体

一种标准的须定义方式为:数据集中的最大最小值;
另外也有:采用上限=Q3+1.5IQR,下限=Q1-1.5IQR,作为须的上下边界,在该边界外的点视为异常值。
此外还有例如如下几种须的边界定义方式:

  • The minimum and the maximum value of the data set
  • One standard deviation above and below the mean of the data set
  • The 9th percentile and the 91st percentile of the data set
  • The 2nd percentile and the 98th percentile of the data set
    在这里插入图片描述

2.计算

前提:对数据进行排序

设数据长度为n

  1. 中位数Q2:就是一般的统计意义上的中位数计算(n为奇数取中间,n为偶数取中间两值的平均值)
  2. 第一四分位数Q1: 计算第一四分位置pos,再计算第一四分位数值。其中,第一四分位位置的计算方式并无统一标准,但通常有两种计算方式:方式一 p o s = 1 + n − 1 4 pos=1+\frac{n-1}{4} pos=1+4n1方式二: p o s = n + 1 4 pos=\frac{n+1}{4} pos=4n+1。四分位数值计算为简单的线性插值。
  3. 第三四分位数Q3: 计算第三四分位置pos,再计算第三四分位数值。其中,第三四分位位置的计算方式并无统一标准,但通常有两种计算方式:方式一 p o s = 1 + 3 ∗ ( n − 1 ) 4 pos=1+\frac{3*(n-1)}{4} pos=1+43(n1)方式二 p o s = 3 ( n + 1 ) 4 pos=\frac{3(n+1)}{4} pos=43(n+1)。四分位数值计算为简单的线性插值。

3.例子(以方式一为例):

数据为:num=[1,2,3,4,5,6,7,8],数据长度n=8

  • 中位数Q2=(num[4]+num[5])/2=(4+5)/2=4.5
  • 第一四分位数Q1: p o s = 1 + n − 1 4 = 2.75 pos=1+\frac{n-1}{4}=2.75 pos=1+4n1=2.75; Q 1 = n u m [ 2 ] + 0.75 ∗ ( n u m [ 3 ] − n u m [ 2 ] ) = 2 + 0.75 ∗ ( 2 − 1 ) = 2.75 Q1 = num[2]+0.75*(num[3]-num[2]) =2+0.75*(2-1)=2.75 Q1=num[2]+0.75(num[3]num[2])=2+0.75(21)=2.75
  • 第三四分位数Q3: p o s = p o s = 1 + 3 ∗ ( n − 1 ) 4 = 6.25 pos=pos=1+\frac{3*(n-1)}{4}=6.25 pos=pos=1+43(n1)=6.25; Q 3 = n u m [ 6 ] + 0.25 ∗ ( n u m [ 7 ] − n u m [ 6 ] ) = 6 + 0.25 ∗ ( 7 − 6 ) = 6.25 Q3= num[6]+0.25*(num[7]-num[6]) =6+0.25*(7-6)=6.25 Q3=num[6]+0.25(num[7]num[6])=6+0.25(76)=6.25

代码:
中位数、第一四分位数Q1、第三四分位数Q3,计算过程如上所示,pandas中须的展示为:利用Q3+1.5IQR、Q1-1.5IQR确定异常值,将剩余数值中的最大最小值作为须得上下界:

import pandas as pd
num =[1,2,3,4,5,6,7,8]
df = pd.DataFrame(num)
boxplot = df.boxplot()
print(df.describe())

在这里插入图片描述


import pandas as pd
num =[-5,2,3,4,5,6,7,13]
df = pd.DataFrame(num)
boxplot = df.boxplot()
print(df.describe())

在这里插入图片描述

参考:wiki

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐