Pandas中 的 rank() 函数 和 groupby 的 rank() 函数用法

Pandas rank()函数详解:从排序到排名的核心方法与实战应用 在数据分析中,排序与排名是两个基础且关键的操作。排序(Sorting)决定了数据的先后顺序,而排名(Ranking)则为其分配一个代表相对位置的数字序号,这在业绩评估、竞赛排名等场景中至关重要。其核心原理在于如何处理并列值,Pandas的rank()函数提供了多种策略,例如默认的'average'方法会取并列位置的平均值,而'dense'方法则确保名次连续不跳跃。这项技术的价值在于能将原始数据转化为具有可比性的序数尺度,广泛应用于销售绩效排名、学生成绩分析、分组内部比较等业务场景。本文聚焦于Pandas的r 阅读详情
AI摘要

本文介绍了Pandas中rank()函数的使用,包括处理并列排名的方法(average、max、min、dense、first)以及在groupby操作后的应用。通过示例展示了如何对数据进行排名和分组排名,并解释了每种方法的排名逻辑。

一、pandas中的rank()函数

首先随机初始化一组数,然后

data = pd.Series([1,2,3,4,5])
print(data)
data = data.rank()
print(data)

这里的rank()函数打印出来虽然和原数组没区别,但是这里rank表示的是次序,所以这里的1.0,2.0表示的是第一名和第二名

如果有重复值的话

data = pd.Series([1,1,2,2,3,3,4,4,5])
print(data)
data = data.rank()
print(data)

 这里的的数组首先是有序的,所以数组里的第一个1的名次是第一名,表示1.0,第二个1的名次是第二名,表示2.0,重复值的话,默认求平均,所以它俩的名次平均值就是(1.0+2.0)/2 = 1.5,同理,第一个2是第三名,表示3.0,第二个2是第四名,表示4.0,平均值是(3.0+4.0)/2 = 3.5.

rank函数提供了method的参数,通过设置method参数,可以控制自己想要的排名方式。
如果说这个rank函数要解决的是考试排名的问题,现在出现了有两个同学并列第一的情况:

method='average' (默认设置):那么这两个人就占据了前两名,分不出谁第 1,谁第 2,就把两人的名次算个平均数,都算 1.5 名,这样下一个人就是第3名。

method='max':两人并列第 2 名,下一个人是第 3 名。

method='min':两人并列第 1 名,下一个人是第 3 名。

method='dense':两人并列第 1 名,但下一个人是第 2 名。

method='first':那么试卷先被改出来的人是第 1 名,试卷后被改出来的是第 2 名。(这个例子并不严谨,实际会按照本来序列的显示顺序先后来排名)
 

 二、groupby中的rank()函数

groupby是聚合函数,对于某一列或多列进行聚合,可以看Pandas教程 | 超好用的Groupby用法详解 - 知乎

进行学习

 假设随机初始化几列数

import pandas as pd
list1 = [1, 3, 1,0,7,4,0]
list2 = [3, 3, 2,0,4,4,5]
list3 = [3, 3, 3,3,4,4,6]
df1 = pd.DataFrame({'col1':list1,'col2':list2,'col3':list3})
print(df1)

df1 = df1.groupby(['col3']).rank(ascending=False)
print(df1)

 我们对col3进行聚合,然后再排名,其中ascending=False表示降序,打印一下结果

 首先看col1这一列。col1和col3可以分为三块,分别是

 由于是降序,那么排完序之后就变成了

 注意:这里的排序是每一块内单独排序,所以rank()函数的排名也是每一块的单独排名。

对于第一个块中,3现在是第一名,表示为1.0,第一个1是第二名,表示为2.0,第二个1是第三名,表示为3.0,method默认为平均,所以它俩的名次是(2.0+3.0)/2 = 2.5,0是第四名,表示为4.0。所以结果为

它这个结果是将排序后的顺序放在一开始分块后的结果上,意思就是  

顺序是放在   这个结果上面,所以结果是

对于第二个块中,7是第一名,表示为1.0,4是第二名,表示为2.0,所以结果为

 其他都同理。

