数据框中的百分位数排名。熊猫

时间:2015-10-01 18:25:46

标签: python pandas percentile

我有一个包含数千行和数百列的大型数据框。每行都是一个日期,在每列中我都有该日期的数据。 我将做一个较小的例子:

 DATE    A      B     C
 2012    73,5   27,2  19
 2013    19,5   22,2  33
 2014    33     40    19,56

我希望获得给定日期的所有列的百分位数排名。 因此,每列都将具有百分位值而不是其数字,其中95百分位意味着该值位于前5%。 例如,2012年的A将具有最高的百分位评级,但它仅在2014年的中间位置 我认为必须有一个简单的函数,如pandas.percentilepandas.rank

1 个答案:

答案 0 :(得分:2)

您可以除以每年的最大值:

In [11]: df1 = df.set_index("DATE")

In [12]: df1
Out[12]:
         A     B      C
DATE
2012  73.5  27.2  19.00
2013  19.5  22.2  33.00
2014  33.0  40.0  19.56

In [13]: df1.max(1)
Out[13]:
DATE
2012    73.5
2013    33.0
2014    40.0
dtype: float64

In [14]: df1.div(df1.max(1), axis=0)
Out[14]:
             A         B         C
DATE
2012  1.000000  0.370068  0.258503
2013  0.590909  0.672727  1.000000
2014  0.825000  1.000000  0.489000