是否有直接使用的现成方法将百分位数分配给熊猫系列的每个值?
我正在通过排名和重新调整比例来实现此计算,例如:
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
等)
有明确的计算方法吗?
答案 0 :(得分:3)
您可以使用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