其中groupby的rank函数也有method参数,用法与rank函数相同,这里不做介绍。

参考:

Pandas | rank()函数_Code_Porter的专栏-优快云博客_pandas rank函数

Pandas —— rank( )函数进行排名_starter_____的博客-优快云博客_dataframe rank

Pandas教程 | 超好用的Groupby用法详解 - 知乎

pandas rank()列排名 阅读详情

相关推荐

Pandas对数据进行排序标记(rank函数)

Pandas对数据进行排序标记(rank函数) 现有一个问题: 数据是多个重复两遍的user_id,想新建一列,给重复的user_id标号,1和2。 具体功能如图: 使用groupby和rank函数即可实现上述功能。 具体代码如下: # 注: 这里是用user_id列对数据进行分组,然后对id列进行排序并且标号 df['rank_id'] = df.groupby('user_id').id.rank(ascending=1,method='first') rank的参数为: ascending: 排序

xiyu820312的博客 1371

python pandas rank()详解

目录 1函数原型 2 各参数的作用 1.1 axis 1.2 method 3ascending 4na_option 5pct名次是否为百分数 6 实例讲解 6.1 DataFrame 原始数据 6.1默认情况下 6.2根据值在原数据中出现的顺序排名 6.3为各组分配一个最小排名 6.3为各组分配一个最大排名 6.4为各组分配一个稠密度计算后的排名 ...

m0_37813354的博客 1万+

Python Pandas 数据分组 pd.groupby 的相关操作(二)shift, rolling, rank, cumsum, agg

Pandas 数据分组 pd.groupby 的相关操作(二)数据准备一、数据平移 df.shift1.1 上下平移1.2 左右平移1.3 分组数据平移二、数据滚动 df.rolling2.1 滚动求和2.2 滚动求均值三、排名 df.rank3.1 总排名3.1 分组后,针对某一列排名3.2 排名序号限定于 0~1 之间 ptc3.3 排名方法 method='first' / 'min' / 'max' / 'dense'四、累计4.1 累加 df.cumsum4.2 累计迭代最大值/最小值 df.cu

AItrust的博客 7184

Pandas 数据处理-排序与排名的深度探索

Pandas是Python中广泛使用的数据处理库,提供了丰富的功能来处理和分析数据。在数据分析过程中,经常需要对数据进行排序和排名,以便更好地理解和分析数据。本文将介绍Pandas中常用的排序、排名方法,包括`sort_index`、`sort_values`和`rank`,并通过代码实例和解析来演示它们的使用。

一键难忘的博客 5404

Pandas中的GroupBy和Rank:数据排序的艺术

摘要:本文介绍了使用Pandas的groupby和rank函数实现按组内日期排序的方法。通过示例数据演示了如何为每个id添加新列col_x,表示该id内日期的排序排名。文章详细说明了使用dense参数实现无间隙排名、处理重复值的方法,并对比了transform+argsort的替代方案。这些技巧能帮助数据分析师灵活处理各类分组排序需求,提升数据处理效率。

m0_74337424的博客 59

ANSYS Help USER300

USER 300概述单元描述输入数据假设与限制条件 概述 单元描述 Mechanical APDL提供了一种方便的方法来创建自定义的单元,命名为USER300,可以创建几乎任何单元类型。 UserElem子程序为Mechanical APDL在单元类型创建上提供了一个接口,可传递用户自定义单元创建时所需的所有数据,然后从自定义单元返回所有数据和结果,以更新数据库和文件。因为通过接口可以访问数据库和文件信息,所以很少需要了解Mechanical APDL数据库程序和文件结构。该接口还提供了获取Mechanic

weixin_47019765的博客 2234

pandas.groupby().rank()用法详解

pandas.DataFrame.groupby() Group DataFrame using a mapper or by a Series of columns. A groupby operation involves some combination of splitting the object, applying a function, and combining the results. This can be used to group large amounts of data ..

漫步量化 3271

FPGA实战:从零构建eMMC控制器(Verilog篇)

