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

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

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

import pandas as pd
import pandas as pd

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)  # 不自动换行显示

# pd.quantile()为求分位数操作,需要自行在里面添加数值
# 默认值:
# quantile( q=0.5, axis: 'Axis' = 0, numeric_only: 'bool' = True, interpolation:'str' = 'linear')

# 第一步:先定义分位数
r1 = sales["recency"].quantile(q=0.25)
r2 = sales["recency"].quantile(q=0.5)
r3 = sales["recency"].quantile(q=0.75)

f1 = sales["frequency"].quantile(q=0.25)
f2 = sales["frequency"].quantile(q=0.5)
f3 = sales["frequency"].quantile(q=0.75)

m1 = sales["monetary"].quantile(q=0.25)
m2 = sales["monetary"].quantile(q=0.5)
m3 = sales["monetary"].quantile(q=0.75)

# 第二步:分别定义分段函数
def r_value(x):
    if x <= r1:
        return 4
    elif x > r1 and x <= r2:
        return 3
    elif x > r2 and x <= r3:
        return 2
    else:
        return 1


def f_value(x):
    if x >= f3:
        return 4
    elif x >= f2 and x < f3:
        return 3
    elif x > f1 and x <= f2:
        return 2
    else:
        return 1


def m_value(x):
    if x >= m3:
        return 4
    elif x >= m2 and x < m3:
        return 3
    elif x > m1 and x <= m2:
        return 2
    else:
        return 1

sales["RFMClass"] = sales["recency"].apply(r_value).astype("str")+sales["frequency"].apply(f_value).astype("str")+sales["monetary"].apply(m_value).astype("str")

# 结果
print(sales.head())

print(sales['RFMClass' == '444'].head())

学会惹

全部评论

相关推荐

一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
09-20 16:43
已编辑
武汉商学院 Java
牛肉爆大虾:没救了,哥。你那黑马点评和尚庭公寓,我都看见不知道多少次了。你这和郭德纲(甚至都不是叶问)赤手空拳参加二战没两样。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务