gpt4 book ai didi

python - 为什么 Scipy 的 percentileofscore 返回的结果与 Excel 的 PERCENTRANK.INC 不同?

转载 作者:太空宇宙 更新时间:2023-11-04 00:24:41 25 4
gpt4 key购买 nike

我在使用 scipy 的 percentileofscore 函数时遇到了一个奇怪的问题。

在 Excel 中,我有以下行:

0
1
3
3
3
3
3
4
6
8
9
11
11
11
12
45

接下来,我有一列计算每行的 percentilerank.inc:

=100 * (1-PERCENTRANK.INC($A:$A,A1))

结果如下:

100
94
87
87
87
87
87
54
47
40
34
27
27
27
7
0

然后我获取相同的数据并将它们放入数组中并使用 scipy 计算 percentilofscore

100 - stats.percentileofscore(array, score, kind='strict')

然而,我的结果如下:

100
94
88
88
88
88
88
56
50
44
38
31
31
31
13
7

以下是并排显示差异的结果:

Data    Excel   Scipy
0 100 100
1 94 94
3 87 88
3 87 88
3 87 88
3 87 88
3 87 88
4 54 56
6 47 50
8 40 44
9 34 38
11 27 31
11 27 31
11 27 31
12 7 13
45 0 7

结果显然存在一些差异。其中一些相差 4 位数。

关于如何模仿 Excel 的 PERCENTILERANK.INC 函数有什么想法吗?

我正在使用 scipy 1.0.0numpy 1.13.3python 3.5.2Excel 2016

编辑如果我不包括最大值 45,数字就会跳动。这可能是 PERCENTILERANK.INC 的工作原理吗?

最佳答案

Excel 函数 PERCENTILERANK.INC 排除了最大值(在我的例子中是 45)。这就是为什么它像 scipy 那样显示 0 而不是 6.25

为了纠正这个问题,我修改了函数以删除数组的最大值,如下所示:

array = list(filter(lambda a: a != max(array), array))

return 100 - int(stats.percentileofscore(array, score, kind='strict'))

这给了我正确的结果,并且我的所有其他测试都通过了。

基于 Brian Pendleton 评论的附加信息。这是解释 PERCENTILERANK.INC 的 Excel 函数的链接以及其他排名功能。谢谢。

关于python - 为什么 Scipy 的 percentileofscore 返回的结果与 Excel 的 PERCENTRANK.INC 不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47931749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com