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

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

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

import pandas as pd

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

def get_score(x,df,col,is_big_better=True):
    q1 = df[col].quantile(0.25)
    q2 = df[col].median()
    q3 = df[col].quantile(0.75)

    if is_big_better==True:
        if x>q3:
            return 4
        elif x>q2 and x<=q3:
            return 3
        elif x>q1 and x<=q2:
            return 2
        elif x<=q1:
            return 1
    
    else:
        if x>q3:
            return 1
        elif x>q2 and x<=q3:
            return 2
        elif x>q1 and x<=q2:
            return 3
        elif x<=q1:
            return 4

a= df['recency'].apply(lambda x0:get_score(x0,df,'recency',is_big_better=False)).astype(str)
b = df['frequency'].apply(lambda x0:get_score(x0,df,'frequency',is_big_better=True)).astype(str)
c = df['monetary'].apply(lambda x0:get_score(x0,df,'monetary',is_big_better=True)).astype(str)

df['RFMClass'] = a + b + c

print(df.head(5))
print("\n")

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



全部评论

相关推荐

投递阿里巴巴控股集团等公司10个岗位 >
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务