Pandas —— rank( )函数进行排名

本文介绍了Python中pandas库的rank函数用法,包括不同排序方法(如平均排名、最小排名、最大排名和首次出现排名),升序和降序排序,以及在Series和DataFrame上的应用。还展示了如何通过axis参数指定排序轴。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rank( )

rank函数返回从小到大排序的下标

1、默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的

In [120]:obj = pd.Series([7,-5,7,4,2,0,4])
In [121]:obj.rank()
Out [121]:
0    6.5
1    1.0
2    6.5
3    4.5
4    3.0
5    2.0
6    4.5
dtype: float64

2、根据值在原数据中出现的顺序排名

In [122]:obj.rank(method='first')
Out [122]:
0    6.0
1    1.0
2    7.0
3    4.0
4    3.0
5    2.0
6    5.0
dtype: float64

3、按降序进行排名

In [123]:obj.rank(ascending=False, method='max')
Out [123]:
0    2.0
1    7.0
2    2.0
3    4.0
4    5.0
5    6.0
6    4.0
dtype: float64

4、若对DataFrame进行排序,则可根据axis指定要进行排序的轴

In [136]: frame=pd.DataFrame({'b':[5,7,-3,2],'a':[0,1,0,1],'c':[-2,5,8,-3]})

In [137]: frame
Out[137]:
   a  b  c
0  0  5 -2
1  1  7  5
2  0 -3  8
3  1  2 -3

In [138]: frame.rank(axis=0)
Out[138]:
     a    b    c
0  1.5  3.0  2.0
1  3.5  4.0  3.0
2  1.5  1.0  4.0
3  3.5  2.0  1.0

In [139]: frame.rank(axis=1)
Out[139]:
     a    b    c
0  2.0  3.0  1.0
1  1.0  3.0  2.0
2  2.0  1.0  3.0
3  2.0  3.0  1.0

method方法的选项

TablesAre
average默认:在相等分组中,为各个值分配平均排名
min使用整个分组的最小排名
max使用整个分组的最大排名
first按值在原始数据中的出现顺序分配排名

转载地址:

《利用Python进行数据分析》

### Pandas DataFrame 中 rank 函数的 dense 排序规则详解 `pandas.DataFrame.rank()` 是一种强大的工具,能够按照不同的方法对数据进行排名。其中,`method='dense'` 提供了一种特殊的排序规则——密集排名(Dense Ranking)。这种排名方式的特点是:对于具有相同值的数据项,它们会被赋予相同的排名;并且,后续的不同值将继续紧接前一排名,而不是跳过中间的数值。 #### Dense 排序的具体规则 当使用 `method='dense'` 时,Pandas 将按以下规则计算排名: 1. 数据先根据大小顺序排列。 2. 对于具有相同值的数据项,它们将共享同一排名。 3. 下一个不同值的排名将是当前最大排名加一,无论之前有多少重复值[^1]。 这一特性使得密集排名非常适合需要紧凑排名序列的应用场景。 #### 示例代码展示 Dense 排序规则 下面是一个具体的例子来说明 `rank(method='dense')` 的工作原理: ```python import pandas as pd # 创建示例 DataFrame data = {'Scores': [10, 20, 20, 30, 40]} df = pd.DataFrame(data) # 应用 rank 方法并指定 method='dense' df['Rank_dense'] = df['Scores'].rank(method='dense') print(df) ``` 运行上述代码后,输出的结果如下所示: | Scores | Rank_dense | |--------|------------| | 10 | 1.0 | | 20 | 2.0 | | 20 | 2.0 | | 30 | 3.0 | | 40 | 4.0 | 可以看到,两个值为 `20` 的条目都被赋予了排名 `2.0`,而下一个更大的值 `30` 则获得了排名 `3.0`,没有跳过任何整数[^2]。 #### 处理缺失值的情况 在实际应用中,数据可能包含缺失值(NaN),此时可以通过设置参数 `na_option` 来决定如何处理这些缺失值。例如,默认情况下,缺失值会被排除在外并不参与排名。如果希望将缺失值放置在排名列表的顶部或底部,则可分别设置 `na_option='top'` 或 `na_option='bottom'`[^2]。 ---
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值