r语言 月度消费频次_CD网站用户消费行为分析

本文使用R语言分析CD网站的用户消费行为,涉及月度消费频次、回购率、复购率、用户分层、RFM模型等方面。通过用户维度、订单维度和时间维度的分析,揭示了用户的消费习惯和价值,发现约20%的客户贡献了80%的消费金额。此外,RFM模型显示重要价值客户和重要保持客户的消费特征,为用户管理和营销策略提供依据。
摘要由CSDN通过智能技术生成

本篇文章从用户分层,生命周期,回购率,复购率,留存率等指标观察用户的消费行为,最后通过RFM模型对客户进行分类。

主要从以下几个角度,对CD数据集进行了分析

1.用户维度分析

2.订单维度分析

3.时间维度分析

4.用户的消费行为分析

回购率、复购率、客户分层分析、客户质量分析、客户的生命周期、客户的留存率、RFM模型

注:在RFM模型中,本文处理的与其他博客中的不一致,其差异主要是计算时间差时的是否添加负号,本文没有添加,理由如下:

R = 每一位客户的最后一次消费日期-‘今天’

'今天'指的是数据集中最大的日期

其R值为负数,其值越大表示最近一次消费时间越近,该客户的价值越大,与F,M的趋势是一样的,F:表示消费商品数量,其F越大,该客户的价值越大,同理,M(消费金额)越大,客户价值越大。

当然了,是否添加负号,其最后的结果肯定不一致。

import pandas as pd 
import numpy as np
import datetime

import matplotlib.pyplot as plt
import seaborn as sns
plt.style.use('ggplot')
data = pd.read_csv('/Users/llh/Desktop/CDNOW_master.txt',sep='s+',
                   names=['user_id','order_dt','product_num','order_amount'])
data.head()

01eec62f943520db3d0ca9aceea8f9c1.png

1.数据集中字段比较少,用户Id,订单日期,购买产品数量,订单金额

2.注意到一个用户在一天内可能发生多次购买,比如用户2

data.info()

a53497b156ff28fa072f3a8ab9da56d3.png

1.数据集共有69659条数据,并没有缺失值 2.日期列需转化为日期格式

data.describe()

914a7cb9f2ef8fdb7ad4642003c53737.png

由上得出:

0.共有23570个客户的数据

1.用户平均购买商品数量为2.4件,75分位数为3,最大值为99,说明绝大部分客户的订单数量都小于3件

2.用户平均消费金额为35.89,75分位数为43.7,最大值为1286,说明绝大部分的订单金额都是小金额

3.订单金额的最小值为0,这个是否为异常数据,是不是赠送商品或者虚拟商品?

一般来说,消费类型的数据都是长尾形态,20%的客户贡献了80%的消费金额

到目前为止,对整个数据有了基本的认识,接下来进行日期转换和排查异常数据

时间序列转换

data['order_dt'] = pd.to_datetime(data.order_dt,format='%Y%m%d')

data['month'] = data.order_dt.astype('datetime64[M]')
# data['year'] = pd.order_dt.map(lambda x: x.year)
# #提取月份
# data['month'] = pd.order_dt.map(lambda x: x.month)
# #提取day
# data['day'] = pd.order_dt.map(lambda x: x.day)

data.head()
#data = data.drop(data[data.order_amount==0].index,axis=0)

74240474b906382df3aaab8701a153e5.png

数据分析

1.用户维度分析

2.订单维度分析

3.时间维度分析

4.用户的消费行为分析

回购率、复购率、客户分层分析、客户质量分析、客户的生命周期、客户的留存率

用户维度分析

user_product = data.groupby('user_id').sum()
user_product.describe()

33e6a06bcd75cf0197efe9afae2e7a12.png

1.可以看到每位用户的平均购买商品数量为7件左右,最大值为1033件,该客户应该属于狂热客户

2.每位用户的平均消费金额和75分位数很接近,最大消费金额为13990左右,肯定存在少量高消费客户

用户散点图

user = pd.pivot_table(data,values=['product_num','order_amount'],index='user_id',aggfunc='sum')
user.head()
plt.scatter('product_num','order_amount',data=user)
plt.xlabel('用户商品数量')
plt.ylabel('用户的消费金额')

a4205946ee800b5457c215bf0bdc5e05.png

dbd20a7c27836882eeadecf38b5cb158.png

用户消费行为比较健康而且规律性很强。

因为这是CD网站的销售数据,商品单一,金额和商品量的关系也因此呈线性,没几个离群点

消费能力特别强的客户有但是量很少

plt.figure(figsize=(13,4))
plt.subplot(121)
sns.distplot(user.order_amount)
plt.title('用户订单金额的频次图')
plt.subplot(122)
sns.distplot(user.product_num)
plt.title('用户订单数量的频次图')

ffc1e4aab87cb635a5c5f86bc9afe065.png

从直方图可以看到,大部分用户的消费能力确实不高,高消费用户在图上几乎看不到。这也确实符合消费行为的行业规律

订单维度分析

绘制每笔订单的散点图

plt.figure(figsize=(13,4))
plt.scatter('product_num','order_amount',data=data)
plt.xlabel('商品数量')
plt.ylabel('订单金额')
plt.title('商品数量与订单金额的关系(每笔订单)')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值