今天用Python做了一个RFM模型分析,数据来源是Kaggle上的一个专门用于RFM模型学习的数据集,数据链接我会在文章附上。

日常呼唤一下,喜欢点赞呀

正文开始:

模型介绍:RFM模型根据客户活跃程度和交易金额的贡献,进行客户价值细分的一种方法。R(Recency)——最近一次交易时间间隔。基于最近一次交易日期计算的得分,距离当前日期越近,得分越高。如5分制。反映客户交易活跃度。

F(Frequency)——客户在最近一段时间内交易次数。基于交易频率计算的得分,交易频率越高,得分越高。如5分制。反映客户交易活跃度。

M(Monetray)——客户最近一段时间内交易金额。基于交易金额计算的得分,交易金额越高,得分越高。如5分制。反映客户价值。

数据:

在开始数据分析之前,先把用excel的查找空值功能,查找空值,进行数据预处理

做好知识准备+数据准备,开始数据分析!!!!

把要用的库都先引用上

import os

import numpy as np

import pandas as pd

import seaborn as sns

import datetime as dt

import matplotlib.pyplot as plt

输出数据前5条展示一下:

df = pd.read_csv('Retail_Data_Transactions.csv')

df.head()

需要查看时间列是否为时间格式,不是的话要进行修改:

df.dtypes

df["trans_date"] = pd.to_datetime(df["trans_date"])

df.dtypes

开始构建3个指标R,F,M,R指标需要先计算一下每条数据举例今天的时间差

print(df['trans_date'].min(), df['trans_date'].max())

R_today = dt.datetime(2015,3,17)

df['R_diff'] = (R_today - df['trans_date']).dt.days # 计算时间差

df.head()

再计算每个用户最近一次购买行为的时间差作为R指标的基础

R = df.groupby(by=['customer_id'])['R_diff'] #客户ID进行分组

R = R.agg([('R_diff','min')]) #求每个客户最小时间差

R.head()

构建F、M指标,F为客户交易频率,M为总交易金额

F = df.groupby(by=['customer_id'])['customer_id'].agg([('F_fre','count')])

M = df.groupby(by=['customer_id'])['tran_amount'].agg([('M_sum',sum)])

RFM = R.join(F).join(M)

RFM.head()

接下来需要构建评分体系,按照各指标的分位数进行1-4的打分。需要先查看一下分位数情况,手动进行划分

RFM.describe()

然后构建RFM总体评分指标,这个就需要大家更具自己的数据富于不同的权重了,我是R给了0.3,F给了0.4,M给了0.3

RFM["R_score"]=np.where(RFM.R_diff<=23,4,np.where(RFM.R_diff<=54,3,np.where(RFM.R_diff<=112,2,1)))

RFM["F_score"]=np.where(RFM.F_fre<=14,1,np.where(RFM.F_fre<=18,2,np.where(RFM.F_fre<=22,3,4)))

RFM["M_score"]=np.where(RFM.M_sum<=781,1,np.where(RFM.M_sum<=1227,2,np.where(RFM.M_sum<=1520,3,4)))

RFM.head()

RFM["RFM"] = RFM["R_score"]*0.3+RFM["F_score"]*0.4+RFM["M_score"]*0.3

RFM.head()

最后就是根据RFM得分,判断客户类别啦,一共8个客户类别

bins = RFM.RFM.quantile(q=np.linspace(0,1,num=9),interpolation='nearest')

labels = ['潜在客户','一般发展客户','一般保持客户','一般价值客户','重要挽留客户','重要发展客户','重要保持客户','高价值客户']

RFM['types'] = pd.cut(RFM.RFM, bins=bins, labels=labels, include_lowest=True)

RFM.head()

看一下我们这个数据集各个类别的分布情况吧,还挺平均的

plt.figure(figsize=(20,5))

sns.countplot(data=RFM,x="types")

plt.show()

大功告成!!!

期待大家点评,有什么想实现的其他数据分析模型告诉我呀,我来准备准备~

