在阅读StackOverflow 中相关问题的答案时,我看到了 matplotlib中用于计算 wiskers 位置和检测异常值的代码:
# get high extreme
iq = q3 - q1
hi_val = q3 + whis * iq
wisk_hi = np.compress(d <= hi_val, d)
if len(wisk_hi) == 0 or np.max(wisk_hi) < q3:
wisk_hi = q3
else:
wisk_hi = max(wisk_hi)
现在,这else
部分非常有意义 - 根据Tukey boxplots的规范,我们在上四分位数的 1.5 IQR 内找到了最高基准。确实,这是-下面max(wish_hi)
是最大的数据条目。 Q3+1.5*IQR
or
然而,我不明白的部分。if len(wisk_hi) == 0
翻译为...
if we find no elements below the `hi_val` ...
这个条件如何适用?Q3 是通过在中位数上拆分数据,然后取上半部分的中位数,然后在其上加上 1.5*IQR 找到的- 怎么可能没有低于这个值的数据?
如果这是关于一个空数据集,那么第二部分or
也没有意义(因为 Q3 或 IQR 没有数据就没有意义)。
可能遗漏了一些明显的东西 - 帮助?