本文详细介绍了如何使用Verilog从零构建FPGA上的eMMC控制器,涵盖eMMC接口基础、命令系统解析、关键模块设计及性能优化技巧。通过实战案例,帮助开发者掌握高速数据存储解决方案,提升嵌入式系统开发能力。

weixin_26802933的博客 297

pandas groupby shift rank rolling 等用法详解

1.pandas shift import pandas as pd import numpy as np df = pd.DataFrame(np.arange(16).reshape(4,4),columns=['AA','BB','CC','DD'],index =['a','b','c','d']) #https://blog.youkuaiyun.com/brucewong0516/articl...

hxshine的博客 9309

SAR成像系列:【3】合成孔径雷达(SAR)的二维回波信号与简单距离多普勒(RD)算法 (附matlab代码)

二维回波信号分析

zr2006_7的专栏 2万+

【工具】GitHub学生认证+PyCharm配置Copilot全流程指南

本文提供了一份详细的GitHub学生认证及在PyCharm中配置Copilot的完整指南。通过完成A2F认证、准备有效材料并使用干净网络环境,学生可免费获取GitHub Copilot Pro订阅,极大提升编程学习与开发效率。

w7x8y9z的博客 1457

【Pandas】pandas GroupBy Function application DataFrameGroupBy.rank

`pandas.DataFrameGroupBy.rank(method='average', ascending=True, na_option='keep', pct=False, axis=<no_default>)` 是 DataFrameGroupBy 对象的一个方法,用于对每个分组内的数据进行排名。该方法会根据分组内的值大小分配排名,相同值会根据 `method` 参数的设置分配排名。

weixin_39648905的博客 1503

YOLOv8冻结层的迁移学习 全网首发

在调用时会创建trainer此时的模型配置更新了,冻结了个p。

qq_42693842的博客 6586

pandas DataFrame的.groupby().rank()

pandas DataFrame的.groupby().rank() 这个操作 是 对DataFrame某列的数据进行聚类 然后对其它列的属于同类数据进行数值大小排序 但是有几个参数的含义不是很理解 list1 = [1, 3, 1,0,7,4,0] list2 = [3, 3, 2,0,4,4,5] list3 = [3, 3, 3,3,4,4,6] df1 = pd.DataFrame...

SIML 1万+

告别环境配置烦恼:用Conda一键搞定GATK4、samtools、fastp等生信分析全家桶

本文介绍如何利用Conda快速搭建包含GATK4、samtools、fastp等工具的生物信息学分析环境,解决软件安装和版本冲突问题。通过详细的配置步骤和实战案例,帮助研究者十分钟内完成重测序分析全家桶的环境配置,显著提升上游分析效率。

weixin_30753873的博客 334

Python量化交易实战:pytdx库高效获取通达信分笔成交数据

本文详细介绍了如何使用Python的pytdx库高效获取通达信分笔成交数据,为量化交易提供关键市场微观结构分析。通过环境搭建、服务器连接、数据获取与清洗的完整流程,帮助开发者快速掌握这一免费高质量数据源,并实现分笔数据的实战分析与应用。

weixin_29061509的博客 1347

Pandas rank()函数详解:从基础概念到六大实战场景

在数据分析中,排序与排名是核心操作,用于量化数据点的相对位置。其原理是为序列中的每个值分配一个代表次序的数值,关键在于如何处理并列值。这项技术的价值在于能将抽象的数据关系转化为直观的位次信息,支撑决策分析。应用场景广泛,例如在业绩评估、学术排名、股票分位分析中确定个体在群体中的位置。Pandas库中的rank()函数是处理此类排名问题的利器,它通过method、na_option等参数灵活应对并列值与缺失值。本文将深入解析其底层逻辑,并结合分组排名、百分比排名、沿行排名等六大实战场景,提供清晰的代码示例与避

weixin_30617737的博客 472

飞牛fnNAS免费内网穿透之zerotier篇

本文介绍了如何通过ZeroTier实现飞牛NAS的远程文件共享。首先,用户需要在ZeroTier官网注册账号并创建虚拟局域网。接着,分别在Windows和飞牛NAS上安装ZeroTier客户端,并通过SSH登录飞牛NAS进行配置。安装完成后,用户可以在ZeroTier页面中授权设备加入虚拟局域网。最后,通过Windows的“网上邻居”功能访问飞牛NAS的共享文件夹,实现跨局域网的文件共享。这种方法不仅适用于文件共享,还可以用于打印机共享和远程桌面连接。

