题解 | #筛选某店铺最有价值用户中消费最多前5名#
筛选某店铺最有价值用户中消费最多前5名
https://www.nowcoder.com/practice/58655010a7c34e9fb2b7b491c3f79ca4
import pandas as pd
sales = pd.read_csv("sales.csv")
quant = sales[["recency", "frequency", "monetary"]].quantile([0.25, 0.5, 0.75])
def apply_score(x, col):
if x <= quant[col][0.25]:
score = 4
elif x <= quant[col][0.5]:
score = 3
elif x <= quant[col][0.75]:
score = 2
else:
score = 1
return score
sales["R_Quartile"] = sales["recency"].map(lambda x: apply_score(x, "recency"))
sales["F_Quartile"] = sales["frequency"].map(lambda x: apply_score(x, "frequency"))
sales["M_Quartile"] = sales["monetary"].map(lambda x: apply_score(x, "monetary"))
sales["RFMClass"] = (
sales["R_Quartile"].astype(str)
+ sales["F_Quartile"].astype(str)
+ sales["M_Quartile"].astype(str)
)
pd.set_option("display.max_columns", None)
pd.set_option("display.max_rows", None)
pd.set_option("display.width", 300)
sales = sales.drop(["R_Quartile", "F_Quartile", "M_Quartile"], axis=1)
print(sales.head(5))
print("\n")
result = sales[sales["RFMClass"] == "444"].sort_values(by="monetary", ascending=False)
result.index = range(len(result))
print(result.head(5))

