本文可以学习到以下内容:

  1. RFM 模型的原理及代码实现
  2. 使用 pandas 中的 read_sql 读取 sqlite 中的数据
  3. 使用 dropna 删除含有缺失数据的行
  4. 使用 to_datetime、map 方法计算距离用户上次消费所过去的天数
  5. 使用 groupby+agg 方法统计消费频次、消费总金额
  6. 使用 merge 方法合并 datafram 数据
  7. 使用 quantile 方法计算用户消费数据的分位数
  8. 使用 cut 方法将消费数据划分不同的区间,并打上不同的标签
  9. 使用 value_counts 方法统计各个用户标签的数据量及占比
  10. 使用 pyecharts 绘制环形图

运营部的同学需要对客户进行分类管理,需要数据部门提供一个方案进行参考。

小凡提出用 RFM模型 可以快速方便的将用户进行区分,模型的含义:

Recent:用户最近一次购买商品距今的时长

Frequency:用户在一段时间购买商品的次数

Mount:用户在一段时间内消费的金额

将这三个维度的数据划分不同的区间,每个区间对应相应的分数,最后根据总分将用户划分不同的标签,方便管理。

众人听后,一致通过该方案,并任命小凡为该项目的负责人。

小凡常用的数据分析工具:

import os
import datetime
import numpy as np
import pandas as pd
from sqlalchemy import create_engine

数据放在上一级的目录下名为 data.db 的文件

