考虑具有以下百分位数的系列:
> df['col_1'].describe(percentiles=np.linspace(0, 1, 20))
count 13859.000000
mean 421.772842
std 14665.298998
min 1.201755
0% 1.201755
5.3% 1.430695
10.5% 1.438417
15.8% 1.466462
21.1% 1.473050
26.3% 1.500834
31.6% 1.512218
36.8% 1.542935
42.1% 1.579845
47.4% 1.647162
50% 1.690612
52.6% 1.749047
57.9% 1.955589
63.2% 2.344475
68.4% 3.075641
73.7% 4.466094
78.9% 8.410964
84.2% 14.998738
89.5% 41.363612
94.7% 162.865079
100% 1511013.790233
max 1511013.790233
Name: col_1, dtype: float64
我想在上面的计算中得到另一列col_2
,其中每行都被指定为百分位数。
我怎么能在熊猫中做到这一点?
答案 0 :(得分:8)
df2 = pd.DataFrame(range(1000))
df2.columns = ['a1']
df2['percentile'] = pd.qcut(df2.a1,100, labels=False)
或省略标签以查看范围
请注意,在Python 3中,使用Pandas 0.16.2(截至今天的最新版本),您需要使用list(range(1000))
代替range(1000)
来实现上述功能。