如何在 Python 中打印箱线图的异常值?

How can I print the outliers of a Boxplot in Python?

我想打印我的箱线图的异常值(绿点),但我不知道如何: boxplot

这是我的代码:

flierprops = dict(marker='o', markerfacecolor='green', markersize=2,
                  linestyle='none')

plt.boxplot(derivation, vert=False, flierprops=flierprops)

谢谢你的帮助!

IIUC:
在胡须(上部和下部)之外有 (n) 个点,您希望从数据集中打印(显示)这些点的值。

背景:

通常,离群值可以可视化为箱线图上下须线之外的值。可以通过多种方式定义上部和下部晶须。

一种方法是:

Lower: Q1 - k * IQR

Upper: Q3 + k * IQR

其中 k(通常)定义为 1.5,IQR(内四分位数范围)为 defined as:

IQR = Q3 - Q1 = qn(0.75) - qn(0.25)

示例:

以下数据集可以可视化为:

array([ 65.46329369,  91.64897781,  96.85666088,  60.18189851,
        30.53996122,  55.12666144,  63.00161253,  29.97804178,
        ...,
        47.98458963,  37.69556267,  44.26758617,  58.60869412,
        150.        , 155.        , 160.        , 165.        ,
        170.        , 175.        ])

要提取异常值(我们将重点关注较高的异常值),我们首先需要知道 IQR,可以使用以下方法找到:

pandas.Series(data).describe()

输出:

count    106.000000
mean      62.569111
std       29.698729
min        0.000000
25%       46.934198
50%       57.002615
75%       69.516237
max      175.000000

确定粗略的晶须值:

iqr = (69.516 - 46.934)
upper = 69.516 + (iqr*1.5)
lower = 46.934 - (iqr*1.5)

>>> iqr, upper, lower
>>> (22.582, 103.389, 13.06)

提取(检查)上异常值:

data[data > upper]

>>> array([150., 155., 160., 165., 170., 175.])