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,则仅对数字列进行排名。
- 如何对具有相同值(即ties)的记录组进行排名:
-
na_option:{'keep','top','bottom'},默认为'keep'
- 如何对NaN值进行排名:
- keep:将NaN等级分配给NaN值
- top:如果升序,则将最小等级分配给NaN值
- bottom:如果升序,则将最高等级分配给NaN值。
- 如何对NaN值进行排名:
ascending:bool,默认为True,元素是否应该按升序排列。
pct:bool,默认为False,是否以百分比形式显示返回的排名。
返回值:返回以数据等级作为值的Series或DataFrame。
一、基本数据
import pandas as pd
import numpy as np
data_test= pd.DataFrame([
['张三',3],
['张三',1],
['张三',4],
['李四',2],
['李四',7],
['李四',],
['王五',6],
['王五',6],
['王五',7],
['王五',8]
],
columns =['name','number_1']
)
data_test
二、默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的
data_test['name_num_rank']=data_test.groupby('name')['number_1'].rank()
data_test
- 当数据正常时,则以大小排名
- 当数据中有空值时,则空值不进行排名,其他进行排名
- 当数据相等时,则以平均值排名;
三、method参数为average时,即默认值时。
data_test['rank_average']=data_test.groupby('name')['number_1'].rank(method='average')
data_test
- 当数据正常时,则以大小排名
- 当数据中有空值时,则空值不进行排名,其他进行排名
- 当数据相等时,则以平均值排名;
四、method参数为min时。
data_test['rank_min']=data_test.groupby('name')['number_1'].rank(method='min')
data_test
- 当数据正常时,则以大小排名
- 当数据中有空值时,则空值不进行排名,其他进行排名
- 当数据重复值时,则以最小值排名;
四、method参数为max时。
data_test['rank_max']=data_test.groupby('name')['number_1'].rank(method='max')
data_test
- 当数据正常时,则以大小排名
- 当数据中有空值时,则空值不进行排序,其他进行排名
- 当数据重复值时,则以最大值排名;
五、method参数为first时。
data_test['rank_first']=data_test.groupby('name')['number_1'].rank(method='first')
data_test
- 当数据正常时,则以大小排名
- 当数据中有空值时,则空值不进行排名,其他进行排名
- 当数据重复值时,则以大小排名;
五、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
- 当数据正常时,则以大小排名
- 当数据中有空值时,则则将最小等级分配给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
- 当数据正常时,则以大小排名
- 当数据中有空值时,则则将最高等级分配给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
- 当数据正常时,则以大小排名
- 当数据中有空值时,则将最高等级分配给NaN值
- 当数据重复值时,则以大小排名;
好啦,就这些了~