Присвоение процентиля каждому значению серии pandas - PullRequest
2 голосов
/ 04 мая 2020

Есть ли прямой нестандартный способ назначить процентиль каждому из значений серии 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]

Однако я очень удивлен, что для этого нет собственного решения (например, qcut, quantile et c ...)

Есть ли явный способ его вычисления?

1 Ответ

4 голосов
/ 04 мая 2020

Вы можете сделать это, используя rank, где опция pct=True отображает ранги в форме percentile.

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
...