我试图创建一些我拥有的数据的箱线图。我首先使用 Excel 绘制它们,但想继续使用 Python 以便能够对它们进行个性化。然而,我惊讶地发现这两个软件包中的箱线图给出的四分位数 Q1 和 Q3 的位置存在差异。
我注意到 Excel 默认使用“独占中位数”计算来显示四分位数。我想知道NumPy中计算百分位数的方法中是否有类似的东西,如果有人知道,这些是如何计算的?我无法在每种方法中找到好的信息。
提前谢谢您,
我尝试使用 NumPy 中的所有分位数计算方法,但无法获得 Excel Exclusive 中位数方法给出的值。
给定一个长度为
a
的已排序数组 n
,我们有:
i / (n + 1)
(i - 1) / (n - 1)
a = [0, 1, 2, 3, 4]
的示例:
独家:
np.arange(1, len(a)+1) / (len(a)+1)
给予array([0.16666667, 0.33333333, 0.5 , 0.66666667, 0.83333333])
0.5
)
包容性:
np.arange(len(a)) / (len(a)-1)
给予array([0. , 0.25, 0.5 , 0.75, 1. ])
1
)
没有 numpy 函数来获取唯一的百分位数,但你可以使用
import statistics
statistics.quantiles(a, method='exclusive')
# [0.5, 2.0, 3.5]