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

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

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

import pandas as pd
from numpy import True_
sales = pd.read_csv('sales.csv')
pd.set_option('display.max_columns', None)# 显示所有的列,而不是以……显示
pd.set_option('display.max_rows', None)# 显示所有的行,而不是以……显示
pd.set_option('display.width', None) # 不自动换行显示
def rank(s,q):
    top_quantile=s[q].quantile(0.75)
    down_quantile=s[q].quantile(0.25)
    med=s[q].median()
    quartile=[]
    if q=='recency':
        for i in s[q]:
            if i<= down_quantile:
                quartile.append(4)
            elif i>down_quantile and i<=med:
                quartile.append(3)
            elif i>med and i<=top_quantile:
                quartile.append(2)
            else:
                quartile.append(1)
    else:
        for i in s[q]:
            if i<= down_quantile:
                quartile.append(1)
            elif i>down_quantile and i<=med:
                quartile.append(2)
            elif i>med and i<=top_quantile:
                quartile.append(3)
            else:
                quartile.append(4)
    return quartile
sales['R_Quartile']=rank(sales,'recency')
sales['F_Quartile']=rank(sales,'frequency')
sales['M_Quartile']=rank(sales,'monetary')

sales['RFMClass'] = sales['R_Quartile'].apply(str) + sales['F_Quartile'].apply(str)+ sales['M_Quartile'].apply(str)
sales.drop(['R_Quartile', 'F_Quartile', 'M_Quartile'], axis = 1, inplace=True)
print(sales.head())
print()
# print('\n') 
result = sales[sales['RFMClass'] == '444'].sort_values(by = 'monetary', ascending= False).reset_index(drop=True)
print(result.head())





全部评论

相关推荐

有没有佬投这个呀,怎么样呀求问
投递中科院空天信息创新研究院等公司10个岗位
点赞 评论 收藏
分享
投递拓竹科技等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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