-
2021-03-18 14:20:46
借用网上的一个例子:
import pandas as pd obj = pd.Series([7,-5,7,4,2,0,4]) obj.rank()
obj输出: 0 7 1 -5 2 7 3 4 4 2 5 0 6 4 从小到大排序输出: 1 -5 2 0 3 2 4 4 5 4 6 7 7 7 obj.rank()输出: 0 6.5 obj中位置0处是7,而排序后7在6和7的位置,所以该处=(6+7)/2=6.5 1 1.0 obj中位置1处是-5,而排序后-5在1的位置,所以该处即为1.0 2 6.5 同上个7所述 3 4.5 obj中位3处是4,而排序后4在4和5的位置,所以该处=(4+5)/2=4.5 4 3.0 obj中位置4处是2,而排序后2在3的位置,所以该处即为3.0 5 2.0 obj中位置5处是0,而排序后0在2的位置,所以该处即为2.0 6 4.5 同上个4所述
更多相关内容 -
python3中rank函数的用法
2020-09-18 09:20:09今天小编就为大家分享一篇python3中rank函数的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
【python】rank函数
2021-06-06 17:44:49rank函数中的参数method有四个取值:无参,"min","max","first" 无参 相同排名下,取平均值进行排名 ser=pd.Series([3,2,0,3],index=list('abcd')) print(ser) ser=ser.rank() #默认为average print(ser) #输出 a...rank函数中的参数
method有四个取值:无参,"min","max","first"
- 无参
相同排名下,取平均值进行排名
ser=pd.Series([3,2,0,3],index=list('abcd')) print(ser) ser=ser.rank() #默认为average print(ser) #输出 a 3 b 2 c 0 d 3 dtype: int64 a 3.5 b 2.0 c 1.0 d 3.5 dtype: float64
因为a与d的值相同,排名分别为3和4,取平均值后为(3+4)/2=3.5,所以a和b的排名为3.5。
- min
相同的值取较小的排名。
ser=pd.Series([3,2,0,3],index=list('abcd')) print(ser) ser=ser.rank(method='min') print(ser) #输出 a 3 b 2 c 0 d 3 dtype: int64 a 3.0 b 2.0 c 1.0 d 3.0 dtype: float64
因为a与d的值相同,排名分别为3和4,取较小的排名作为它们的排名,所以a和b的排名为3。
- max
相同的值取较大的排名。
ser=pd.Series([3,2,0,3],index=list('abcd')) print(ser) ser=ser.rank(method='max') print(ser) #输出 a 3 b 2 c 0 d 3 dtype: int64 a 4.0 b 2.0 c 1.0 d 4.0 dtype: float64
因为a与d的值相同,排名分别为3和4,取较大的排名作为它们的排名,所以a和b的排名为4。
- first
按顺序排列,不允许并列。
ser=pd.Series([3,2,0,3],index=list('abcd')) print(ser) ser=ser.rank(method='first') print(ser) #输出 a 3 b 2 c 0 d 3 dtype: int64 a 3.0 b 2.0 c 1.0 d 4.0 dtype: float64
相同的值按照出现顺序排列,先出现的值排名靠前(The first value is ranked first),不允许并列排名。
- 无参
-
Python函数:rank()
2022-02-25 16:59:06函数形式: DataFrame.rank(axis=0, method='average', numeric_only=NoDefault.no_default, na_option='keep', ascending=True, pct=False) 沿轴计算数值数据等级(1到n)。默认情况下,相等的值被分配一个等级,这...函数形式:
DataFrame.rank(axis=0, method='average', numeric_only=NoDefault.no_default, na_option='keep', ascending=True, pct=False)
沿轴计算数值数据等级(1到n)。默认情况下,相等的值被分配一个等级,这个等级是这些值的等级的平均值。
- axis:直接排名索引。
-
method:如何对具有相同值(即平局)的记录组进行排名:
average:组的平均排名
min:组中的最低排名
max:组中的最高排名
first:按照它们在数组中出现的顺序分配的等级
dense:类似于“min”,但组间排名总是增加 1
- numeric_only:对于DataFrame对象,如果设置为True,则只对数字列排序。
- na_option:如何对NaN值进行排序。top:给NaN值分配最低等级;bottom:给NaN值赋最高等级;keep:给NaN值赋NaN
- ascending:元素是否应该按升序排列。
- pct:是否以百分比形式显示返回的排名。
返回值:返回一个Series或DataFrame的值。
来,上例子:
>>> import pandas as pd >>> import numpy as np >>> df = pd.DataFrame(data={'Animal': ['cat', 'penguin', 'dog', ... 'spider', 'snake'], ... 'Number_legs': [4, 2, 4, 8, np.nan]}) >>> df Animal Number_legs 0 cat 4.0 1 penguin 2.0 2 dog 4.0 3 spider 8.0 4 snake NaN
下面的示例展示了该方法如何处理上述参数:
- default_rank:这是不使用任何参数获得的默认行为
- max_rank:设置方法= 'max'有相同值的记录使用最高的排名(例如:因为猫和狗都在第二和第三位,排名均为3。)
- NA_bottom: 选择na_option = 'bottom',如果有带有NaN值的记录,它们将被放在排名的底部。
-
关于Python中rank()函数的理解
2019-05-28 22:40:47刚开始学习《利用Python进行数据分析》这本书,当学习到对Serises和Dataframe进行排名的时候,有些疑惑,去网上搜索了很多关于这方面的解释,要么就是一两句带过,要么就是照搬书上的例子与结果,把我们这些刚入门的...刚开始学习《利用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
运行结果:
frame.rank()
运行结果:
运行结果分析:
先对columns='b’的数据进行排名,然后对columns='a’排名,最后对column='c’进行排名,排名规则与上面的Series规则一致,这里不再赘述。frame.rank(axis=‘columns’)
这里传入了一个参数 axis,它的意思是"轴"的意思,上面的那个如果括号里不加,默认是对0轴进行排名(等价于axis=0),这个参数传入的值 columns 意为对‘b’,‘a’,'c’这几个列进行排名(横向排名)。
frame.rank(axis='columns')
运行结果:
运行结果分析:
先对index=0这一行进行排名,其次对index=2排名,最后对index=3进行排名,排名规则也是和上面的一样。《利用Python进行数据分析》
-
Python数据分析-pandas的rank函数助你轻松实现排序功能
2020-10-31 20:03:35“用过sql中的row_number函数,习惯了他的方便,那么在pandas处理数据时,有没有类似的函数用来排序呢,当然也有,比如rank函数。” rank(axis=0,method='average',numeric_only=None, na_option='keep',... -
python 中rank函数怎样理解?
2020-11-20 22:15:43Rank中文叫做顺序,专业叫法是”秩”。rank 表示在这个数在原来...①在scipy模块中>>> from scipy import rank>>> help(rank)Help on function rank in module numpy.core.fromnumeric:rank(a)Return the number of ... -
python pandas中如何实现excel中的rank函数
2020-08-29 07:31:02rank函数在excel中尝用来实现对数据的排名,在pandas中有同样的函数来实现同样的功能,下面我们具体来学习一下。 1、rank函数主要有以下几个参数。 (1)method确定数值相等时的排名策略。有以下5种方式,后面通过... -
Python pandas.DataFrame.rank函数方法的使用
2020-12-10 01:39:35DataFrame.rank(self: ~FrameOrSeries,axis=0,method: str = 'average',numeric_only: Union[bool,NoneType] = None,na_option: str = 'keep',ascending: bool = True,pct: bool = False)→ ~FrameOrSeries计算... -
如何在Python里提升时间序列滚动排序函数(TS_RANK)的效率?
2020-11-30 01:40:001. 何为TS_RANK?...特意讨论该函数是因为其在挖掘信号时的使用频率还是很高的。举个例子,如果我有时间序列[1,2,3,4,5,6], 固定窗口为3,那么前两个下标由于向前回溯数据长度不足将不做运算,对... -
「rank」关于Python中rank()函数的理解 - seo实验室
2020-11-24 09:46:36rank刚开始学习《利用Python进行数据分析》这本书,当学习到对Serises和Dataframe进行排名的时候,有些疑惑,去网上搜索了很多关于这方面的解释,要么就是一两句带过,要么就是照搬书上的例子与结果,把我们这些刚... -
Pandas rank()函数排名的用法与解释
2020-12-06 03:24:46之前搜关于pandas rank()函数的帖子,好几个大哥都是照搬书,当然也有一些大神直接一顿操作+截图。我结合了书还有自己的理解,希望没有错误,也希望和我一样的新手能看懂。谢谢!!1. rank()默认情况下,rank() ... -
python pandas rank()详解
2019-11-14 15:41:081函数原型 2 各参数的作用 1.1 axis 1.2 method 3ascending 4na_option 5pct名次是否为百分数 6 实例讲解 6.1 DataFrame 原始数据 6.1默认情况下 6.2根据值在原数据中出现的顺序排名 6.3为各组分配一个... -
Python与Pandas:rank函数
2018-12-27 14:45:43CSDN上看到几篇有关rank函数的介绍,都是引用了以下同一个例子: obj = pd.Series([7,-5,7,4,2,0,4]) obj.rank() 输出为: 0 6.5 1 1.0 2 6.5 3 4.5 4 3.0 5 2.0 6 4.5 这个例子源于《利用Python进行... -
python rank函数在pycharm中可以执行成功,但是打包为exe后,报错,求指点!
2021-11-03 14:03:41代码为: df['号'] = df['编号'].groupby(df['部门']).rank(axis=0, method='first') # 根据部门分组进行编号 报错信息如下: Exception in Tkinter callback Traceback (most recent call last): File "tkinter\__... -
MySQL 以及 Python 实现排名窗口函数
2020-11-24 03:23:57当然了,如果MySQL SQL不太熟悉,可以用程序来处理,比如我下面用Python 实现了rank 函数,执行结果如下:(脚本源代码最后)>>> ================================ RESTART ================================>>>... -
hackerrank-python:我用Python解决HackerRank中的问题的实践
2021-05-24 23:13:38我用Python解决HackerRank中的问题的实践 我的HackerRank个人资料 解决了205个挑战 使用Python Python If-Else 算术运算符 Python:除法 循环 打印功能 写一个函数 基本数据类型 清单 元组 求百分比 嵌套列表 ... -
MySQL 以及 Python 实现排名窗体函数
2021-01-29 10:39:37大部分数据库都提供了窗体函数。比方RANK,ROW_NUMBER等等。 MySQL 这方面没有直接...这里,我用MySQL 以及Python 分别实现了rank 窗体函数。原始表信息:t_girl=# \d group_concat;Table "ytt.group_concat"Column |... -
python3中的rank函数
2018-06-14 16:41:34obj.rank()输出为:0 6.5 1 1.0 2 6.5 3 4.5 4 3.0 5 2.0 6 4.5 dtype: float64之前一直没弄懂是啥意思 这里解释下rank 表示在这个数在原来的向量中排第几名,有相同的数,按最小排序,取平均(默认)。这里解释... -
Python .rank()函数要怎么写抽取部分排名,名次分别写在各自的数据后面的单元格
2021-08-20 11:07:48读取表格,对表格内的一列进行抽取部分行进行单独排名,名次写在对应行的后面的单元格,其他未抽取的部分也同样做排名 ,名次写在对应的行的后面的一个单元格 -
【Python】Pandas中的宝藏函数-rank()
2021-09-08 00:42:58'成绩':[80,70,70,40,10,60,60,50,50,40]}) #姓名长度不一样的,加个符号调整下,这该死的强迫症 data['姓名'] = data['姓名'].str.rjust(3,'〇') 一、DataFrame的正常排名 Pandas中的排名,函数为rank(),使用也... -
python内置函数lambda函数常见用法
2020-10-27 09:51:25是Python编程语言中使用较多的一个内置函数。他可以在不指定函数名称的情况下定义一些简单逻辑的函数。可以定义一个函数给变量。 二、使用方法: 语法: 在Python中,lambda的语法形式如下: lambda 参数: 表达式 ... -
Python pandas常用函数详解
2020-12-30 14:24:52Python pandas常用函数详解来源:中文源码网浏览: 次日期:2018年9月2日【下载文档:Python pandas常用函数详解.txt】(友情提示:右键点上行txt文档名->目标另存为)Python pandas常用函数详解 本文研究的主要是... -
python随笔:HackerRank题中的map函数以及嵌套结构使用
2022-03-24 20:58:43map函数的使用 map(func,seq1[,seq2,…]) 将func作用于seq中每一个元素,作为一个list返回 实例:找到亚军分数 if __name__ == '__main__': n = int(input()) arr = map(int, input().split( )) arr_=sorted... -
textrank关键词提取(python)
2021-04-26 18:18:50textrank介绍textrank是在pagerank 的基础上提出来的。PageRank对于每个网页页面都给出一个正实数,表示网页的重要程度,PageRank值越高,表示网页越重要,在互联网搜索的排序中越可能被排在前面。pagerank具体内容... -
python实现sql窗口函数
2021-12-03 16:00:49python窗口排序 -
python 魔法函数实例及解析
2021-02-10 00:24:43python的几个魔法函数__repr__Python中这个__repr__函数,对应repr(object)这个函数,返回一个可以用来表示对象的可打印字符串.如果我们直接打印一个类,向下面这样class A():def __init__(self,name=None,id=1):...