Pandas >>據(jù)排名(rank()函數(shù))
axis:0或'index'辱姨,1或'columns',默認(rèn)0
-
method:'average','min'挑随,'max','first'勒叠,'dense'兜挨,默認(rèn)為'average',
- 如何對(duì)具有相同值(即ties)的記錄組進(jìn)行排名:
- average:組的平均等級(jí)眯分;
- min:組中最低的排名拌汇;
- max:組中最高等級(jí);
- first : 按排列順序排列弊决,依次排列噪舀;
- dense:類似于 ‘min’,但組之間的排名始終提高1numeric_only:bool飘诗;可選對(duì)于DataFrame對(duì)象傅联,如果設(shè)置為True,則僅對(duì)數(shù)字列進(jìn)行排名疚察。
- 如何對(duì)具有相同值(即ties)的記錄組進(jìn)行排名:
-
na_option:{'keep'蒸走,'top','bottom'}貌嫡,默認(rèn)為'keep'
- 如何對(duì)NaN值進(jìn)行排名:
- keep:將NaN等級(jí)分配給NaN值
- top:如果升序比驻,則將最小等級(jí)分配給NaN值
- bottom:如果升序该溯,則將最高等級(jí)分配給NaN值。
- 如何對(duì)NaN值進(jìn)行排名:
ascending:bool别惦,默認(rèn)為True狈茉,元素是否應(yīng)該按升序排列。
pct:bool掸掸,默認(rèn)為False氯庆,是否以百分比形式顯示返回的排名。
返回值:返回以數(shù)據(jù)等級(jí)作為值的Series或DataFrame扰付。
一堤撵、基本數(shù)據(jù)
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
image.png
二、默認(rèn)情況下羽莺,rank是通過“為各組分配一個(gè)平均排名”的方式破壞平級(jí)關(guān)系的
data_test['name_num_rank']=data_test.groupby('name')['number_1'].rank()
data_test
image.png
- 當(dāng)數(shù)據(jù)正常時(shí)实昨,則以大小排名
- 當(dāng)數(shù)據(jù)中有空值時(shí),則空值不進(jìn)行排名盐固,其他進(jìn)行排名
- 當(dāng)數(shù)據(jù)相等時(shí)荒给,則以平均值排名;
三刁卜、method參數(shù)為average時(shí)志电,即默認(rèn)值時(shí)。
data_test['rank_average']=data_test.groupby('name')['number_1'].rank(method='average')
data_test
image.png
- 當(dāng)數(shù)據(jù)正常時(shí)蛔趴,則以大小排名
- 當(dāng)數(shù)據(jù)中有空值時(shí)挑辆,則空值不進(jìn)行排名,其他進(jìn)行排名
- 當(dāng)數(shù)據(jù)相等時(shí)夺脾,則以平均值排名;
四茉继、method參數(shù)為min時(shí)咧叭。
data_test['rank_min']=data_test.groupby('name')['number_1'].rank(method='min')
data_test
image.png
- 當(dāng)數(shù)據(jù)正常時(shí),則以大小排名
- 當(dāng)數(shù)據(jù)中有空值時(shí)烁竭,則空值不進(jìn)行排名菲茬,其他進(jìn)行排名
- 當(dāng)數(shù)據(jù)重復(fù)值時(shí),則以最小值排名派撕;
四婉弹、method參數(shù)為max時(shí)。
data_test['rank_max']=data_test.groupby('name')['number_1'].rank(method='max')
data_test
image.png
- 當(dāng)數(shù)據(jù)正常時(shí)终吼,則以大小排名
- 當(dāng)數(shù)據(jù)中有空值時(shí)镀赌,則空值不進(jìn)行排序,其他進(jìn)行排名
- 當(dāng)數(shù)據(jù)重復(fù)值時(shí)际跪,則以最大值排名商佛;
五喉钢、method參數(shù)為first時(shí)。
data_test['rank_first']=data_test.groupby('name')['number_1'].rank(method='first')
data_test
image.png
- 當(dāng)數(shù)據(jù)正常時(shí)良姆,則以大小排名
- 當(dāng)數(shù)據(jù)中有空值時(shí)肠虽,則空值不進(jìn)行排名,其他進(jìn)行排名
- 當(dāng)數(shù)據(jù)重復(fù)值時(shí)玛追,則以大小排名税课;
五、method參數(shù)為first時(shí)痊剖,na_option:對(duì)na值的處理韩玩,默認(rèn)采用keep策略,即保留為nan不參與排名邢笙;na_option=“top”時(shí)啸如,則將最小等級(jí)分配給NaN值
data_test['rank_na']=data_test.groupby('name')['number_1'].rank(method='first',na_option='top')
data_test
image.png
- 當(dāng)數(shù)據(jù)正常時(shí),則以大小排名
- 當(dāng)數(shù)據(jù)中有空值時(shí)氮惯,則則將最小等級(jí)分配給NaN值
- 當(dāng)數(shù)據(jù)重復(fù)值時(shí)叮雳,則以大小排名;
六妇汗、method參數(shù)為first時(shí)帘不,na_option:對(duì)na值的處理,na_option=“bottom”時(shí)杨箭,則將最高等級(jí)分配給NaN值寞焙。
data_test['rank_na_bottom']=data_test.groupby('name')['number_1'].rank(method='first',na_option='bottom')
data_test
image.png
- 當(dāng)數(shù)據(jù)正常時(shí),則以大小排名
- 當(dāng)數(shù)據(jù)中有空值時(shí)互婿,則則將最高等級(jí)分配給NaN值
- 當(dāng)數(shù)據(jù)重復(fù)值時(shí)捣郊,則以大小排名;
七慈参、method參數(shù)為first時(shí)呛牲,na_option:對(duì)na值的處理,na_option=“bottom”時(shí)驮配,則將最高等級(jí)分配給NaN值娘扩。 ascending:默認(rèn)為True,排序規(guī)則為升序排列壮锻;當(dāng)ascending=False時(shí)琐旁,排序規(guī)則為降序排列
data_test['rank_ascending']=data_test.groupby('name')['number_1'].rank(method='first',
na_option='bottom',
ascending=False)
data_test
image.png
- 當(dāng)數(shù)據(jù)正常時(shí),則以大小排名
- 當(dāng)數(shù)據(jù)中有空值時(shí)猜绣,則將最高等級(jí)分配給NaN值
- 當(dāng)數(shù)據(jù)重復(fù)值時(shí)灰殴,則以大小排名;
好啦掰邢,就這些了~