问题描述
我正在尝试根据从 Dynatrace 中提取的数据创建报告。
我每天都在为事件提取数据,在我的 Python Django 报告中,我需要显示第 N 个百分位数据(例如 30th 个百分位,60第 1 个百分位、75个百分位、90个百分位)。
当我尝试从 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。