pandas之rank函數的使用

pandas排名函數的使用

在Pandas中,可以使用rank()函數來進行排名操作。

rank()函數可以用於爲數據幀中的元素分配排名,並提供不同的排名策略,例如從小到大排名、從大到小排名等。

使用上面的一組模擬數據,介紹rank方法的使用。 其中參數method:

  • average: 組內的平均排名;
  • min: 最小排名方式;
  • max: 最大排名方式;
  • first: 根據出現順序分配排名,首次出現的元素排名較高;
  • dense: 據出現順序分配排名,但沒有間隔。

默認情況下,rank()函數是按升序排名的,你可以通過設置ascending=False參數來改爲降序排名。

一、模擬數據

import pandas as pd

df = pd.DataFrame(data={'score': [100, 99, 99, 96, 95, 90, 90, 90, 90, 86]})

df
   score
0	100
1	 99
2	 99
3	 96
4	 95
5	 90
6	 90
7	 90
8	 90
9	 86

二、排名方式

2.1 默認方式("average")

相同值的元素將被分配平均排名。例如,如果有n個元素並列,那麼它們的排名將是:並列首行所在的行數+0.5*(n-1)。

df1 = df.copy()
df1['rank'] = df1['score'].rank(method='average', ascending=False)

2.2 最小排名方式("min")

類似SQL中 rank。

相同值的元素將被分配最低排名。例如,如果有n個元素並列,那麼它們的排名將都是並列的第1行數據所在的行數。

df2 = df.copy()
df2['rank'] = df1['score'].rank(method='min', ascending=False)

2.3 最大排名方式("max")

相同值的元素將被分配最高排名。例如,如果有n個元素並列,那麼它們的排名將都是最後一個元素所在的行數。

df3 = df.copy()
df3['rank'] = df3['score'].rank(method='max', ascending=False)

2.4 連續編號不重複("first")

類似SQL中 row_number。

根據出現順序分配排名,首次出現的元素排名較高。排名等於行所在的行數。

df4 = df.copy()
df4['rank'] = df4['score'].rank(method='first', ascending=False)

2.5 密集排名方式("dense")

類似SQL中 dense_rank。

根據出現順序分配排名,但沒有間隔。例如,如果有兩個元素排名爲1,下一個排名將爲2,而不是3。

df5 = df.copy()
df5['rank'] = df5['score'].rank(method='dense', ascending=False)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章