假设我有一个重复的系列:
import pandas as pd
ts = pd.Series([1,2,3,4] * 5)
我想计算它的百分等级。 使用多个匹配计算排名总是有点棘手,但我认为我得到了意想不到的结果:
ts.rank(method = 'dense', pct = True)
Out[112]:
0 0.05
1 0.10
2 0.15
3 0.20
4 0.05
5 0.10
6 0.15
7 0.20
8 0.05
9 0.10
10 0.15
11 0.20
12 0.05
13 0.10
14 0.15
15 0.20
16 0.05
17 0.10
18 0.15
19 0.20
dtype: float64
所以我得到百分位数[0.05,0.1,0.15,0.2],其中我猜预期输出可能是[0.25,0.5,0.75,1],即将输出乘以重复值的数量。
我的猜测是,为了计算百分位数,pd.rank只是除以观察数,这对于方法='密集'是错误的。
所以我的问题是:
您是否同意输出是意外/错误
如何获得我的预期输出,即如果我没有任何重复,我将获得的百分位数分配给每个副本 系列?
答案 0 :(得分:0)
我在GithUB上报告了这个问题:https://github.com/pandas-dev/pandas/pull/15639
所有pct = True确实除以nobs,这给方法='密集'提供了意想不到的行为,因此这被视为在下一个主要版本中修复的错误。