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,再计算第一四分位数值。其中,第一四分位位置的计算方式并无统一标准,但通常有两种计算方式:方式一:pos=1+n−14pos=1+\frac{n-1}{4}pos=1+4n−1​;方式二:pos=n+14pos=\frac{n+1}{4}pos=4n+1​。四分位数值计算为简单的线性插值。
  3. 第三四分位数Q3: 计算第三四分位置pos,再计算第三四分位数值。其中,第三四分位位置的计算方式并无统一标准,但通常有两种计算方式:方式一:pos=1+3∗(n−1)4pos=1+\frac{3*(n-1)}{4}pos=1+43∗(n−1)​;方式二:pos=3(n+1)4pos=\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: pos=1+n−14=2.75pos=1+\frac{n-1}{4}=2.75pos=1+4n−1​=2.75;Q1=num[2]+0.75∗(num[3]−num[2])=2+0.75∗(2−1)=2.75Q1 = num[2]+0.75*(num[3]-num[2]) =2+0.75*(2-1)=2.75Q1=num[2]+0.75∗(num[3]−num[2])=2+0.75∗(2−1)=2.75
  • 第三四分位数Q3:pos=pos=1+3∗(n−1)4=6.25pos=pos=1+\frac{3*(n-1)}{4}=6.25pos=pos=1+43∗(n−1)​=6.25;Q3=num[6]+0.25∗(num[7]−num[6])=6+0.25∗(7−6)=6.25Q3= num[6]+0.25*(num[7]-num[6]) =6+0.25*(7-6)=6.25Q3=num[6]+0.25∗(num[7]−num[6])=6+0.25∗(7−6)=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

【数据处理】箱线图(boxplot)的绘制相关推荐

  1. 箱线图怎么判断异常值_原创【六西格玛工具解读】02——箱线图(Boxplot)

    为方便从事质量工作的小伙伴系统了解相关管理工具,小编整理出六西格玛工具系列的应用解读.旨在相关爱好者交流探讨,也可供报考六西格玛黄带.绿带或黑带的朋友参考.因个人水平有限,难免存在疏忽和错误,还请各位 ...

  2. 【MATLAB】进阶绘图 ( Boxplot 箱线图 | boxplot 函数 | Error Bar 误差条线图 | errorbar 函数 )

    文章目录 一.Boxplot 箱线图 1.boxplot 函数 2.代码示例 二.Error Bar 误差条线图 1.errorbar 函数 2.代码示例 一.Boxplot 箱线图 1.boxplo ...

  3. java boxplot_箱线图(boxplot)简介与举例

    直观地识别数据集中的异常值(查看离群点). 判断数据集的数据离散程度和偏向(观察盒子的长度,上下隔间的形状,以及胡须的长度). 实例: 12位商学院毕业生月起薪的样本在这里按升序重复如下. 2710 ...

  4. 箱线图boxplot

    1 主要函数 1.1 boxplot pyplot中绘制箱线图的函数为boxplot,其语法格式如下. matplotlib.pyplot.boxplot(x,notch=None,sym=None, ...

  5. matlab 画箱线图boxplot简单用法

    代码示例: data1=rand(5,1);%列向量 data2=rand(5,1);%列向量 data3=rand(5,1);%列向量 data=[data1,data2,data3]; boxpl ...

  6. Matlab箱线图Boxplot横坐标x轴设置

    修改横坐标 数组 X (6列) 1. 修改横坐标标签 boxplot(X, 'Labels', {'40 R-L', '40 L-R', '50 R-L', '50 L-R', '60 R-L', ' ...

  7. matlab横坐标轴设置,Matlab箱线图Boxplot横坐标x轴设置

    修改横坐标 数组 X (6列) 1. 修改横坐标标签 boxplot(X, 'Labels', {'40 R-L', '40 L-R', '50 R-L', '50 L-R', '60 R-L', ' ...

  8. openpyxl 绘制饼形图_好享学丨快速上手Pythonmatplotlib 箱线图绘制,学术人必备

    好享学是高下制图推出的关于数据可视化经验分享栏目,我们将定期与您分享各界优秀人士的制图经验,一同学习. 01. 引言 箱线图(Boxplot)  是一种用作显示一组数据分散情况资料的统计图表,本期推文 ...

  9. matlab怎么画二维热力图_[原创]Day3.箱线图和热力图的绘制

    使用Matplotlib和Seaborn进行绘制箱线图和热力图. 箱线图 箱线图(boxplot)又称盒式图,可以显示数据的分散情况,由五个数值点组成:最大值(max)-上界.最小值(min)-下界. ...

  10. python boxplot 多组_Matlab boxplot for Multiple Groups(多组数据的箱线图)

    由于matlab具有强大的计算功能,用其统计数据功能优点显而易见,这里分享使用matlab中的boxplot的一些技巧,供大家参考. 命令 格式如下 :产生矩阵X的每一列的盒图和"须&quo ...

最新文章

  1. 如何设置电脑自动锁屏_如何把视频设置为 iPhone 动态锁屏壁纸?
  2. 谷歌参展攻略!AI皮影戏、3D作画、与AI共舞...嗨翻魔都(附视频)
  3. 科学家打造全套人工神经系统 帮助瘫痪病人重新控制身体
  4. URAL 1721 Two Sides of the Same Coin(二分图匹配,输出匹配对象)
  5. 在靶场测试ICMP隧道
  6. matlab 回路最优,数学建模常用Matlab/Lingo/c代码总结系列——hamilton回路
  7. RDD持久化(缓存)
  8. 什么样的公司值得加入?
  9. Google Adsense的技巧、诀窍和秘密
  10. JavaScript合并两个有序数组
  11. torch.max()及其参数探究/torch.max()返回的索引是什么意思
  12. Ubuntu中编译linux内核后使用make menuconfig报错的解决办法
  13. php 重命名中有斜杠,php如何去除转义字符中的反斜杠
  14. 小学生都能看懂,彻底解决环境搭建难题,一步一截图,再无VMware网络难题
  15. GitHub 上一款全能高速下载工具!堪比某度的会员
  16. 赛维安讯LiveCloud直播云服务介绍
  17. 划水摸鱼的时候写一篇自己是怎么划水摸鱼的
  18. python控制软件操作流程_python入门篇之介绍和流程控制(一)
  19. Java正则表达式校验邮箱和手机号
  20. iOS开发中,如何防止Crash(闪退,崩溃)?

热门文章

  1. 苹果地图(MapKit)总结
  2. CentOS服务器网络ping不通
  3. php 下载完成后删除文件
  4. PCB设计笔记-AD(四)-AD PCB 根据板外形铺铜 异形板自动铺铜
  5. mysql 新建database_MySQL创建数据库(CREATE DATABASE语句)
  6. Word2010页眉页脚设置教程
  7. Python学习笔记-WXPY初识
  8. 课件学习验证/多计时器/<cover-view>使用/节流解决撞循环/video组件全屏踩坑(存档)
  9. eclipse调试时设置断点不起作用问题。
  10. float强转int