# 数据库地址:数据库放在上一级目录下
db_path = os.path.join(os.path.dirname(os.getcwd()), "data.db")
engine_path = "sqlite:///" + db_path
# 创建数据库引擎
engine = create_engine(engine_path)
# sql 语句
sql = """
select * from business
# read_sql 获取数据
df = pd.read_sql(sql,engine)
# 随机展示 5 
df.sample(5)
 

user_id:用户唯一id字段

create_time:订单创建时间

order_id:订单id

amount:订单金额

df.info()

可以看到create_time数据量为76048,amount的数据量为76043,说明数据中存在缺失,而且缺失数据占比不大,所以,使用 dropna 方法将含有缺失的数据删除。

# create_time和amount有缺失值,去掉缺失值
df2 = df.copy()
# dropna() 默认只要该行有 nan 值就删除
df2 = df2.dropna()
df2.info()
# 查看数据量
len(df2.user_id.unique())
# 55540

删除后的数据有76041条,有55540名客户。

分析 Recent

数据中的 create_time 为订单创建时间,可以用 to_datetime 方法计算出时间差

同一个用户又有多次购买记录,用 groupby 和 agg 的方法统计出最小的时间差

now_ = pd.to_datetime(datetime.datetime.now())
# 添加时间差数据
df2["recent"] = df2["create_time"].map(lambda x:(now_-pd.to_datetime(x)).days)
df2.sample(5)
# 用户最近一次购买商品的时间
recent_df = df2.groupby(by="user_id",as_index=False).agg({"recent":"min"})

分析 Frequency

根据 user_id 将用户分组,对 order_id 计数计算出用户的购买频率

frequency_df = df2.groupby(by="user_id",as_index=False).agg({"order_id":"count"})
frequency_df.sort_values(by="order_id",ascending=False).head()

分析 Mount

根据 user_id 将用户分组,对 amount 求和计算出用户的消费金额

mount_df = df2.groupby(by="user_id",as_index=False).agg({"amount":"sum"})
mount_df.sort_values(by="amount",ascending=False).head()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-e87f8pc8-1641883628124)(./图片/6.png)]

RFM模型

将分析完成的数据根据 user_id 合并到一起方便分析

# 根据 user_id 合并数据
rfm_df = recent_df.merge(
    frequency_df,on="user_id",how="left"
).merge(
    mount_df,on="user_id",how="left"
rfm_df2 = rfm_df.copy()
rfm_df2.head()

分位数分层

np.linespace 获取(0,1)之间的等分点

quantile 根据划分好的等分点,计算出对应的原始数据

mount_labels = [1,2,3,4,5]
m_bins = rfm_df2["amount"].quantile(q=np.linspace(0,1,num=6),interpolation='nearest')
recent_labels = [5,4,3,2,1]
r_bins = rfm_df2["recent"].quantile(q=np.linspace(0,1,num=6),interpolation='nearest')
rfm_df2["R"] = pd.cut(rfm_df2["recent"],bins=r_bins,labels=recent_labels,include_lowest=True)
rfm_df2["M"] = pd.cut(rfm_df2["amount"],bins=m_bins,labels=mount_labels,include_lowest=True)
rfm_df2.head()

自定义分层

客户的购买频率集中在1次,使用分位数效果不佳,用自定义的区间来划分

frequency_bins = [1,3,5,12]
frequency_labels = [1,2,3]
rfm_df2["F"] = pd.cut(
    rfm_df2["order_id"]
    ,bins=frequency_bins
    ,labels=frequency_labels
    ,include_lowest=True
rfm_df2.sample(5)

定义客户标签

定义一个总分 RFM,其中各权益的占比为 R:F:M=3:2:2

使用 cut 客户划分为 5 个不同的等级

使用 value_counts 统计各标签的数量

rfm_df2 = rfm_df2.astype(int)
rfm_df2["RFM"] = rfm_df2["R"]*3+rfm_df2["F"]*2+rfm_df2["M"]*5
rfm_bins =rfm_df2["RFM"].quantile(q=np.linspace(0,1,num=6),interpolation='nearest').unique()
rfm_labels = ['流失客户','一般维持客户','重要挽留客户','重要唤回客户','重要价值客户']
rfm_df2["客户标签"] = pd.cut(
    rfm_df2["RFM"],
    bins=rfm_bins,
    labels=rfm_labels,
    include_lowest=True,
    duplicates="drop"
rfm_df2["客户标签"].value_counts()

数据可视化

用 pyecharts 可视化绘制饼图

from pyecharts import options as opts
from pyecharts.charts import Pie
from pyecharts.faker import Faker
i = rfm_df2["客户标签"].value_counts().index.tolist()
v = rfm_df2["客户标签"].value_counts().values.tolist()
c = (
    Pie()
    .add(
        [list(z) for z in zip(i, v)],
        radius=["30%", "75%"],
    .set_global_opts(
        title_opts=opts.TitleOpts(title="客户分层占比"),
        legend_opts=opts.LegendOpts(orient="vertical", pos_top="15%", pos_left="2%"),
    .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
c.render_notebook()

RFM模型不需要任何算法的支撑,除python外,excel、sql等工具都可以实现。核心思想就是将三个指标划分出不同的区间,根据区间的不同获取相应的权重。

小凡完成该模型后,将输出的结果保存为 Excel 发给运营部,为业务人员对客户采用不同的营销方式提供了参考。

链接:https://pan.baidu.com/s/1JGZjJsABkWA52OFPaLMP2g?pwd=jle6
提取码:jle6

1. RFM 模型的原理及代码实现2. 使用 pandas 中的 read_sql 读取 sqlite 中的数据 3. 使用 to_datetime、map 方法计算距离用户上次消费所过去的天数4. 使用 groupby+agg 方法统计消费频次、消费总金额5. 使用 merge 方法合并 datafram 数据6. 使用 quantile 方法计算用户消费数据的分位数
基于PythonRFM模型电商数据分析及可视化.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、期末课程大作业等,具有较高的学习价值。 基于PythonRFM模型电商数据分析及可视化.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、期末课程大作业等,具有较高的学习价值。 基于PythonRFM模型电商数据分析及可视化.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机相关专业的学生或从业者下载使用,也可作为期末课程设计、期末课程大作业等,具有较高的学习价值。 基于PythonRFM模型电商数据分析及可视化.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!放心下载使用。 该项目资源
最近正好刚帮某电信行业完成一个数据挖掘工作,其中的RFM模型还是有一定代表性,就再把数据挖掘RFM模型的建模思路细节与大家分享一下吧!手机充值业务是一项主要电信业务形式,客户的充值行为记录正好满足RFM模型的交易数据要求。根据美国数据库营销研究所ArthurHughes的研究,客户数据库中有个神奇的要素,这个要素构成了数据分析最好的指标:最近一次消费(Recency)、消费频率(Frequency)、消费金额(Monetary)。我早期两篇博文已详述了RFM思想和IBMModeler操作过程,有兴趣的朋友可以阅读!RFM模型:R(Recency)表示客户最近一次购买的时间有多远,F(Fre
  RFM模型是衡量客户价值和客户创利能力的重要工具和手段。在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的。   该模型通过一个客户的近期购买行为®、购买的总体频率(F)以及花了多少钱(M)项指标来描述该客户的价值状况,从而能够更加准确地将成本和精力更精确的花在用户层次身上,实现针对性的营销。   详细来说,R指的是客户最后一次下单时间距离今天多少天了,该指标与客户的复购和流失直接相关。F指标指的是客户的下单频率,即客户在某个时间段内共消费了多少次,该指标用于 RFM(Recency Frequency Monetary)模型是衡量客户价值和客户创利能力的重要工具和手段。在众多的客户关系管理(CRM)的分析模式中,RFM模型是被广泛提到的。 RFM模型是属于业务分析方法与模型中的部分。它的本质是用户分类。本文将用现代最流行的编程语言---Python语言来实践课堂上讲解的RFM模型,将用户进行分类。 本文采用Anaconda进行Python编译,主要涉及的Python模块: pandas ma...
每个产品和公司都需要做用户的精细化运营,它是实现用户价值最大化和企业效益最优化的利器。通过将用户进行分层:如高价值用户、潜在价值用户、新用户、流失用户等,针对不同群体制定个性化的营销策略和客户服务,进而促进业务的增长和盈利。RFM模型用户分层常用模型之一。其他常见的用户分析模型还有:用户生命周期模型、行为分析模型、人口统计学模型RFM模型是一种基于用户购买行为的分析模型,R(Recency)表示用户上一次交易的间隔时间,F(Frequency)表示用户的消费频率,M(Monetary)表示消费金额。
Python 案例-基于RFM用户价值度模型和基于AdaBoost的营销响应预测,依赖库:time、numpy、pandas、mysql.connector   程序输入:sales.csv   程序输出:RFM得分数据写本地文件sales_rfm_score.csv和数据表(sales_rfm_score)   注意:Python的工作目录当前文件夹目录,如果不是请使用如下方法切换:    点击PyCharm底部调试栏中的Python Console,如果按照本书的正常安装部署会调用iPython交互窗口;在打开的交互环境中输入cd [路径]。   完成的功能:将数据写入数据库、查找数据库是否存在目标表,如果没有则新建、保存RFM得分到本地文件、保存RFM得分到MySQL数据库等。
我可以为您提供一些有关构建python数据分析模型的建议。首先,您需要搭建一个python环境,然后安装一些必要的库,如NumPy、Pandas和Matplotlib等,以便您可以使用它们来构建数据分析模型。您还可以使用机器学习库,如Scikit-Learn和TensorFlow,来构建更复杂的模型。最后,您可以使用Jupyter Notebook来实现可视化,以便更好地理解您的数据。
### 回答1: RFM模型是一种经典的客户价值评估模型,通过对客户的购买行为进行分析,对客户的价值和忠诚度进行评估和分类。RFM模型包括个维度:最近一次交易时间(Recency)、交易次数(Frequency)和交易金额(Monetary)。通过将客户分为不同的类别,可以更好地了解他们的消费习惯和购买行为,从而针对性地进行营销活动。 在RFM模型中,Recency表示客户最近一次购买距今的时间,可以反映客户的忠诚度和活跃度;Frequency表示客户购买的频率,可以反映客户的稳定性和购买力;Monetary表示客户的购买金额,可以反映客户的消费水平和价值。通过对这个指标进行综合分析,可以得到每个客户的RFM得分,并将客户按照得分分为不同的等级,如A类客户、B类客户等等。 在实际应用中,可以根据RFM模型的结果采取针对性的措施,如针对A类客户进行更多的关怀和奖励活动,提高他们的忠诚度和消费频率;针对B类客户进行促销活动,鼓励他们增加购买次数和金额;针对C类客户进行回收和减少开销,避免无效的损失。 总之,RFM模型是一种实用的客户价值评估模型,通过对客户的购买行为进行细致分析,可以更好地了解客户的消费趋势和行为习惯,从而制定更加精准的营销策略,提高企业的销售额和客户价值。 ### 回答2: Python中的RFM模型可以帮助企业进行顾客价值分析,以更好地了解顾客的特点和行为,便于提升营销策略和增加企业收益。RFM的全称是Recency, Frequency, Monetary,即最近一次消费时间(Recency)、购买频率(Frequency)、消费金额(Monetary)。 在Python中,可以使用Pandas等数据处理库对顾客数据进行预处理,然后使用RFM模型进行分析。首先,需要对数据进行分组和计算,得到每个顾客的Recency、Frequency、Monetary值。Recency计算方法为最新日期减去该顾客最后一次购买日期;Frequency计算为该顾客购买的次数;Monetary计算为该顾客购买的总金额。 接下来,可以使用K-means聚类算法对顾客进行分类,根据不同的RFM值将顾客分成不同的群组,从而更好地了解不同群组的消费行为和价值。可以使用Python中的Scikit-learn等机器学习库实现聚类算法。 最后,可以根据不同群组的消费行为及价值,制定更好的营销策略,比如针对高价值的顾客提供更加个性化的服务及优惠,针对低价值的顾客提供更具吸引力的促销策略,从而提高企业的收益。 总之,Python中的RFM模型可以帮助企业更好地了解顾客特点和行为,提升营销策略和收益。但是在实际使用中,需要注意数据清洗和预处理、算法选择和参数调节等问题,以确保模型结果的准确性和有效性。 ### 回答3: RFM模型是一种基于客户价值的分析模型,用于分析客户的"最近一次购买时间"(Recency)、"购买频率"(Frequency)和"平均购买金额"(Monetary)这个维度的特征,根据这个特征划分不同的客户群体,为客户分类和个性化营销提供指导。Python是一个功能强大的编程语言,可以利用Python实现RFM模型,使得RFM模型更加高效、精准。 首先,通过Python对需要分析的数据进行处理和清洗,然后计算每个客户的"最近一次购买时间"、"购买频率"和"平均购买金额"。接下来,计算每个客户的RFM得分,同时,确定每个维度的分值和权重。最后,将客户进行分组,根据分数高低细分为不同的客户群体,以便于执行不同的营销策略。 在Python中,可以使用pandas和numpy等库来进行数据处理和计算,使用matplotlib和seaborn等库来进行数据可视化。通过RFM模型的应用,可以更好地适应客户市场的差异化需求,实现更个性化、效率化的营销,增强客户忠诚度和满意度。 总之,Python RFM模型的应用可以实现对客户数据的高效处理和分析,更加方便地进行营销策略的调整和迭代,提高客户的购买体验和满意度,为企业的可持续发展创造更大的价值。
nnx-1.9.0.tar.gz (9.8 MB) Installing build dependencies ... done Getting requirements to build wheel ... error error: subprocess-exited-with-error AssertionError: Could not find "cmake" executable! 数据资源整理【二】:爬虫获取329万多条姓名数据并保存为sqlite3、Excel、csv文件【文末下载链接】 Joe Lin25: