Python 数据帧中的百分位排序。熊猫
我有一个包含数千行和数百列的大型数据框。每一行都是一个日期,在每一列中我都有该日期的数据。 我将举一个较小的例子:Python 数据帧中的百分位排序。熊猫,python,pandas,percentile,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%。 例如,A中2012的百分位数最高,但只有2014的中间值。 我认为必
DATE A B C
2012 73,5 27,2 19
2013 19,5 22,2 33
2014 33 40 19,56
我想获得给定日期所有列的百分位排名。
因此,每列都有百分位值,而不是它的数字,其中95%表示该值位于前5%。
例如,A中2012的百分位数最高,但只有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
由于某些原因,由于操作数的形状不同,我得到了一个ValueError。我有673行,75列,我想我只需要设置一个循环,从数据帧中获取每一行,并将每个条目除以这一行的最大值。max和div的轴参数是关键的。此外,这仅适用于数字列。我认为max会放弃其他人,因此会出现错误。您可以在执行max/div之前执行此操作。