首页 > 解决方案 > 如何对行值(浮点值)进行排名?

问题描述

在 python 中,如何创建 Sales_rank 列,值从 100 到 1。

if Sales_2019 <= 0.00371665 then Sales_rank =100 ;

else if Sales <= 0.0071706859 then Sales_rank =99 ;
else if Sales <= 0.0122105282 then Sales_rank =98 ;

.....

else if Sales <= 0.9602417519 then Sales_rank =2 ;
else if Sales > 0.9602417519 then Sales_rank =1 ;

使用 <= (小于等于) 处理浮点值的任何宝贵方法?

标签: pythonpandasnumpy

解决方案


如果您正在寻找一种对浮点值列表进行排名的方法,那么这可能对您有用:

import numpy as np
from scipy.stats import rankdata

n = 100 # Number of Ranks/Data points
sales = np.random.rand(n) # create random values between 0 and 1 of size n as fake sales

# Rank the data, reverse the order (highest Sale is lowest (=best) rank) 
# and convert it to integer/list    
sales_order = rankdata([-1 * sale for sale in sales]).astype(int).tolist() 


for rank in range(n,0,-1): # count backwards from 100
    print("Sale: {:5.4f} makes rank {:d}".format(sales[int(sales_order.index(rank))], rank))

现在sales[int(sales_order.index(rank))]一开始可能看起来很混乱。Sales_order是一个包含所有n销售排名的列表。由于销售没有特定的顺序,因此它们的相关排名也没有。它首先查找排名 100 的索引,然后查找排名 99 的索引,依此类推。它返回相应等级的销售。剩下的只是很好地格式化它以获得这样的输出n = 10

Sale: 0.1087 makes rank 10
Sale: 0.2955 makes rank 9
Sale: 0.3214 makes rank 8
Sale: 0.3531 makes rank 7
Sale: 0.4374 makes rank 6
Sale: 0.4744 makes rank 5
Sale: 0.5143 makes rank 4
Sale: 0.5892 makes rank 3
Sale: 0.7534 makes rank 2
Sale: 0.9390 makes rank 1

您需要在 python 环境中安装 numpy 和 scipy。


推荐阅读