rfm模型python_使用python实现RFM模型相关推荐

  1. rfm模型python_数据分析实战——用RFM模型分析客户价值

    数据分析实战--用RFM模型分析客户价值 阿雷边学边教python数据分析第4期--数据可视化 一.介绍什么是RFM模型和作用 1.什么是RFM模型 RFM模型是衡量客户价值的一种工具,该模型通过客户 ...

  2. python knn模型_使用Python训练KNN模型并进行分类

    K临近分类算法是数据挖掘中较为简单的一种分类方法,通过计算不同数据点间的距离对数据进行分类,并对新的数据进行分类预测.我们在之前的文章<K邻近(KNN)分类和预测算法的原理及实现>和< ...

  3. sklearn实现lda模型_使用python+sklearn实现模型复杂性的影响

    本示例演示了模型复杂性是如何影响预测精度和计算性能的.数据集是用于回归(或者分类)的波士顿住房(Boston Housing)数据集(或者20 Newsgroups).对于每一类模型,我们通过选择相关 ...

  4. Python 生产者消费者模型

    Python 生产者消费者模型 文章目录 Python 生产者消费者模型 生产者消费者模型介绍 生产者消费者模型实现 函数yield 方式 多进程方式 实现一. 实现二. 多线程方式 生产者消费者模型 ...

  5. Python金融风控模型案例实战大全

    大家好,我是Toby老师,今天介绍 <Python金融风控模型案例实战大全>. 1.<Python金融风控模型案例实战大全>程覆盖多个核心知识点,包括风控建模全流程知识介绍,信 ...

  6. Python银行风控模型的建立 SVM 决策树 神经网络 三种模型比较

    一.首先要感谢原作者的无私分享 原文网页链接: Python银行风控模型的建立_DG息的博客-CSDN博客_银行风控模型 首先感谢"Python银行风控模型的建立"()这位老师,他 ...

  7. python给用户打标签_用Python实现RFM模型——互联网产品用户分层必备技巧

    1.前言 RFM模型即"R"--Recency(最近一次消费时间)."F"--Frequency(一段时间内消费频次)."M"--(一段时间 ...

  8. 【Python】RFM模型实现

    [Python]RFM模型实现 1 RFM模型 RFM模型:根据用户历史行为数据,结合业务理解,实现用户分层分类,助力用户的精准营销,是衡量客户价值和客户创利能力的重要工具和手段 Recency 最近 ...

  9. 数据分析常用五个方法三个模型(逻辑分析、多维度拆解、对比分析、假设验证、相关性分析、RFM模型、漏斗分析模型、AARRR模型)

    目录 一.逻辑树分析法 二.多维度拆解分析法 三.对比分析法 四.假设检验法/归因分析法 五. 相关性分析法 六. RFM分析模型 七. 漏斗分析模型 八. AARRR模型 一.逻辑树分析法 定义:将 ...

  10. 逻辑回归模型 python_机器学习-逻辑回归分析(Python)

    编辑推荐: 本文首先介绍这两种方法的区别和联系,然后对分类方法中的逻辑回归进行较详细的说明(包括其基本原理及评估指标),最后结合案例介绍如何利用Python进行逻辑回归分析. 本文来自于csdn,由火 ...

最新文章

  1. G20国家科技竞争力大盘点,中国科研创新表现突出,人工智能变道超车
  2. termux安装python3失败_boot空间不足导致安装python3失败
  3. iphone7无服务_iphone7基带坏了怎么办,iphone7基带修复多少钱
  4. JAVA进制及进制之间的转换
  5. flink的savepoint实验-java
  6. Java NIO总结
  7. windows和Linux查看端口占用进程并关闭
  8. Elasticsearch 嵌套类型nested
  9. Python 之 变量的基本使用
  10. HTTP协议详细介绍~超详细
  11. 实用的base.css文件
  12. HTML5网页设计基础——拼图效果
  13. unity5.0安卓开发环境配置
  14. Android实现IOS轮效果(Android Studio)
  15. springboot+shrio简易登录登出和用户权限认证。
  16. 华为语音解锁设置_华为手机免费语音转文字功能如何开启?手把手教你如何设置,超赞...
  17. SystemUI架构分析学习
  18. 论文笔记:联邦学习——Federated Learning: Strategies for Improving Communication Efficiency
  19. iOS 浏览相册功能实现 —— HERO博客
  20. 观后感《没事别看哲学书!》

热门文章

  1. 抽奖活动前端源码-可录入抽奖人名单
  2. 使用Google Analytics来统计手机网站的流量
  3. Android手机Root授权原理细节全解析
  4. Shared_ptr循环引用解决(weak_ptr的作用)
  5. django读取mysql事实数据_Django读取Mysql数据并显示在前端的实例
  6. php聚合话费充值怎么接,求充值话费接口
  7. Java并发编程:自己动手写一把可重入锁
  8. 苹果电脑安装windows双系统
  9. 【jQWidgets】API 笔记
  10. 007-绘制三角函数图像(一)