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

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

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

别人几行代码就搞定了我写了这么老长。。。哎。。

sales = pd.read_csv("sales.csv")
pd.set_option("display.width", 300)  # 设置字符显示宽度
pd.set_option("display.max_rows", None)  # 设置显示最大行
pd.set_option("display.max_columns", None)

def score(x,data,col,is_high_better=True):
    q1=data[col].quantile(0.25)
    q2=data[col].quantile(0.5)
    q3=data[col].quantile(0.75)

    if is_high_better==True:
        if x <= q1:
            return '4'
        elif x > q1 and x <= q2:
            return '3'
        elif x > q2 and x <= q3:
             return '2'
        elif x > q3:
             return '1'
    
    else:
        if x <= q1:
            return '1'
        elif x > q1 and x <= q2:
            return '2'
        elif x > q2 and x <= q3:
             return '3'
        elif x > q3:
             return '4'
sales['RFMClass']=sales['recency'].apply(lambda x:score(x,sales,'recency',is_high_better=False)).astype(str)+sales['frequency'].apply(lambda x:score(x,sales,'frequency')).astype(str)+sales['monetary'].apply(lambda x:score(x,sales,'monetary')).astype(str)

result=sales[sales['RFMClass']=='444'].sort_values(by='monetary').head(5)
result_=sales.head(5)
print(result_[['user_id','recency','frequency','monetary','RFMClass']])
print('\n')
print(result[['user_id','recency','frequency','monetary','RFMClass']])

全部评论

相关推荐

不愿透露姓名的神秘牛友
今天 13:41
点赞 评论 收藏
分享
06-10 23:36
已编辑
首都经济贸易大学 C++
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-15 17:24
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务