python - 如何对行值(浮点值)进行排名?
问题描述
在 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 ;
使用 <= (小于等于) 处理浮点值的任何宝贵方法?
解决方案
如果您正在寻找一种对浮点值列表进行排名的方法,那么这可能对您有用:
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。
推荐阅读
- c# - 在c#中使用/不使用正则表达式清除不需要的十六进制字符
- c++ - 为什么在三元中返回静态大小的数组时 MSVC 2019 会失败?
- javascript - 如何使用 JavaScript 和 Github API 更新托管在 GitHub 存储库中的 JSON 文件
- google-api - API 密钥对谷歌云翻译无效
- sql - Azure SQL 数据库中的 SQL 作业中的语法错误
- python - django中的url可以传入一个空字符串吗?
- javascript - vue-cli-service serve 和 buid 生成不同的样式
- python - 通过 API 向 JIRA 问题添加请求类型
- jenkins - 使用自定义 settings.xml 时,避免在 Jenkins 声明式管道中使用 Maven / configFileProvider 冗余
- javascript - Angular:如何从后台更新打开的对话框数据?