首页 > 解决方案 > python / pandas中多列的百分位数范围输出

问题描述

我有一个数据集 df,我想在其中展示列中给定值的第 60、第 70 和第 90 个百分位值

数据

type    value

Hello   1
Hello   2
Hello   3
Hello   5
Hello   5
Hello   6
Hello   8
Hello   8
Hello   3
OK      1
OK      1
OK      2
OK      2

期望的

type    0.6     0.7    0.9  

Hello   5       5.6    8
OK      1.8     2      2
    

正在做

我的方法是利用numpy中的百分位函数:

import numpy as np

print np.percentile(df,60)
print np.percentile(df,70)
print np.percentile(df,90)

这可行,但是,输出单独显示这些值,并且不维护数据集中的其他列

标签: pythonpandasnumpy

解决方案


>>> df
     type  value
0   Hello      1
1   Hello      2
2   Hello      3
3   Hello      5
4   Hello      5
5   Hello      6
6   Hello      8
7   Hello      8
8   Hello      3
9      OK      1
10     OK      1
11     OK      2
12     OK      2

>>> df.groupby("type").quantile([0.6, 0.7, 0.9]).unstack(1)
      value
        0.6  0.7  0.9
type
Hello   5.0  5.6  8.0
OK      1.8  2.0  2.0

推荐阅读