栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Pandas实战-RFM用户分析模型(学习笔记)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pandas实战-RFM用户分析模型(学习笔记)

本次使用的数据为2019年客户订单数据,数据详情如下:

该数据有订单日期,用户名以及订单金额。调用.info()来查看数据的大概信息。

import pandas as pd

data = pd.read_csv('2019年用户订单数据.csv')
print(data.info())

在校对完、清理完数据后,我们就可以计算该公司客户RFM值了。

R:我们可以用2019年最后一天减去某用户最后一次订单日期获得。

F:我们可以统计用户出现的频率来获得。

M:我们可以计算某用户订单金额的总量来获得。

data['订单日期'] = pd.to_datetime(data['订单日期']) #转换日期格式
data_rfm = data.groupby('用户名').agg({
  '订单日期': lambda x: (pd.to_datetime('2019-12-31')-x.max()).days, #计算R
  '用户名': lambda x: len(x), #计算F
  '订单金额': lambda x: x.sum() #计算M
})

 在计算完客户RFM值之后,我们就需要根据RFM对客户进行评估。

客户类型

R

F

M

重要价值客户

重要唤回客户

重要深耕客户

重要挽留客户

潜力客户

新客户

一般维持客户

流失客户

我们根据分位数来对RFM进行打分,再将分数的平均值作为基准值,将大于平均值定义为高,低于平均值定义为低。继而对客户进行评价。

#计算R得分
def r_score(x):
  if x<=28:
    return 4
  elif x<=57:
    return 3
  elif x<=118:
    return 2
  else:
    return 1
#计算F得分
def f_score(x):
  if x<=1:
    return 1
  elif x<=2:
    return 2
  elif x<=3:
    return 3
  else:
    return 4
#计算M得分
def m_score(x):
  if x<=204:
    return 1
  elif x<=606:
    return 2
  elif x<=1334:
    return 3
  else:
    return 4
#客户评价
def user_type(x):
  if x=='高高高':
    return '重要价值客户'
  elif x=='低高高':
    return '重要唤回客户'
  elif x=='高低高':
    return '重要深耕客户'
  elif x=='低低高':
    return '重要挽留客户'
  elif x=='高高低':
    return '潜力客户'
  elif x=='高低低':
    return '新客户'
  elif x=='低高低':
    return '一般维持客户'
  else:
    return '流失客户'

data_rfm['R_Score'] = data_rfm['订单日期'].apply(r_score)
data_rfm['F_Score'] = data_rfm['用户名'].apply(f_score)
data_rfm['M_Score'] = data_rfm['订单金额'].apply(m_score)

data_rfm['R'] = data_rfm['R_Score'].apply(lambda x: '高' if x > data_rfm['R_Score'].mean() else '低') #根据R对用户进行评价
data_rfm['F'] = data_rfm['F_Score'].apply(lambda x: '高' if x > data_rfm['F_Score'].mean() else '低') #根据F对用户进行评价
data_rfm['M'] = data_rfm['M_Score'].apply(lambda x: '高' if x > data_rfm['M_Score'].mean() else '低') #根据M对用户进行评价
data_rfm['RFM'] = data_rfm['R']+data_rfm['F']+data_rfm['M']
data_rfm['客户类型'] = data_rfm['RFM'].apply(user_type)

我们根据RFM模型对客户进行评价后,运用Pandas对客户类型统计然后可视化表达出来。

user_type_count = data_rfm['客户类型'].value_counts().reset_index() #统计各用户类型人数
user_type_count.rename(columns = {'index':'客户类型','客户类型':'人数'},inplace = True)
#可视化处理-绘制条形图
user_type_count.plot.bar(x='客户类型')
plt.show()

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294148.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号