dgnankai的专栏 2465

Pandas groupby常用功能

Pandas groupby 常用功能 Pandas groupby 常用功能 【sum】key内部求value的和 【cumsum】key内部value的累计和 【prod】key内部求value的积 【mean】key内部求value的均值 【max】key内部求value最大值 【min】key内部求value最小值 【idxmax】key内部value的最大值的index 【ran...

songbinxu的博客 9061

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Pandas rank()函数详解:从数据排序到精准排名的实战指南

在数据分析与处理中,排序和排名是基础且核心的操作。排序通常指对数据进行有序排列,而排名则关注为每个数据点分配一个具有统计意义的序位,尤其在处理并列值时需要明确的规则。其技术原理在于通过标准化算法将连续或离散的数值映射到有序的等级序列,并支持多种并列值处理策略。这一功能在数据标准化、指标比较和统计计算中具有重要价值,能够消除量纲影响,提升分析的准确性和可比性。常见的应用场景包括学生成绩排名、销售业绩评估、商品热度排序以及金融风险评级等。本文将深入解析Pandas库中的rank()函数,通过对比平均排名、最小排

weixin_30595035的博客 369

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

25个例子学会Pandas Groupby 操作

在本文中,我们将使用25个示例来详细介绍groupby函数的用法。这25个示例中还包含了一些不太常用但在各种任务中都能派上用场的操作。

deephub 4573

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Pandas使用技巧之groupby+apply/agg

目录背景数据groupby+applygroupby+agg总结 背景 分组计算指标是使用pandas进行数据分析的常用操作,今天分享一下groupby+apply /agg这套组合拳的用法。 数据 数据是学生id和周末参加的辅导班名称: df=pd.DataFrame({‘id’:[1,1,2,2,1,1,1],‘class’:[‘a’,‘a’,‘c’,‘c’,‘b’,‘b’,‘b’]}) groupby+apply 现在想统计每个id参加的class个数(剔除重复),那么我们就可以使用groupby+a

yftadyz的博客 3914

python分组排序_python中分组排序--groupby(),rank()

1.python 中分组统计 1.1按性别统计出年龄最大,最小,平均值import pandas as pddf = pd.read_excel(r'./data.xlsx')print(df)ages = df.groupby(['gender'])['age']ages_min = ages.min()ages_max = ages.max()ages_mean = ages.mean()pr...

weixin_39855568的博客 2579

python中分组排序--groupby(),rank()

1.python 中分组统计 1.1按性别统计出年龄最大,最小,平均值 import pandas as pd df = pd.read_excel(r'./data.xlsx') print(df) ages = df.groupby(['gender'])['age'] ages_min = ages.min() ages_max = ages.max() ages_mean = a...

baidu_38409988的博客 3万+

pandas对字段进行唯一值编号---ngroup(), rank(), LabelEncoder()方法

1. df.groupby('用户').ngroup() 方法(编码从0开始),以下方法结果一致,不再贴结果图。3. sklearn.preprocessing.LabelEncoder()方法(编码从0开始)2. df.rank()方法(编码从1开始)

m0_61432650的博客 5609

Python数据分析:pandas(groupby、pivot_table、cut、rank、shift)

自定义分箱边界:0-6, 6-8, 8-9, 9-10print("年龄分组:", age_groups.tolist())'''每个范围的数量(0, 6] 3(6, 8] 2(8, 9] 1(9, 10] 1'''# 自定义分箱边界:0-6, 6-8, 8-9, 9-10labels = ['不及格', '中等', '良好', '优秀']# ['不及格', '不及格', '不及格', '中等', '中等', '良好', '优秀']

人不风流枉少年 265
上一篇: 总结一下利用pandas进行条件筛选的几个方法
下一篇: 搜广推相关问题——持续更新
烟雨人长安
博客等级 码龄10年 871粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值