71_Pandas.DataFrame排名

71_Pandas.DataFrame排名

使用rank()方法对pandas.DataFrame和pandas.Series的行/列进行排名。

sort_values() 是一种按升序或降序对 pandas.DataFrame 列和 pandas.Series 进行排序的方法,但rank() 返回每个元素的排名而不对数据进行排序。

请参阅下面的文章了解 sort_values()。

  • 17_pandas.DataFrame,Series排序(sort_values,sort_index)

在此对以下内容进行说明。

  • Rank()的基本用法
  • 指定行/列:axis
  • 仅定位数值:numeric_only
  • 指定升序或降序:ascending
  • 指定对相同值(重复值)的处理:method
  • 指定对缺失值 NaN 的处理:na_option
  • 获取百分比:pct
  • pandas.Series

以下面的 pandas.DataFrame 为例。

import pandas as pddf = pd.DataFrame({'col1': [50, 80, 100, 80],'col2': [0.3, pd.np.nan, 0.1, pd.np.nan],'col3': ['h', 'j', 'i', 'k']},index=['a', 'b', 'c', 'd'])print(df)
#    col1  col2 col3
# a    50   0.3    h
# b    80   NaN    j
# c   100   0.1    i
# d    80   NaN    k

Rank()的基本用法

默认情况下,调用rank()方法按升序对每列进行排名。相同的值(重复的值)有一个平均排名,字符串按字母顺序进行比较。

print(df.rank())
#    col1  col2  col3
# a   1.0   2.0   1.0
# b   2.5   NaN   3.0
# c   4.0   1.0   2.0
# d   2.5   NaN   4.0

指定行/列:axis

默认情况下,排名是按列完成的。 对行进行排名时,将参数轴设置为 1。在此示例中,该字符串被忽略。

print(df.rank(axis=1))
#    col1  col2
# a   2.0   1.0
# b   1.0   NaN
# c   2.0   1.0
# d   1.0   NaN

仅定位数值:numeric_only

默认情况下,字符串也会排名。 如果您只想定位数值,请将参数 numeric_only 设置为 True。

print(df.rank(numeric_only=True))
#    col1  col2
# a   1.0   2.0
# b   2.5   NaN
# c   4.0   1.0
# d   2.5   NaN

默认为 numeric_only=None,仅包含字符串的行和列会受到排名,但如果存在数字和字符串的混合,如示例中对 pandas.DataFrame 的行进行排名的情况,则通过忽略字符串进行处理。

print(df.rank(axis=1))
#    col1  col2
# a   2.0   1.0
# b   1.0   NaN
# c   2.0   1.0
# d   1.0   NaN

如果数字和字符串混合时使用 numeric_only=False ,则会出现 TypeError 错误。

# print(df.rank(axis=1, numeric_only=False))
# TypeError: '<' not supported between instances of 'str' and 'int'

指定升序或降序:ascending

默认情况下,它们按升序排列。 要按降序排序,请将参数升序设置为 False。

print(df.rank(ascending=False))
#    col1  col2  col3
# a   4.0   1.0   4.0
# b   2.5   NaN   2.0
# c   1.0   2.0   3.0
# d   2.5   NaN   1.0

指定对相同值(重复值)的处理:method

默认情况下,如果存在相同值(重复值),则返回它们的平均排名。 可以使用argument方法指定对相同值(重复值)的处理。 默认为 method=‘average’。平均值成为排名。

print(df.rank(method='average'))
#    col1  col2  col3
# a   1.0   2.0   1.0
# b   2.5   NaN   3.0
# c   4.0   1.0   2.0
# d   2.5   NaN   4.0

如果method=‘min’,则最小值成为排名。体育运动中常见的结果,例如第一名、并列第二名、并列第二名和第四名。

print(df.rank(method='min'))
#    col1  col2  col3
# a   1.0   2.0   1.0
# b   2.0   NaN   3.0
# c   4.0   1.0   2.0
# d   2.0   NaN   4.0

如果method=‘max’,则最大值成为等级。

print(df.rank(method='max'))
#    col1  col2  col3
# a   1.0   2.0   1.0
# b   3.0   NaN   3.0
# c   4.0   1.0   2.0
# d   3.0   NaN   4.0

如果method=‘first’,则相同的值(重复的值)将按出现的顺序排列。请注意,method=‘first’ 仅对数字有效。如果包含字符串,请设置 numeric_only=True。

# print(df.rank(method='first'))
# ValueError: first not supported for non-numeric dataprint(df.rank(method='first', numeric_only=True))
#    col1  col2
# a   1.0   2.0
# b   2.0   NaN
# c   4.0   1.0
# d   3.0   NaN

如果method=‘dense’,则最小值将像min一样排名,但后续的排名会更接近。第一名、并列第二名、并列第二名、第三名等。

print(df.rank(method='dense'))
#    col1  col2  col3
# a   1.0   2.0   1.0
# b   2.0   NaN   3.0
# c   3.0   1.0   2.0
# d   2.0   NaN   4.0

