pandas dataframe rank 排名方法

本文详细解析了Python pandas库中rank()函数的使用方法,包括参数说明、不同'method'选项的解释,并通过实例演示如何根据行或列进行排名,以及如何设置排序和百分比显示。
部署运行你感兴趣的模型镜像

rank()用法

rank()主要实现对DataFrame中的数据进行排名,这是一个很有意思的方法,比如当你要想知道每个学员在班里的成绩排名,通过这个方法,一目了然

df.rank(axis=0,method='average',numeric_only=None,na_option='keep',ascending=True,pct=False)方法原型

axis 0/1 根据行或者列进行计算

method

取值为'average','first','min', 'max','dense'

"first": 第一个,谁出现的位置靠前,谁的排名靠前。比如A, B两个人的分数都是95,在分数总排名里为2,则A为第2名B为第3名

"min": 当A,B两个人的分数都是95,在分数总排名里为2,则A、B都为第2名,下一个为第4名

"max": 当A,B两个人的分数都是95,在分数总排名里为2,则A、B都为第3名,下一个为第4名

"dense": 当A,B两个人的分数都是95,在分数总排名里为2,则A为第2名B为第3名,下一个为第4名

ascending 排序方法,True/False

pct 百分比显示排名,True/False

ascending 排序方法,True/False

numeric_only True/False 是否仅对数字进行排名

下面通过代码进行方法解释

以下代码截图来自Jupyter中文集成版(Python整合版)

Git地址:

https://github.com/DaiMaBang/Jupytericon-default.png?t=M1FBhttps://github.com/DaiMaBang/Jupyter

 

 

 

 

 

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 三级标题:pandas DataFramerank 方法支持情况 pandas 中的 DataFrame 确实支持 `rank` 方法,该方法可用于计算 DataFrame 中每个元素在其列或行中的排名。默认情况下,`rank` 方法按列进行计算,并使用平均排名法(`method='average'),同时保留 NaN 值。该方法不会修改原始 DataFrame,而是返回一个新的 DataFrame 或 Series,其中包含排名结果[^3]。 以下是一个使用 `rank` 方法的示例: ```python import pandas as pd # 构造示例 DataFrame df = pd.DataFrame({ 'col1': [10, 20, 10, 30] }) # 计算排名 print(df['col1'].rank(method='min', ascending=False)) ``` 输出结果为: ``` 0 4.0 1 2.0 2 1.0 3 2.0 Name: col1, dtype: float64 ``` 该示例展示了如何使用 `rank` 方法计算列 `col1` 的排名,其中 `method='min'` 表示在遇到重复值时使用最小排名[^1]。 ### 三级标题:rank 方法的参数说明 `rank` 方法具有多个参数,用于控制排名行为,包括: - `axis`: 指定按行(`axis=1`)还是按列(`axis=0`)进行排名。 - `method`: 指定排名方法,如 `'average'`、`'min'`、`'max'` 等。 - `numeric_only`: 是否仅对数值型列进行排名,默认为 `None`。 - `na_option`: 控制如何处理 NaN 值,可选 `'keep'`、`'top'` 或 `'bottom'`。 - `ascending`: 指定排名顺序,默认为升序。 - `pct`: 如果为 `True`,则排名以百分等级表示[^2]。 ### 三级标题:适用场景与注意事项 `rank` 方法适用于多种场景,例如: - **特征工程**:构造排名特征,如“历史排名”或“相对位置”。 - **数据分析**:分析变量的相对大小关系。 - **可视化准备**:生成排名数据用于图表展示。 - **模型评估**:计算预测值的排名误差(Ranking Loss)。 需要注意的是,`rank` 方法默认仅适用于数值型列(如 `int` 或 `float`),除非设置 `numeric_only=True`。此外,`rank` 方法支持处理 NaN 值,并通过 `na_option` 参数控制其排名方式[^4]。 ### 三级标题:不同排名方法的示例 以下示例展示了不同排名方法的行为差异: ```python df = pd.DataFrame({ 'Number_legs': [4.0, 2.0, 4.0, 8.0, None] }) df['default_rank'] = df['Number_legs'].rank() df['max_rank'] = df['Number_legs'].rank(method='max') df['NA_bottom'] = df['Number_legs'].rank(na_option='bottom') df['pct_rank'] = df['Number_legs'].rank(pct=True) print(df) ``` 输出结果为: ``` Number_legs default_rank max_rank NA_bottom pct_rank 0 4.0 2.5 3.0 2.5 0.625 1 2.0 1.0 1.0 1.0 0.250 2 4.0 2.5 3.0 2.5 0.625 3 8.0 4.0 4.0 4.0 1.000 4 NaN NaN NaN 5.0 NaN ``` 该示例展示了默认排名、最大排名、将 NaN 放在底部排名以及百分等级排名的不同结果[^4]。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值