手把手 | 教你用几行Python和消费数据做客户细分
细分客户群是向客户提供个性化体验的关键。它可以提供关于客户行为、习惯与偏好的相关信息,帮助企业提供量身定制的营销活动从而改善客户体验。在业界人们往往把他吹嘘成提高收入的万能药,但实际上这个操作并不复杂,本文就将带你用简单的代码实现这一项目。
客户细分
我们需要创建什么?
通过使用消费交易数据,我们将会通过创建一个2 x 2的有价值属性的矩阵来得到4个客户群。每一个客户群将与其他群体有两大区别,即当前客户价值和潜在客户价值。
我们将使用什么技术?
我们将使用RFM模型从消费交易数据中创建所需变量。RFM模型代表:
最近消费(Recency):他们最近一次消费是什么时候?
消费频率(Frequency):他们多久消费一次、一次消费多久?
消费金额(Monetary):他们消费了多少?
该模型通常被用于在三个属性交叉处寻找高价值客户。但在本例中,我们将仅适用R(最近消费)与M(消费金额)来创建二维矩阵。
RFM模型
我们使用什么数据?
我们将使用Tableau提供的消费数据样本——它也被称为“Global Superstore”。它通常被用于预测与时间序列分析。该数据集包含超过1500位不同客户4年的消费数据。既然我们做的是行为细分而非人口细分,我们将通过仅选择B2C领域的消费者以及美国区域的消费数据来去除潜在的人口偏差。
我们采取什么方法?
第0步:导入、筛选、清理、合并消费者层级数据。
第1步:为每一位消费者创建RFM变量。
第2步:为实现自动细分,我们将使用R与M变量的80%分位数;我们其实还可以用k均值聚类(K-mean Clustering)或者利用商业背景知识来进行群体区分——比如,全球超市企业用户将活跃客户定义为最近一次订单在100天内的客户。
第3步:计算RM分数,并对客户进行排序。
第4步:可视化价值矩阵,并对关键指标进行进一步分析。[page]分页标题#e#
Python实现:
第0步:导入、筛选、清理、合并消费者层级数据。
import matplotlib as plt
import numpy as np
%matplotlib inline
import warnings
warnings.filterwarnings('ignore')
import pandas as pd
url = 'https://github.com/tristanga/Data-Analysis/raw/master/Global%20Superstore.xls'
df = pd.read_excel(url)
df = df[(df.Segment == 'Consumer') & (df.Country == 'United States')]
df.head()
第1步:为每一位消费者创建RFM变量。
df_RFM = df.groupby('Customer ID').agg({'Order Date': lambda y: (df['Order Date'].max().date() - y.max().date()).days,
'Order ID': lambda y: len(y.unique()),
'Sales': lambda y: round(y.sum(),2)})
df_RFM.columns = ['Recency', 'Frequency', 'Monetary']
df_RFM = df_RFM.sort_values('Monetary', ascending=False)
df_RFM.head()
第2步:使用R与M变量的80%分位数实现自动细分。
# We will use the 80% quantile for each feature
quantiles = df_RFM.quantile(q=[0.8])
print(quantiles)
df_RFM['R']=np.where(df_RFM['Recency']<=int(quantiles.Recency.values), 2, 1)
df_RFM['F']=np.where(df_RFM['Frequency']>=int(quantiles.Frequency.values), 2, 1)
df_RFM['M']=np.where(df_RFM['Monetary']>=int(quantiles.Monetary.values), 2, 1)
df_RFM.head()
第3步:计算RM分数,并对客户进行排序。
# To do the 2 x 2 matrix we will only use Recency & Monetary
df_RFM['RMScore'] = df_RFM.M.map(str)+df_RFM.R.map(str)
df_RFM = df_RFM.reset_index()
df_RFM_SUM = df_RFM.groupby('RMScore').agg({'Customer ID': lambda y: len(y.unique()),
'Frequency': lambda y: round(y.mean(),0),
'Recency': lambda y: round(y.mean(),0),
'R': lambda y: round(y.mean(),0),
'M': lambda y: round(y.mean(),0),
'Monetary': lambda y: round(y.mean(),0)})
df_RFM_SUM = df_RFM_SUM.sort_values('RMScore', ascending=False)
df_RFM_SUM.head()
[page]分页标题#e#
第4步:可视化价值矩阵,并对关键指标进行进一步分析。
# 1) Average Monetary Matrix
df_RFM_M = df_RFM_SUM.pivot(index='M', columns='R', values='Monetary')
df_RFM_M= df_RFM_M.reset_index().sort_values(['M'], ascending = False).set_index(['M'])
df_RFM_M
# 2) Number of Customer Matrix
df_RFM_C = df_RFM_SUM.pivot(index='M', columns='R', values='Customer ID')
df_RFM_C= df_RFM_C.reset_index().sort_values(['M'], ascending = False).set_index(['M'])
df_RFM_C
# 3) Recency Matrix
最终矩阵(左上:流失客户;右上:明星客户;左下:次要客户;右下:新客户)
一些简单的销售与营销策略的启发性实例
“流失客户”分类中的客户人数不是很多,并且从他们身上得到的的平均收入高于“明星客户”分类。既然人数不多,从客户层面与业务部门合作对这些客户进行分析研究并制定一个留住他们的策略应该不难:给他们打电话或者直接见面,说不定就可以把他们挪到“明星客户”分类(例如,高参与度客户)。
“次要客户”分类的平均最近消费时间非常久远(超过1年,而参与度较高的客户平均来说该数据只有60至70天)。发起一些发放优惠券一类的营销活动可能能够带来新的消费,并帮助把该类客户挪至“新客户”分类(例如,高参与度客户)。
简单策略实例(上:打电话;下:电邮营销)
在Github上可以找到本Jupyter Notebook
https://github.com/tristanga/Data-Analysis/blob/master/Notebooks/Automatic Customer Segmentation with RFM %28Python%29.ipynb
相关报道:
https://towardsdatascience.com/how-to-automatically-segment-customers-using-purchase-data-and-a-few-lines-of-python-36939fb587a4
本文首发于微信公众号:大数据文摘。文章内容属作者个人观点,不代表和讯网立场。投资者据此操作,风险请自担。[page]分页标题[/page]

