为 pandas 系列的每个值分配百分位数
Assigning percentile to each value of pandas series
是否有直接开箱即用的方法来为 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
等...)
有明确的计算方法吗?
您可以使用 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
是否有直接开箱即用的方法来为 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
等...)
有明确的计算方法吗?
您可以使用 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