我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

画完了箱线图,如果大家对出来的图像还是一脸蒙圈的话,就证明你并不明白箱线图的含义。在本文中,苏南大叔将对箱线图的含义进行解析。理解为什么要画出对应的盒子模型?游离于箱线图外侧的圆圈,究竟是什么意思?

苏南大叔:数据可视化,如何理解箱线图?箱线图各元素表示什么含义? - 箱线图组成元素
数据可视化,如何理解箱线图?箱线图各元素表示什么含义?(图4-1)

苏南大叔的“程序如此灵动”博客,记录苏南大叔的代码经验文章。本文测试环境:win10python@3.12.3。本文中,苏南大叔得出的结论,和网上很多的类似文章的结论存在着较大的差异。欢迎留言质疑。

获得一个箱线图

在上一篇文章里面,一个包含数据类型的dataframe,就可以画出箱线图来。参考文章:

本文将举例非常简单的一组数据,进而探究一下箱线图的画法。数据本身没有任何现实意义,仅仅是随意编写的一组数字。

data = [1, 15, 18, 20, 22, 30, 60]

import matplotlib.pyplot as plt
plt.boxplot(data)
# 控制左侧刻度的精度
import matplotlib.ticker as ticker
ax = plt.gca()
ax.yaxis.set_major_locator(ticker.MultipleLocator(2))
# 控制显示网格
plt.grid(True, linestyle="--")

plt.show()

苏南大叔:数据可视化,如何理解箱线图?箱线图各元素表示什么含义? - 一个临时的龙套数据
数据可视化,如何理解箱线图?箱线图各元素表示什么含义?(图4-2)

箱体理解

这个箱体主要分为以下几个要素:

  • Q2值,50%分位数,中位数,横穿长方形箱体的那条线,不一定竖直居中。取值为所有数据中最中间的那个值,不一定真实存在。主要取决于总个数是否是偶数。
  • Q1值,25%分位数,上四分位数,长方形箱体的最下边。
  • Q3值,75%分位数,下四分位数,长方形箱体的最上边。
  • IQR,四分位数间距,Q3-Q1。【它决定了更大的数里面,谁是最大值,谁是异常值/极端值】
  • min,最小值,最下方的那个小横线。【然而,这里才是误区】。【它不一定和大家通常意识中的min值一致!】【重大误区】它的实际取值是[Q1-1.5*IQR,Q1)中的最小值。
  • max,最大值,最上面的那个小横线。【然而,这里才是误区】。【它不一定和大家通常意识中的max值一致!】【重大误区】它的实际取值是(Q3,Q3+1.5*IQR]中的最大值。
  • 异常值,黑色空心圆。离群值中较接近核心数据的一部分,取值范围是(max,max+3*IQR][min-3*IQR,min)
  • 极端值,黑色实心圆。离群值中远离核心数据的一部分,取值范围是(max+3*IQR,正无穷)(负无穷,min-3*IQR)。【某些版本的箱线图里面存在实心圆】

表格总结如下:

名称别名箱线图元素取值(范围)真实存在误区
Q250%分位数,中位数横穿长方形箱体的那条线所有数据中最中间的值不一定
Q125%分位数,上四分位数长方形箱体的最下边不一定
Q375%分位数,下四分位数长方形箱体的最上边不一定
IQR四分位数间距长方形箱体的垂直高度Q3-Q1
min最小值最下方的那个小横线[Q1-1.5*IQR,Q1)最小值一定
max最大值最上面的那个小横线(Q3,Q3+1.5*IQR]最大值一定
异常值离群值中较接近核心黑色空心圆[min-3IQR,min)或(max,max+3IQR]一定
极端值离群值中较远离核心黑色实心圆(负无穷,min-3IQR)或(max+3IQR,正无穷)一定

也就是说,通常的.describe()计算中的,

  • 最小值和最大值,在箱线图中可能是离群值(异常或极端)。
  • 箱线图中的最大值和最小值,是以中位数/Q3/Q1为基础,1.5倍的IQR为半径内的最大值或者最小值。
  • 极端值,则是以3倍的IQR作为切割点,分为异常值和极端值。

如果数据少的话,画出的箱线图是不完整的。从中位线开始,画箱体,然后画两侧的“耳朵”【也可能只有一边耳朵】,最后才是空心圆和实心圆。

辅助 df.describe()

在于箱线图这件事情来说,df.describe()是个非常好的辅助理解工具。因为它可以提炼出数字类型字段,并且算好它的四分位数。

import pandas as pd
df = pd.DataFrame(data)
print(df.describe())

苏南大叔:数据可视化,如何理解箱线图?箱线图各元素表示什么含义? - 计算结果对比
数据可视化,如何理解箱线图?箱线图各元素表示什么含义?(图4-3)

参考链接:

对比验证计算过程

数据:1,15,18,20,22,30,60
长度7,奇数,第一个数索引0。
Q1,索引位(7-1)*0.25=1.5,位于15和18之间,16.5。
Q2,索引位(7-1)*0.5=3,真实存在,20。
Q3,索引位(7-1)*0.75=4.5,位于22和30之间,26。
IQR,箱体高度。Q3-Q1=9.5,1.5倍是14.25,3倍是28.5。
Q3到Q3+14.25,之间最大值是:30。最大值max,与通常理解不符。
Q1-14.25到Q1,之间最小值是:15。最小值min,与通常理解不符。
Q3+14.25=40.25到Q3+28.5=54.5,存在异常值0个。Q3+28.5=54.5之外,极端值1个,60,黑心圆。
Q1-28.5=-12 到 Q1-14.5= 2,存在异常值1个,1,空心圆。-12之外,极端值0个。

苏南大叔:数据可视化,如何理解箱线图?箱线图各元素表示什么含义? - 箱线图解读demo
数据可视化,如何理解箱线图?箱线图各元素表示什么含义?(图4-4)

然而,从图上面看,并没有出现黑心圆,只有空心圆。目前,暂时认为plot版本的箱线图里面,没有极端值和异常值的说法,统称游离值,用空心圆表示。

结语

看来这个箱线图的理解,还是需要仔细斟酌的。更多苏南大叔的python文章,请参考:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python