通过示例了解 Seaborn 箱线图

Understanding Seaborn Boxplot With Examples

我正在尝试使用一些示例数据集来理解 seaborn 箱线图。因此,使用 "tips" 数据集。

tips = sns.load_dataset('tips')

首先使用18个值作为:

tips = tips[0:18]

所需数据集如下:

1    8.77
2    10.27
3    10.33
4    10.34
5    14.78
6    14.83
7    15.04
8    15.42
9    16.29
10   16.99
11   18.43
12   21.01
13   21.58
14   23.68
15   24.59
16   25.29
17   26.88
18   35.26

所需图表如下:

为了更好地理解我自己计算了 Q1、Q2 和 Q3。

Q2(Median): 16.64

Q1 Data:
9 values
[8.77, 10.27, 10.33, 10.34, 14.78, 14.83, 15.04, 15.42, 16.29]
Q1 Median: 14.78

Q3 Data:
9 values
[16.99, 18.43, 21.01, 21.58, 23.68, 24.59, 25.29, 26.88, 35.26]
Q3 Median: 23.68

Min: 8.77
Max: 35.26
Interquartile Range(IQR): 8.9

Five Number Summary:
8.77, 14.78, 16.64, 23.68, 35.26

到目前为止,它看起来非常有说服力,因为五个数字的摘要与图表相匹配。现在我使用以下方法在此数据集中添加一个元素:

tips = tips[0:19]

新值为 16.97 现在很多事情都将发生变化。 更新后的数据集为:

1    8.77
2    10.27
3    10.33
4    10.34
5    14.78
6    14.83
7    15.04
8    15.42
9    16.29
10   16.97
11   16.99
12   18.43
13   21.01
14   21.58
15   23.68
16   24.59
17   25.29
18   26.88
19   35.26

现在图表如下:

看懂这张图什么时候人工计算的,那是没有说服力的。

Q2(Median): 16.97

Q1 Data:
9 values
[8.77, 10.27, 10.33, 10.34, 14.78, 14.83, 15.04, 15.42, 16.29]
Q1 Median: 14.78

Q3 Data:
10 values (Greater than or EQUAL TO MEDIAN add here)
[16.97, 16.99, 18.43, 21.01, 21.58, 23.68, 24.59, 25.29, 26.88, 35.26]
Q3 Median: 22.63

Min: 8.77
Max: 35.26
Interquartile Range(IQR): 7.85

Five Number Summary:
8.77, 14.78, 16.97, 22.63, 35.26

正如许多文章中所讨论的那样,胡须应该是 Q3+1.5*IQRQ1-1.5*IQR,但在这种情况下并没有发生:

1.5*7.85 = 11.775
For whisker with Q3:
22.63 + 11.775 = 34.405

因此,在图的右侧,胡须的最大值应为 34.405,但它在 27 approx 处结束。我需要了解这一点它是如何计算这个值的?或者我在手动计算中犯了任何错误?谢谢

在你的第二个情节中有离群值,这会影响计算。

docs,您可以查看参数 whis:

whis : float, optional

Proportion of the IQR past the low and high quartiles to extend the plot whiskers.

Points outside this range will be identified as outliers.

尝试 whis2.05.010.0、...)的较大值,以便您的数据点始终落入四分位数。

文档字符串有点误导。胡须不会扩展到计算值,但足以包含它们之间的所有点(不是异常值的点)。在这种情况下,它是 26.88,因为 35.26 是异常值(超出 Q3 + 1.5 * IQR)。