题解 | #筛选某店铺最有价值用户中消费最多前5名#

筛选某店铺最有价值用户中消费最多前5名

https://www.nowcoder.com/practice/58655010a7c34e9fb2b7b491c3f79ca4

import sys
import pandas as pd
# for line in sys.stdin:
#     a = line.split()
#     print(int(a[0]) + int(a[1]))

data = pd.read_csv('sales.csv')
recency = data['recency']
frequency = data['frequency']
monetary = data['monetary']

xs1 = recency.quantile(0.25)
mid1 = recency.median()
ss1 = recency.quantile(0.75)

xs2 = frequency.quantile(0.25)
mid2 = frequency.median()
ss2 = frequency.quantile(0.75)

xs3 = monetary.quantile(0.25)
mid3 = monetary.median()
ss3 = monetary.quantile(0.75)

def re_score(value):
    if value <= xs1:
        return 4
    elif value > xs1 and value <= mid1:
        return 3
    elif value > mid1 and value<= ss1:
        return 2
    else:
        return 1
data['R'] = recency.apply(re_score)

def fr_score(value):
    if value <= xs2:
        return 1
    elif value > xs2 and value <= mid2:
        return 2
    elif value > mid2 and value<= ss2:
        return 3
    else:
        return 4
data['F'] = frequency.apply(fr_score)

def mon_score(value):
    if value <= xs3:
        return 1
    elif value > xs3 and value <= mid3:
        return 2
    elif value > mid3 and value<= ss3:
        return 3
    else:
        return 4
data['M'] = monetary.apply(mon_score)

data['RFMClass'] = data['R'].astype(str)+data['F'].astype(str)+data['M'].astype(str)
data = data.drop(['R', 'F', 'M'], axis=1)
print(data.head(5).reset_index(drop=True))

data1 = data[data['RFMClass'] == '444']
data1 = data1.sort_values(by='monetary', ascending=False)
print(data1.head(5).reset_index(drop=True))

全部评论

相关推荐

什么时候才能有offer啊_:十年前我还在刺激战场研究跳伞的底层原理呢
投递牛客等公司9个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务