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

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

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

import pandas as pd
import numpy as np

# 1.读取数据
df = pd.read_csv("sales.csv", encoding="utf8")

# 2.评分
df["R_Quartile"] = df['recency'].apply(lambda x : 4 if x > df['recency'].quantile(0.75) else (3 if x <= df['recency'].quantile(0.5) else (2 if x <= df['recency'].quantile(0.25) else 1)))

df["F_Quartile"] = df['frequency'].apply(lambda x : 1 if x > df['frequency'].quantile(0.75) else (2 if x <= df['frequency'].quantile(0.5) else (3 if x <= df['frequency'].quantile(0.25) else 4)))

df["M_Quartile"] = df['monetary'].apply(lambda x : 1 if x > df['monetary'].quantile(0.75) else (2 if x <= df['monetary'].quantile(0.5) else (3 if x <= df['monetary'].quantile(0.25) else 4)))

# 3.拼接新的列;这里如果不转为str的话,会变成int相加的形式
df['RFMClass'] = pd.concat([df["R_Quartile"].astype(str), df["F_Quartile"].astype(str), df["M_Quartile"].astype(str)], axis=0, ignore_index=True)

# 4.输出结果
print(df.head().set_index(pd.Index(range(5)))[['user_id', 'recency' ,'frequency', 'monetary', 'RFMClass']])
print()
print(df.sort_values(by=['RFMClass'], ascending=False, inplace=False).head()[['user_id', 'recency' ,'frequency', 'monetary', 'RFMClass']])

全部评论

相关推荐

10-24 00:54
已编辑
门头沟学院 Java
牛客20646354...:这连小厂都找不到就离谱,只能说可能你根本没投什么小厂。说实话现在都要11月了,没什么岗位了。其实最好是在9月找,那时候暑假工刚走,岗位多的是,现在都占满了岗位了,秋招的秋招,顶替暑假工的也基本上都顶替了。 只能多投了,简历其实都差不多,你这都不是外卖+点评去找实习了,已经比好多人优秀了。实在找不到,可以降低一些标准的,能投到自研项目的小厂说实话可能比你去中大厂能学到更多东西。因为中大厂最多给你看一点点模块功能,小厂基本上全部代码甚至几个项目的代码都能拿到。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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