Python数据分析-pandas的rank函数助你轻松实现排序功能

 更多文章,可通过微信公众号:Excel办公小技巧  查看

   用过sql中的row_number函数,习惯了他的方便,那么在pandas处理数据时,有没有类似的函数用来排序呢,当然也有,比如rank函数。

rank(axis=0, method='average', numeric_only=None,      na_option='keep', ascending=True, pct=False)

    默认情况下:axis=0表示按索引排序;ascending=True排序按升序排列;pct=False表示不输出百分比;na_option='keep'表示空值不做处理。

    下面将通过数据来学习下rank函数下各参数作用:

01 method:你想怎么排

    更改参数method的可选项,其他默认参数不更改:

  • first:表示按数值大小排列,如果数值相同时,按出现先后排序。如1,2,3,4,5,...,类似SQL中的row_number函数;

  • min:表示按数值大小排列,如果数值相同时,序号相同,但后面的序号仍按数值数目顺延,如1,2,2,4,5,...,类似SQL中的rank函数;

  • dense:表示按数值大小排列,如果数值相同时,序号相同,同时后面的序号不受影响,如1,2,2,3,4,...,类似SQL中的dense_rank函数;

data['first']=data['数量'].rank(method='first' )data['min']=data['数量'].rank(method='min' )data['dense']=data['数量'].rank(method='dense')

结果如下:

另外两个可选项,method='max'时,相同的数值,按最大的序号输出。可以理解成,在first排序结果的基础上,数值相同时,两个数值都按最大序号输出;而method='average'时,两个数值按对应序号的均值输出。

02 ascending:谁小谁有理?

    上面介绍method我们默认是升序排列,那么如果数量表示销售完成的订单数时,当然是完成的多的才要排前面,所以,ascending=False时,降序排列。

data['降序']=data['数量'].rank(method='min',ascending=False)

03 na_option:别把数据算丢了!

    默认情况下,na_option='keep',空值未被考虑在内,那么,如果数量表示客服投诉数量时,数量为空的应该是排名最好的。因此,当na_option='top',表示空值排最前,na_option='bottom',表示空值排最后。

data['top']=data['数量'].rank(method='min',na_option='top')data['bottom']=data['数量'].rank(method='min',na_option='bottom')

结果如下:

04 pct:算算分布?

    pct默认=False,想输出数值所占的分布情况时,pct=True即可。

data['pct']=data['数量'].rank(method='min',pct=True)

结果如下:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值