我有一个包含数千行和数百列的大型数据框。每一行都是一个日期,每一列都有该日期的数据。 我将做一个较小的例子:
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.percentile
或 pandas.rank
最佳答案
您可以除以每年的最大值:
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
关于python - 数据框中的百分位排名。 Pandas ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32894392/