指定对缺失值 NaN 的处理:na_option

默认情况下,缺失值NaN不排名,保持NaN。 可以使用参数 na_option 指定 NaN 处理。 默认值为 na_option=‘keep’。 NaN 仍然是 NaN。

print(df.rank(na_option='keep'))
#    col1  col2  col3
# a   1.0   2.0   1.0
# b   2.5   NaN   3.0
# c   4.0   1.0   2.0
# d   2.5   NaN   4.0

如果 na_option=‘top’,NaN 将位于第一位。存在多个 NaN 时的处理遵循参数方法。

print(df.rank(na_option='top'))
#    col1  col2  col3
# a   1.0   4.0   1.0
# b   2.5   1.5   3.0
# c   4.0   3.0   2.0
# d   2.5   1.5   4.0print(df.rank(na_option='top', method='min'))
#    col1  col2  col3
# a   1.0   4.0   1.0
# b   2.0   1.0   3.0
# c   4.0   3.0   2.0
# d   2.0   1.0   4.0

如果 na_option=‘bottom’,NaN 将位于底部。存在多个 NaN 时的处理遵循参数方法。

print(df.rank(na_option='bottom'))
#    col1  col2  col3
# a   1.0   2.0   1.0
# b   2.5   3.5   3.0
# c   4.0   1.0   2.0
# d   2.5   3.5   4.0print(df.rank(na_option='bottom', method='min'))
#    col1  col2  col3
# a   1.0   2.0   1.0
# b   2.0   3.0   3.0
# c   4.0   1.0   2.0
# d   2.0   3.0   4.0

获取百分比:pct

如果参数 pct 设置为 True,它将返回每个元素在整体中的百分比位置。还可以指定其他参数。

print(df.rank(pct=True))
#     col1  col2  col3
# a  0.250   1.0  0.25
# b  0.625   NaN  0.75
# c  1.000   0.5  0.50
# d  0.625   NaN  1.00print(df.rank(pct=True, method='min', ascending=False, na_option='bottom'))
#    col1  col2  col3
# a  1.00  0.25  1.00
# b  0.50  0.75  0.50
# c  0.25  0.50  0.75
# d  0.50  0.75  0.25

pandas.Series

到目前为止的示例是 pandas.DataFrame,但 pandas.Series 也是如此。

print(df['col1'].rank(method='min', ascending=False))
# a    4.0
# b    2.0
# c    1.0
# d    2.0
# Name: col1, dtype: float64

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/675601.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[vscode]ssh报错: Resolver error: Error: XHR failedscode错误

场景问题&#xff1a;通过vscode ssh连接远程服务器失败&#xff0c;报错&#xff1a;Resolver error: Error: XHR failedscode&#xff1a; 问题原因&#xff1a;~/.vscode-server/bin/一串数字下的vscode-server-linux-x64.tar.gz由于某种原因无法正常下载 解决方式&#x…

JavaScript实现轮播图方法

效果图 先来看下效果图&#xff0c;嫌麻烦就不用具体图片来实现了&#xff0c;主要是理清思路。&#xff08;自动轮播&#xff0c;左右按钮切换图片&#xff0c;小圆点切换图片&#xff0c;鼠标移入暂停轮播&#xff0c;鼠标移出继续轮播&#xff09; HTML 首先是html内容&am…

【QT学习十四】 文件目录操作

目录 一、概述 二、详解 1. QFile QFile 类中的一些静态方法&#xff1a; 使用示例&#xff1a; 注意事项&#xff1a; 2. QDir 成员函数 使用实例&#xff1a; 注意事项&#xff1a; 3. QFileInfo 成员函数 使用实例 4. QTemporaryFile 成员函数 使用实例 注…

Rust语言之集合

文章目录 一、元组&#xff08;tuple&#xff09;1.元组定义2.元组使用解构索引 3.元组修改非可变元组可变元组类型不一致 二、数组1.数组不可变数组定义可变数组定义数组使用数组修改数组的遍历 2.动态数组-向量&#xff08;Vector&#xff09;向量定义向量遍历向量追加向量插…

MongoDB聚合: $sort

聚合的$sort阶段对所有输入文件进行排序&#xff0c;并按排序顺序返回管道。 语法 { $sort: { <field1>: <sort order>, <field2>: <sort order> ... } }$sort阶段参数为一个文档&#xff0c;该文档指定了要排序的字段和相应的排序顺序。<sort or…

[职场] 公安管理学就业方向及前景 #媒体#笔记#笔记

公安管理学就业方向及前景 公安管理学是中国普通高等学校本科专业。本专业文理兼收&#xff0c;学制4年&#xff0c;授予法学学士学位。本专业培养掌握马克思主义基本原理&#xff0c;政治坚定&#xff0c;坚持党和国家的路线、方针、政策&#xff0c;具有良好职业素养、科学素…

获取视频帧图片

