Pandas >>数据排名(rank()函数)
Pandas >>据排名(rank()函数)
axis:0或'index',1或'columns',默认0
method:'average','min','max','first','dense',默认为'average',
如何对具有相同值(即ties)的记录组进行排名:
average:组的平均等级;
min:组中最低的排名;
max:组中最高等级;
first : 按排列顺序排列,依次排列;
dense:类似于 ‘min’,但组之间的排名始终提高1numeric_only:bool;可选对于DataFrame对象,如果设置为True,则仅对数字列进行排名。
na_option:{'keep','top','bottom'},默认为'keep'
如何对NaN值进行排名:
keep:将NaN等级分配给NaN值
top:如果升序,则将最小等级分配给NaN值
bottom:如果升序,则将最高等级分配给NaN值。
ascending:bool,默认为True,元素是否应该按升序排列。
pct:bool,默认为False,是否以百分比形式显示返回的排名。
返回值:返回以数据等级作为值的Series或DataFrame。
一、基本数据
import pandas as pdimport numpy as np data_test= pd.DataFrame([ ['张三',3], ['张三',1], ['张三',4], ['李四',2], ['李四',7], ['李四',], ['王五',6], ['王五',6], ['王五',7], ['王五',8] ], columns =['name','number_1'] )data_test
image.png
二、默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的
data_test['name_num_rank']=data_test.groupby('name')['number_1'].rank() data_test
image.png
当数据正常时,则以大小排名
当数据中有空值时,则空值不进行排名,其他进行排名
当数据相等时,则以平均值排名;
三、method参数为average时,即默认值时。
data_test['rank_average']=data_test.groupby('name')['number_1'].rank(method='average') data_test
image.png
当数据正常时,则以大小排名
当数据中有空值时,则空值不进行排名,其他进行排名
当数据相等时,则以平均值排名;
四、method参数为min时。
data_test['rank_min']=data_test.groupby('name')['number_1'].rank(method='min') data_test
image.png
当数据正常时,则以大小排名
当数据中有空值时,则空值不进行排名,其他进行排名
当数据重复值时,则以最小值排名;
四、method参数为max时。
data_test['rank_max']=data_test.groupby('name')['number_1'].rank(method='max') data_test
image.png
当数据正常时,则以大小排名
当数据中有空值时,则空值不进行排序,其他进行排名
当数据重复值时,则以最大值排名;
五、method参数为first时。
data_test['rank_first']=data_test.groupby('name')['number_1'].rank(method='first') data_test
image.png
当数据正常时,则以大小排名
当数据中有空值时,则空值不进行排名,其他进行排名
当数据重复值时,则以大小排名;
五、method参数为first时,na_option:对na值的处理,默认采用keep策略,即保留为nan不参与排名;na_option=“top”时,则将最小等级分配给NaN值
data_test['rank_na']=data_test.groupby('name')['number_1'].rank(method='first',na_option='top') data_test
image.png
当数据正常时,则以大小排名
当数据中有空值时,则则将最小等级分配给NaN值
当数据重复值时,则以大小排名;
六、method参数为first时,na_option:对na值的处理,na_option=“bottom”时,则将最高等级分配给NaN值。
data_test['rank_na_bottom']=data_test.groupby('name')['number_1'].rank(method='first',na_option='bottom') data_test
image.png
当数据正常时,则以大小排名
当数据中有空值时,则则将最高等级分配给NaN值
当数据重复值时,则以大小排名;
七、method参数为first时,na_option:对na值的处理,na_option=“bottom”时,则将最高等级分配给NaN值。 ascending:默认为True,排序规则为升序排列;当ascending=False时,排序规则为降序排列
data_test['rank_ascending']=data_test.groupby('name')['number_1'].rank(method='first', na_option='bottom', ascending=False)data_test
image.png
当数据正常时,则以大小排名
当数据中有空值时,则将最高等级分配给NaN值
当数据重复值时,则以大小排名;
好啦,就这些了~
作者:默直
链接:https://www.jianshu.com/p/d0369a96b87b