目录
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
4 na_option
用于处理NaN值
na_option | 说明 |
'keep' | leave NA values where they are |
'top' | smallest rank if ascending |
'bottom' | smallest rank if dscending |
5 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.0 | 2.0 | 1.0 |
1 行 7 1 5 排序
3.0 | 1.0 | 2.0 |
2 行 -3 0 8 排序
1.0 | 2.0 | 3.0 |
3 行 2 1 -3 排序
3.0 | 2.0 | 1.0 |
然后就输出成下面这样了