关于dataframe排序 pd.rank()

 更新时间:2024年09月10日 09:57:25   作者:羊羊猪  
pandas.DataFrame.rank方法支持不同的排序方式,如按行或列、升序或降序等,主要参数包括axis控制按行或列排名,method定义相同值的处理方式,numeric_only指定是否仅对数字列排序,na_option设置NaN值的排序方法,ascending确定排序方向,pct决定是否以百分比形式展示排名

pandas.DataFrame.rank

pandas.DataFrame.rank 官方文档

DataFrame.rank(axis=0, method=‘average', numeric_only=NoDefault.no_default, na_option=‘keep', ascending=True, pct=False)

参数解释

  • axis: axis=0为按行排名,axis=1为按列排名
  • method: 如何对具有相同价值(即领带)的记录组进行排序:
  • numeric_only: 对于DataFrame对象,如果设置为True,则只对数字列排序。
  • na_option: 如何对NaN值进行排序:
  • ascending: 元素按升序/降序排列
  • pct: 是否以百分比形式显示返回的排名。

Example:

df = pd.DataFrame(data={'Animal': ['cat', 'penguin', 'dog',
                                   'spider', 'snake'],
                        'Number_legs': [4, 2, 4, 8, np.nan]})

method: {‘average', ‘min', ‘max', ‘first', ‘dense'}, default ‘average'
  • average: 组里的平均排名
  • min: 组里的最低排名
  • max: 组里的最高排名
  • first: 按照他们在数组中出现的顺序排列
  • dense: 就像’ min '一样,但是在组之间rank总是增加1。
df['method_average'] = df['Number_legs'].rank(method='average')
df['method_min'] = df['Number_legs'].rank(method='min')
df['method_max'] = df['Number_legs'].rank(method='max')
df['method_first'] = df['Number_legs'].rank(method='first')
df['method_dense'] = df['Number_legs'].rank(method='dense')

na_option: {‘keep', ‘top', ‘bottom'}, default ‘keep'
  • keep: 空值排序仍为空值
  • top: 排序放在第一位
  • bottom: 排在最后一位
df['na_keep'] = df['Number_legs'].rank(na_option='keep')
df['na_top'] = df['Number_legs'].rank(na_option='top')
df['na_bottom'] = df['Number_legs'].rank(na_option='bottom')

ascending: 升序为True, 降序为False

df['asc_True'] = df['Number_legs'].rank(method='min', ascending=True)
df['asc_False'] = df['Number_legs'].rank(method='min', ascending=False)

pct: 是否显示百分比

df['pct_True'] = df['Number_legs'].rank(method='min', pct=True)
df['pct_False'] = df['Number_legs'].rank(method='min', pct=False)

分组排序

pandas.core.groupby.GroupBy.rank 官方文档

Example:

df = pd.DataFrame(
    {"group": ["a", "a", "a", "a", "a", "b", "b", "b", "b", "b"],
      "value": [2, 4, 2, 3, 5, 1, 2, 4, 1, 5],}
)

for method in ['average', 'min', 'max', 'dense', 'first']:
    df[f'{method}_rank'] = df.groupby('group')['value'].rank(method)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python用opencv完成图像分割并进行目标物的提取

    python用opencv完成图像分割并进行目标物的提取

    这篇文章主要介绍了python用opencv完成图像分割并进行目标物的提取,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Jupyter notebook 不自动弹出网页的解决方案

    Jupyter notebook 不自动弹出网页的解决方案

    这篇文章主要介绍了Jupyter notebook 不自动弹出网页的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 使用Pytorch导出自定义ONNX算子的示例代码

    使用Pytorch导出自定义ONNX算子的示例代码

    这篇文章主要介绍了使用Pytorch导出自定义ONNX算子的示例代码,下面给出个具体应用中的示例:需要导出pytorch的affine_grid算子,但在pytorch的2.0.1版本中又无法正常导出该算子,故可通过如下自定义算子代码导出,需要的朋友可以参考下
    2024-03-03
  • Python利用openpyxl操作Excel表格的完整指南

    Python利用openpyxl操作Excel表格的完整指南

    存测试数据有时候有大批量的数据,存到TXT文件里面显然不是最佳的方式,我们可以存到Excel里面去,下面我们就来看看如何使用Python自动化操作Excel表格吧
    2026-03-03
  • Python爬取读者并制作成PDF

    Python爬取读者并制作成PDF

    本文是在学习了beautifulsoup之后,制作的一个爬取读者杂志并使用reportlab制作成pdf的python小工具,咱也文艺一下:),分享给大家,有需要的小伙伴参考下吧。
    2015-03-03
  • 关于yolov8训练的一些改动及注意事项

    关于yolov8训练的一些改动及注意事项

    Yolo是一种目标检测算法,目标检测的任务是从图片中找出物体并给出其类别和位置,这篇文章主要给大家介绍了关于yolov8训练的一些改动及注意事项,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • Python获取邮件地址的方法

    Python获取邮件地址的方法

    这篇文章主要介绍了Python获取邮件地址的方法,通过自定义函数分析提取字符串中邮件地址的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 基于Python实现高效PPT转图片工具

    基于Python实现高效PPT转图片工具

    在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望对大家有所帮助
    2025-04-04
  • Python实现在线批量美颜功能过程解析

    Python实现在线批量美颜功能过程解析

    这篇文章主要介绍了Python实现在线批量美颜功能过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • 详解使用Python处理文件目录的相关方法

    详解使用Python处理文件目录的相关方法

    这篇文章主要介绍了使用Python处理文件目录的相关方法,使用到了os模块,需要的朋友可以参考下
    2015-10-10

最新评论