假设我有一个重复的系列:
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 只是简单地除以观察次数,这对于 method = 'dense' 是错误的。
所以我的问题是:
您是否同意输出是意外/错误的
我怎样才能获得我的预期输出,即如果我在系列中没有任何重复,我将获得的百分位等级分配给每个重复?