关于python_「rank」关于Python中rank()函数的理解 - seo实验室

rank

刚开始学习《利用Python进行数据分析》这本书,当学习到对Serises和Dataframe进行排名的时候,有些疑惑,去网上搜索了很多关于这方面的解释,要么就是一两句带过,要么就是照搬书上的例子与结果,把我们这些刚入门的小白当成了高手,所以我打算自己认真的写一篇关于rank函数的简要解释说明。这是我第一次在CSDN上写博客,如果有不对的地方,可以留言,我会认真改正。页面做的很简单,望大家谅解。

Rank()函数

Rank也就是所说的”排名“,是指对数组从1到有效数据点总数分配名次的操作。

默认情况下,rank通过将平均排名分配到每个组来打破平级关系:

初始化一个序列

import pandas as pd

obj = pd.Series([7,-5,7,4,2,0,4])

obj

运行结果:

0 7

1 -5

2 7

3 4

4 2

5 0

6 4

dtype: int64

执行默认rank()操作

obj.rank()

运行结果:

0 6.5

1 1.0

2 6.5

3 4.5

4 3.0

5 2.0

6 4.5

dtype: float64

运行结果分析:

元素

索引

排名

-5

1

#1

0

5

#2

2

4

#3

4

3

#4

4

6

#5

7

0

#6

7

2

#7

根据上面的表格可以看出,索引0对应的元素排名为6,但是使用rank()会对排名求平均值,也就是说有N歌相同的元素,排名会相加并除以N,所以说索引0对应的元素最终排名为6.5;索引1对应的元素排名为1,所以它对应的排名值为1.0,以此类推得出上述运行结果。

rank(method=‘first’)

这个函数其中传入了一个参数‘first’,作用是按照值在数据中出现的次序分配排名。obj.rank(method='first')

运行结果:

0 6.0

1 1.0

2 7.0

3 4.0

4 3.0

5 2.0

6 5.0

dtype: float64

运行结果分析:

元素

索引

排名

-5

1

#1

0

5

#2

2

4

#3

4

3

#4

4

6

#5

7

0

#6

7

2

#7

结合上面的表格,我们拿索引为0的元素举例说明,可以看出索引0的排名为6,但是注意,当传入‘first’是就意味着不会对排名进行平均取值,所以即使有相同的元素,也会按照谁先出现就把谁排在前面(是不是有点像上学期间考试的成绩排名?按姓名字母排序,即使你俩分数一样)所以它对应的值为6.0,以此类推,在这里不再赘述。

rank(method = ‘max’)

这里method的参数变为了 max,意味着对整个组使用最大排名。obj.rank(method='max')

运行结果:

0 7.0

1 1.0

2 7.0

3 5.0

4 3.0

5 2.0

6 5.0

dtype: float64

运行结果分析:

元素

索引

排名

-5

1

#1

0

5

#2

2

4

#3

4

3

#4

4

6

#5

7

0

#6

7

2

#7

以索引为0的元素为例,它对应的元素是7,排名为6,但是它有一个和它一样的元素,排名为7,所以这里取最大的排名,也就是7,所以运行结果中索引为0对应的值为7.0,剩下的元素同理,这里不再赘述。

rank(method = ‘min’)

min 的意思为对整个组使用最小排名。obj.rank(method='min')

运行结果:

0 6.0

1 1.0

2 6.0

3 4.0

4 3.0

5 2.0

6 4.0

dtype: float64

运行结果分析:

元素

索引

排名

-5

1

#1

0

5

#2

2

4

#3

4

3

#4

4

6

#5

7

0

#6

7

2

#7

还是以索引为0的元素为例,它对应的值为7,排名为6,即使后面有和它值相同的元素,排名取它们其中最小的那个,所以运行结果中索引为0对应的值为6,其余元素以此类推,这里不再赘述。

rank(ascending = False, method = ‘max’)

这个函数相较于上面的函数,多传入了一个ascending,它的意思是”升序“的意思,这里取值为 False,意为对元素进行降序排序;而且method的值取为 max,与上面的max作用相同。obj.rank(ascending=False,method='max')

运行结果:

0 2.0

1 7.0

2 2.0

3 4.0

4 5.0

5 6.0

6 4.0

dtype: float64

运行结果分析:

元素

索引

排名

-5

1

#7

0

5

#6

2

4

#5

4

3

#3

4

6

#4

7

0

#1

7

2

#2

可以看出,与上面的表格相比,最大的变化是元素进行了降序排序,所以名次也发生了变化。我还是拿索引为0的元素拿来举例(因为它太有代表性了,所以我总是用它来说明),它现在对应的排名为6,但是这里method取的值为max,所以当有相同的元素时,取排名最大的那个,所以它的值为2.0,剩下的元素也是一样,这里不再赘述。

rank(ascending = False, method = ‘min’)

这个函数相较于上面的函数,method的值变为了min,与上面的min作用相同。obj.rank(ascending=False,method='min')

运行结果:

0 1.0

1 7.0

2 1.0

3 3.0

4 5.0

5 6.0

6 3.0

dtype: float64

运行结果分析:

元素

索引

排名

-5

1

#7

0

5

#6

2

4

#5

4

3

#3

4

6

#4

7

0

#1

7

2

#2

索引值为0的元素对应的排名为1,即使后面有相同的元素,取它们之中最小的排名,所以它对应的值为1.0,其余元素排名以此类推,这里不再赘述。

DataFrame.rank()

它会对DataFrame的0轴进行排名(不了解轴的可以去看一下numpy中ndarray的解释),可以把DataFrame理解为一个二维数组,对0轴排名也就是按着纵向排名

我们先初始化一个DataFrameframe = pd.DataFrame({'b' : [4.3, 7, -3, 2], 'a' : [0, 1, 0, 1],'c' : [-2, 5, 8, -2.5]})

frame

运行结果:

20190528222336285.jpgframe.rank()

运行结果:

20190528222608607.jpg

运行结果分析:

先对columns='b’的数据进行排名,然后对columns='a’排名,最后对column='c’进行排名,排名规则与上面的Series规则一致,这里不再赘述。

frame.rank(axis=‘columns’)

这里传入了一个参数 axis,它的意思是"轴"的意思,上面的那个如果括号里不加,默认是对0轴进行排名(等价于axis=0),这个参数传入的值 columns 意为对‘b’,‘a’,'c’这几个列进行排名(横向排名)。frame.rank(axis='columns')

运行结果:

20190528223528515.jpg

运行结果分析:

先对index=0这一行进行排名,其次对index=2排名,最后对index=3进行排名,排名规则也是和上面的一样。《利用Python进行数据分析》

相关阅读

function getFileSize($bytes){if ($bytes >= pow(2,40)) {# code...$return = round($bytes/pow(1024, 4),2);$suffi

有网友问到excel中能不能用函数求和,excel函数是很强大的功能,求和就不在话下了,在常用的Excel操作中,SUM求和是使用频率最高的一个函

摘自《python程序设计基础》蔡永铭主编工具:python 3.7 64-bit官方链接:https://www.python.org/平台:Windows10floor函数的使用

在p

关于execl()函数族的用法不在赘述,其他博主介绍的很详细。下面说下作者在使用该函数时所犯的错误:

作者想通过使用execl()函数在子

在excel的函数中,最为基础的莫过于是加减乘除,那么,今天小编就教你们乘法函数的运用。excel乘法函数使用的步骤:1、A1*B1=C1的Excel乘

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值