即使 python 中的相同值也是唯一的百分位数
unique percentile even for same value in python
即使 Python
中的相同值,我也希望获得唯一的百分位数
例如,以下情况给出了预期的输出。
案例一
import pandas as pd
s1 = pd.Series([1,2,3,4])
s1.rank(pct=True)
案例 1 输出 - [0.25, 0.5, 0.75, 1]
即使输入序列为 [2, 2, 2, 4]
,我也希望输出相同。然而,这里的输出是 [0.5, 0.5, 0.5, 1]
。我不介意任何一个输出。
[0.25, 0.5, 0.75, 1]
[0.5, 0.25, 0.75, 1]
[0.25, 0.75, 0.5, 1]
如果有办法实现,请告诉我。
没有简单的函数可以做到这一点。虽然我明白你想做什么,但这不是百分位分数。事实上,您在这里显示的是百分比排名,与百分位数不同。
要获得您想要的功能,我相信您必须自己分组和计算值。
Rank 有一个参数 method
,默认为 'average',它会给出您所看到的结果。让我们将其更改为 'first'
.
s1 = pd.Series([2,2,2,4])
s1.rank(pct=True,method='first')
输出:
0 0.25
1 0.50
2 0.75
3 1.00
dtype: float64
即使 Python
中的相同值,我也希望获得唯一的百分位数例如,以下情况给出了预期的输出。
案例一
import pandas as pd
s1 = pd.Series([1,2,3,4])
s1.rank(pct=True)
案例 1 输出 - [0.25, 0.5, 0.75, 1]
即使输入序列为 [2, 2, 2, 4]
,我也希望输出相同。然而,这里的输出是 [0.5, 0.5, 0.5, 1]
。我不介意任何一个输出。
[0.25, 0.5, 0.75, 1]
[0.5, 0.25, 0.75, 1]
[0.25, 0.75, 0.5, 1]
如果有办法实现,请告诉我。
没有简单的函数可以做到这一点。虽然我明白你想做什么,但这不是百分位分数。事实上,您在这里显示的是百分比排名,与百分位数不同。
要获得您想要的功能,我相信您必须自己分组和计算值。
Rank 有一个参数 method
,默认为 'average',它会给出您所看到的结果。让我们将其更改为 'first'
.
s1 = pd.Series([2,2,2,4])
s1.rank(pct=True,method='first')
输出:
0 0.25
1 0.50
2 0.75
3 1.00
dtype: float64