python 中的第 N 个百分位数与 Dynatrace 结果不同

Nth percentile in python is different from Dynatrace result

我正在尝试根据从 Dynatrace 中提取的数据创建报告。

我每天为事件提取数据,在我的 Python Django 报告中,我需要显示第 N 个百分位数据(例如 30 个百分位, 60th 百分位数, 75th 百分位数, 90th 百分位数).

当我尝试从 Dynatrace 中提取数据时,结果如下: [1563,2731,3586,3966,4174,4971,6055,9175,15667]

对于此列表,当我使用 numpy.percentile 或 df.quantile 时,我得到一个类似于我在 Excel 中使用的公式的百分位值的值 然而,Dynatrace PERCENTILE 函数一起显示不同的值

例如,从 excel 和 Python,我得到第 75 个百分位数为 - 6055 从 Dynatrace 我得到 - 6835

我尝试使用一些在线工具来计算百分位数,但似乎都是 6055。 如果有人能解释一下 DynaTrace 是如何计算这个公式的,那将是一个很大的帮助

提前致谢

这种差异通常是由于 interpolation method,当样本非常小时非常明显。

但是,6055 在您的样本中恰好是第 75 个百分位数:

1563   2731   3586   3966   4174   4971   6055   9175  15667
 0/8    1/8    2/8    3/8    4/8    5/8    6/8    7/8    8/8
   0  0.125   0.25  0.375    0.5  0.625   0.75  0.875      1

因此,Numpy 使用其任何 interpolation methods(线性、较低、较高、最近、中点)产生相同的结果。

Dynatrace 可能正在使用更复杂的插值方法,例如 this one。其中一位作者隶属于 Dynatrace。