在实现了minio文件上传的基础上进行操作 一、编写pom <dependency><groupId>org.jcodec</groupId><artifactId>jcodec</artifactId><version>0.2.5</version> </dependency> <dependency><groupId>org.jcodec<…

【小程序】基础API——面板API接口介绍

ty.preloadPanel 面板预下载 需引入BizKit&#xff0c;且在>3.0.0版本才可使用 参数 Object object 属性类型默认值必填说明deviceIdstring是设备 idextraInfoPanelExtraParams否额外面板信息 当预下载的是二级面板时, 需要传递的额外信息completefunction否接口调用结束…

PMP考试之20240209

1、生物制药公司ClinicaLabs的一位项目经理打算与她的经理讨论为其团队无法执行的复杂活动获取额外资源的问题。一旦活动完成&#xff0c;这些资源将立即投入项目。在这种情况下&#xff0c;项目经理最需要以下哪项技能&#xff1f; A.确定资源需求的规划技能 B.使经理相信她…

git恢复rebase过程中遇到权限问题和丢失的提交

文章目录 一、检查丢失的提交是否还在 reflog 中二、创建一个新分支来恢复丢失的提交三、处理权限问题四. 使用 git fsck 查找丢失对象1、创建一个新分支来恢复该提交2、检查和合并提交 五. 介绍git中命令reflog 与 fsck1、git reflog2、git fsck使用场景 一、检查丢失的提交是…

freesql orm 使用 DynamicFilterInfo 拼接日期查询条件时间格式一个难得的经验

文本到时间条件的转换 前端输入 1253-3 , 后台提示"varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值" 经查询, mssql 【datetime】数据类型&#xff1a;最大是9999年12 月31日&#xff0c;最小是1753年1月1日 所以要拼接限制一下, 只是 if (val.…

迅为RK3588开发板ubuntu和window互传图形界面直接拖拽进行文件传输

确保以及安装了 VMware Tools。如下图所示表示已安装过了。 和 windows 端文件夹间传输一样直接拖拽进去即可&#xff0c;如下图所示&#xff1a; 也可拖拽到终端&#xff0c;如下图所示&#xff1a; 更多内容可以B站搜索迅为RK3588开发板

什么是系统工程(字幕)22

0 00:00:00,650 --> 00:00:02,660 那么下一个呢&#xff0c;就是 1 00:00:03,200 --> 00:00:04,770 图16.12 2 00:00:05,740 --> 00:00:07,910 这是一个活动图 3 00:00:09,090 --> 00:00:11,930 表达了蒸馏这个水的 4 00:00:12,280 --> 00:00:13,470 过程的…

一文彻底搞懂Redis的内存回收机制和内存过期淘汰策略

文章目录 1. Redis内存回收机制2. Redis过期策略3. Redis淘汰策略3.1 LRU算法3.2 缓存清理配置3.3 Redis数据淘汰策略3.4 缓存清理的流程 4. 总结 关于 Redis 内存回收机制和内存过期淘汰策略的常见问题&#xff1a; 什么是 Redis 的内存回收机制&#xff1f; Redis 的内存回收…

百家cms代审

环境搭建 源码链接如下所示 https://gitee.com/openbaijia/baijiacms 安装至本地后 直接解压到phpstudy的www目录下即可 接下来去创建一个数据库用于存储CMS信息。&#xff08;在Mysql命令行中执行&#xff09; 接下来访问CMS&#xff0c;会默认跳转至安装界面 数据库名称和…

原根primitive root

&#xff08;a,m&#xff09;1&#xff0c;若,则称a为模N的原根。 以下程序只能判断结果为简化剩余系情况下的模N的原根。 对于模4的primitive_root3,模9的primitive_root2,5这些情况无法判断。 def find_primitive_root(n):for base in range(1,n):l[]for index in range(…

uni使用openlayer加载本机离线地图

manifest.json添加配置 "runmode": "liberate"(默认为normal) 把地图打包进apk&#xff0c;这样手机每次访问地图就可以访问到工程文件夹的地图资源了&#xff0c;不用每次都请求云资源&#xff0c;消耗流量太大了

分治法求解最大子数组和问题

leetcode 53 53. 最大子数组和 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 #define max(a,b) ((a)>(b)?(a):(b)) int maxSubArr…

Huggingface上传模型

Huggingface上传自己的模型 参考 https://juejin.cn/post/7081452948550746148https://huggingface.co/blog/password-git-deprecationAdding your model to the Hugging Face Hub&#xff0c; huggingface.co/docs/hub/ad…Welcome&#xff0c;huggingface.co/welcome三句指…

【数据结构】排序之冒泡排序和快速排序

简单不先于复杂&#xff0c;而是在复杂之后。 文章目录 1. 交换排序1.1 冒泡排序1.2 快速排序1.3 快速排序优化1.4 快速排序非递归 1. 交换排序 基本思想&#xff1a;所谓交换&#xff0c;就是根据序列中两个记录键值的比较结果来对换这两个记录在序列中的位置&#xff0c;交换…