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

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

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

import pandas as pd 

pd.set_option('display.width',300)
pd.set_option('display.max_rows',None)
pd.set_option('display.max_columns',None)

df = pd.read_csv('sales.csv')

quantiles = df.quantile([0.25,0.5,0.75])

def score(x, col):
    q1, q2, q3 = quantiles[col]
    return 4 if x <= q1 else 3 if x <= q2 else 2 if x <= q3 else 1

def score_reverse(x, col):
    q1,q2,q3 = quantiles[col]
    return 1 if x <= q1 else 2 if x <= q2 else 3 if x <= q3 else 4

df['R_Quartile']=df['recency'].apply(score, col='recency').astype(str)
df['F_Quartile']=df['frequency'].apply(score_reverse, col='frequency').astype(str)
df['M_Quartile']=df['monetary'].apply(score_reverse, col='monetary').astype(str)

df['RFMClass'] = df['R_Quartile']+df['F_Quartile']+df['M_Quartile']

res = df.drop(columns=['R_Quartile','F_Quartile','M_Quartile'])
res1 = res[res['RFMClass']=='444'].sort_values(by='monetary',ascending=False).reset_index(drop=True)
print(res.head(),'\n')
print(res1.head())

全部评论

相关推荐

01-12 22:27
武汉大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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