python pandas rank()详解

目录

1 函数原型

2 各参数的作用

1.1 axis

1.2 method

3 ascending

4 na_option

5 pct名次是否为百分数

6 实例讲解

6.1 DataFrame 原始数据

6.1 默认情况下

6.2 根据值在原数据中出现的顺序排名

6.3 为各组分配一个最小排名

6.3 为各组分配一个最大排名

6.4 为各组分配一个稠密度计算后的排名

6.5 按降序进行排名

6.6 axis参数

6.6.1 原始数据

6.6.2 默认排序 axis=0



rank方法的作用是计算出axis方向上各个data的排名(指出这些data排好序后的名次)

1 函数原型

Series.rank(axis=0,method='average',numeric_only=None,na_option='keep',ascending=True,pct=False)
该方法用来排名(名次值从1开始),它可以根据某种规则破坏平级关系,
默认情况下,让人情况下(method='average'),rank通过“为各组分配一个平均排名”的方式破坏平级关系。

2 各参数的作用

1.1 axis

axis:{0 or 'index',1 or 'columns'} default 0

即默认按沿着index方向排名

1.2 method

method:{'average','min','max','first','dense'}
指定排名时用于破坏平级关系的method选项(注:值相同的位同一个分组)

method说明
'average'默认:在相等分组中,为各个值分配平均排名
'min'使用整个整个分组的最小排名
'max'使用整个分组的最大排名
'first'按值在原始数据中的出现顺序分配排名
'dense'与'min'类似,但是排名每次只会增加1,即并列的数据只占据一个名次

3 ascending

是否为升序,默认为True

na_option

用于处理NaN值

na_option说明
'keep'leave NA values where they are
'top'smallest rank if ascending
'bottom'

smallest rank if dscending

pct名次是否为百分数

 

6 实例讲解

6.1 DataFrame 原始数据

dft=pd.Series([9,-1,9,6,3,0,6])
dft
 

6.1 默认情况下

rank是通过“为各组分配一个平均排名”的方式破坏平级关系的

为各组分配一个平均排名

dft.rank()
 

笔算过程:

 

6.2 根据值在原数据中出现的顺序排名

b不为各组分配任何排名,不改变原有排名

method="first"

笔算过程:

6.3 为各组分配一个最小排名

method="min"

笔算过程:

6.3 为各组分配一个最大排名

method="dense"

笔算过程:

6.4 为各组分配一个稠密度计算后的排名

method="dense"

笔算过程:

6.5 按降序进行排名

ascending=False 默认都是升序排序

笔算过程

6.6 axis参数

6.6.1 原始数据

6.6.2 默认排序 axis=0

按索引列排序,也就是纵向每个字段的值看成一组进行排序

df2.rank()

df2.rank(axis=0)

根据上面的理解基础

分别对 

     b 列 5 7 -3 2 排序 3.0 4.0 1.0 2.0

     a列0 1 0 1   排序 1.5 3.5 1.5 3.5 

     c列-2 5 8 -3 排序 2.0 3.0 4.0 1.0

然后就输出成下面这样了

    

6.6.3 axis=1排序

这种必须是(m,n)数组

m>=1 n>1

df2.rank(axis=1)

字段行排序,也就是把每一行当成一组分别进行排序

分别对:

0 行 5 0 -2 排序 

3.02.01.0

1 行 7 1 5 排序

3.01.02.0

2 行 -3 0 8 排序

1.02.03.0

3 行 2 1 -3 排序

3.02.01.0

然后就输出成下面这样了

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 36
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值