【发布时间】:2021-07-25 21:40:25
【问题描述】:
我确实有产品 ID 数据框。我想通过对每个产品进行评分来找到最好的产品。对于每个变量,值越大,产品得分就越高,除了退货,这意味着退货越多得分越少。此外,我需要为变量分配不同的权重来评分发货收入和退货,这可能会增加其重要性的 20%。
评分函数可能如下所示 分数=ShippedUnits+1.2*ShippedRevenue+OrderedUnits-1.2Returns+View+Stock 其中 0
请帮忙。谢谢。
df_product=pd.DataFrame({'ProductId':['1','2','3','4','5','6','7','8','9','10'],'ShippedUnits':
[6,8,0,4,27,3,4,14,158,96],'ShippedRevenue':[268,1705,1300,950,1700,33380,500,2200,21000,24565]
,'OrderedUnits':[23,78,95,52,60,76,68,92,34,76],'Returns':[0,0,6,0,2,5,6,5,2,13],'View':
[0,655,11,378,920,12100,75,1394,12368,14356],'Stock':[24,43,65,27,87,98,798,78,99,231]
})
【问题讨论】:
-
鉴于您的
dataframe,您期望得到什么? -
实际上我为每个产品添加了一个分数,0 分和 100 分,谢谢
-
您的权重不能确保分数在 [0, 100] 范围内。
-
没关系,它可以超过 100,但我们可以将所有分数压缩到 100,谢谢
-
这是实现它的一种方法,
w = np.array([1,1.2,1,-1.2,1, 1])score = df_product.drop('ProductId', axis=1).apply(lambda x: sum(w*x), axis=1)normalizedScore = 100*(score - score.min())/(score.max() - score.min())
标签: python pandas product segment