在默认设置的 python-pandas 箱线图中,红色条是中 位数,方框表示第 25 和第 75 个四分位数,但在这种情况下,胡须到底意味着什么?找出确切定义的文档在哪里(找不到)?
示例代码:
df.boxplot()
示例结果:
Pandas 只是包装了 matplotlib 中的 boxplot 函数。matplotlib 文档详细定义了胡须:
whis:浮点数、序列或字符串(默认 = 1.5)
作为浮点数,确定胡须的范围超出第一和第三四分位数。换句话说,如果 IQR 是四分位距 (Q3-Q1),则上须线将延伸到小于 Q3 + whis*IQR 的最后一个数据。类似地,下须线将延伸到大于 Q1 - whis*IQR 的第一个数据。除了胡须,数据被认为是异常值,并被绘制为单个点。
Matplotlib(和 Pandas)还为您提供了很多选项来更改胡须的默认定义:
将此设置为不合理的高值以强制胡须显示最小值和最大值。或者,将其设置为百分位数的升序(例如,[5, 95])以将须线设置在数据的特定百分位数。最后,whis 可以是字符串“范围”,以强制胡须达到数据的最小值和最大值。
下面的图表从stats.stackexchange answer说明了这一点。请注意,如果您未whis
在 Pandas 中提供关键字,则 k=1.5。
你在你的问题中提到红线是平均值 - 它实际上是中位数。
从上面常涉提到的matplotlib链接:
该框从数据的下四分位数延伸到上四分位数,中间有一条线。晶须从盒子延伸以显示数据的范围。飞行点是那些超过胡须末端的点。
我没有进行实验,但有一个“平均线”选项可能会将线置于平均线。
来自Amelio Vazquez-Reina在 matplotlib 箱形图中的回答:标记和异常值:
异常值(
+
箱线图中的标记)只是下方宽边之外[(Q1-1.5 IQR), (Q3+1.5 IQR)]
的点。
仅供参考:对箱须图中栅栏的位置感到困惑
这些在matplotlib文档中指定。胡须是四分位数范围的一些倍数(默认为 1.5)。