阅读 117

Pandas >>数据排名(rank()函数)

Pandas >>据排名(rank()函数)

  • axis:0或'index',1或'columns',默认0

  • method:'average','min','max','first','dense',默认为'average',

    • 如何对具有相同值(即ties)的记录组进行排名:
        1. average:组的平均等级;
        1. min:组中最低的排名;
        1. max:组中最高等级;
        1. first : 按排列顺序排列,依次排列;
        1. dense:类似于 ‘min’,但组之间的排名始终提高1numeric_only:bool;可选对于DataFrame对象,如果设置为True,则仅对数字列进行排名。
  • na_option:{'keep','top','bottom'},默认为'keep'

    • 如何对NaN值进行排名:
        1. keep:将NaN等级分配给NaN值
        1. top:如果升序,则将最小等级分配给NaN值
        1. bottom:如果升序,则将最高等级分配给NaN值。
  • ascending:bool,默认为True,元素是否应该按升序排列。

  • pct:bool,默认为False,是否以百分比形式显示返回的排名。

  • 返回值:返回以数据等级作为值的Series或DataFrame。

一、基本数据
import pandas as pd
import numpy as np
data_test= pd.DataFrame([
                    ['张三',3],
                    ['张三',1],
                    ['张三',4],
                    ['李四',2],
                    ['李四',7],
                    ['李四',],
                    ['王五',6],
                    ['王五',6],
                    ['王五',7],
                    ['王五',8]
                    ],
                    columns =['name','number_1']
                    )
data_test
image.png
二、默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的
data_test['name_num_rank']=data_test.groupby('name')['number_1'].rank()
data_test
image.png
  • 当数据正常时,则以大小排名
  • 当数据中有空值时,则空值不进行排名,其他进行排名
  • 当数据相等时,则以平均值排名;
三、method参数为average时,即默认值时。
data_test['rank_average']=data_test.groupby('name')['number_1'].rank(method='average')
data_test
image.png
  • 当数据正常时,则以大小排名
  • 当数据中有空值时,则空值不进行排名,其他进行排名
  • 当数据相等时,则以平均值排名;
四、method参数为min时。
data_test['rank_min']=data_test.groupby('name')['number_1'].rank(method='min')
data_test
image.png
  • 当数据正常时,则以大小排名
  • 当数据中有空值时,则空值不进行排名,其他进行排名
  • 当数据重复值时,则以最小值排名;
四、method参数为max时。
data_test['rank_max']=data_test.groupby('name')['number_1'].rank(method='max')
data_test
image.png
  • 当数据正常时,则以大小排名
  • 当数据中有空值时,则空值不进行排序,其他进行排名
  • 当数据重复值时,则以最大值排名;
五、method参数为first时。
data_test['rank_first']=data_test.groupby('name')['number_1'].rank(method='first')
data_test
image.png
  • 当数据正常时,则以大小排名
  • 当数据中有空值时,则空值不进行排名,其他进行排名
  • 当数据重复值时,则以大小排名;
五、method参数为first时,na_option:对na值的处理,默认采用keep策略,即保留为nan不参与排名;na_option=“top”时,则将最小等级分配给NaN值
data_test['rank_na']=data_test.groupby('name')['number_1'].rank(method='first',na_option='top')
data_test
image.png
  • 当数据正常时,则以大小排名
  • 当数据中有空值时,则则将最小等级分配给NaN值
  • 当数据重复值时,则以大小排名;
六、method参数为first时,na_option:对na值的处理,na_option=“bottom”时,则将最高等级分配给NaN值。
data_test['rank_na_bottom']=data_test.groupby('name')['number_1'].rank(method='first',na_option='bottom')
data_test
image.png
  • 当数据正常时,则以大小排名
  • 当数据中有空值时,则则将最高等级分配给NaN值
  • 当数据重复值时,则以大小排名;
七、method参数为first时,na_option:对na值的处理,na_option=“bottom”时,则将最高等级分配给NaN值。 ascending:默认为True,排序规则为升序排列;当ascending=False时,排序规则为降序排列
data_test['rank_ascending']=data_test.groupby('name')['number_1'].rank(method='first',
                                                                       na_option='bottom',
                                                                       ascending=False)
data_test
image.png
  • 当数据正常时,则以大小排名
  • 当数据中有空值时,则将最高等级分配给NaN值
  • 当数据重复值时,则以大小排名;

好啦,就这些了~

作者:默直

原文链接:https://www.jianshu.com/p/d0369a96b87b

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