为Pandas Series中的每个值分配百分位数

5

有没有直接的方法,可以为pandas系列中的每个值分配百分位数?

我通过排名和重新缩放来实现这种计算,就像这里所示:

values = pd.Series(np.random.normal(0,1,100))
percentiles = values.rank()/values.shape

例如,序列:[0,2,4,2,10,8,6,1] ,应该得到百分位数:[0.125, 0.4375, 0.625, 0.4375, 1.0, 0.875, 0.75, 0.25]。然而,我很惊讶于没有本地解决方案(如qcutquantile等)。是否存在明确的计算方法?
1个回答

8

您可以使用 rank 方法,并开启 pct=True 选项以显示百分比形式的排名。

In [1551]: v = pd.Series([0,2,4,2,10,8,6,1])
In [1556]: v.rank(pct=True)                 
Out[1556]: 
0    0.1250
1    0.4375
2    0.6250
3    0.4375
4    1.0000
5    0.8750
6    0.7500
7    0.2500
dtype: float64

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接