- AMD助力微软Windows 11 为用户带来强大、可靠的计算能力2021-10-09 16:20
- 游戏玩家为之疯狂!Chinajoy2021 AMD展台那些火爆的瞬间2021-08-02 15:39
- 全场最佳 AMD Chinajoy2021展台圆满收官2021-08-02 15:38
- AMD 锐龙5000G系列处理器正式亮相Chinajoy20212021-08-02 11:50
- 极速制胜 制霸游戏 AMD携多款游戏神器扬威Chinajoy2021-08-02 11:44
- 央视《新闻联播》头条聚焦铁建重工,聚力攻克“卡脖子”技术难题2021-03-22 11:08
- 刚刚!我又上央视新闻联播头条了!2021-03-22 11:04
- 中国电科(3月1日-3月7日)要闻回顾 | 资讯轻阅读2021-03-22 10:47
- 我国将建第一个国家公园:为何是三江源2021-03-22 10:43
- 美国硅谷上演“大逃亡”:郊区成科技精英避难所2021-03-22 10:41

- 11:53京东商家成长白皮书揭秘:卖河南铁棍山药,半年营收增100倍
- 10:02LeadeRobot具身智能应用标杆:无人机X柔韧具身智能,空中精准作业
- 10:27恩捷李晓明:多方举措齐上阵,全力助推新能源领域蓬勃发展
- 09:59JJ斗地主:严守准则,全力阻止任何赌博活动!
- 09:47品质优先x交互跃迁:双轮驱动下的HUD千亿市场确定性增长
- 14:19恩捷李晓明:以合作与创新为驱动,积极助力新能源产业迈向新征程
- 09:18JJ斗地主:秉持底线,严格禁止各类赌博活动!
- 18:21TRON x HTX DAO 2025 香港之夜盛大举行:坚守行业建设,
- 11:24美的 X 站酷 | 一场关于集团IP设计生态的破圈实验
- 11:20美的 X 站酷 | 一场关于集团IP设计生态的破圈实验
- 11:19美的 X 站酷 | 一场关于集团IP设计生态的破圈实验
- 17:56“区块链奥特曼”单挑“金融哥斯拉”:孙宇晨要做Web3守夜人
- 15:52解密福布斯选择标准:为什么是孙宇晨?——从云栖湖畔到加密帝国,新一代中国
- 15:55恩捷李晓明:多维度发力,逐鹿新能源材料领域新征程
- 15:11中国首部《癌因性厌食诊疗专家共识》发布,美适亚甲地孕酮口服混悬液获推荐
- 11:28恩捷李晓明:湖南恩捷亮相高峰论坛,展现固态电池领域实力与发展决心
- 10:57JJ 斗地主:以禁止赌博为原则,打造纯净游戏平台
- 10:01苏州稻香村牡丹鲜花饼焕新上市 颜值、口味全面升级!
- 16:27推出新一期股票激励计划,舍得酒业凝聚发展共识,着眼长远
- 08:45中创碳投发布《亚洲地区主要商业银行气候相关信息披露洞察(2024)》
- 08:33周大生经典“哇!故宫的二十四节气”绘就玉兰与春意的永恒诗篇
- 17:51寿山福海公建民营机构样板受瞩目,政企合作共促养老产业高质量发展
- 17:50寿山福海公建民营机构样板受瞩目,政企合作共促养老产业高质量发展
- 17:36复兴正当时!沱牌特级T68引领沱牌加快成为“名酒典范”
- 15:07恩捷李晓明:凭创新实力闪耀“2024新经济企业TOP500”榜单
- 16:55梵高《野玫瑰》与周大生梵高Van Gogh系列:艺术与情感的传承与升华
- 10:48JJ 斗地主:严守禁止赌博准则,全方位打造棋牌游戏健康新局面
- 16:15东方药林受邀参加“2025共筑满意消费3·15企业直播联盟”活动
- 15:54宜享花:科技赋能金融,助力民营经济高质量发展
- 14:37沈丘县开展“世界水日”“中国水周”主题宣传活动


