前言:本文數(shù)據(jù)量來源于網(wǎng)上,是一份CD的消費(fèi)數(shù)據(jù),數(shù)據(jù)鏈接會(huì)放在文章最后,請(qǐng)需要者自取。本文分析的主要工具為:Python以及pandas、numpy和matplotlib三個(gè)第三方工具包。
本文目錄:
分析過程如下:
1. 導(dǎo)入數(shù)據(jù)和清理數(shù)據(jù)
導(dǎo)入pandas、numpy和matplotlib及相關(guān)設(shè)置:
# 導(dǎo)入pandas、numpy和matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 讓所作圖形立即呈現(xiàn)的設(shè)置
%matplotlib inline
# 中文字符和正負(fù)號(hào)正常顯示的設(shè)置
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
讀取數(shù)據(jù):
# 源數(shù)據(jù)共有四個(gè)字段,分別為用戶ID、訂單時(shí)間、訂單商品數(shù)、訂單金額,但源數(shù)據(jù)沒有字段名,所以在這里添加字段名如下
columns=['user_id','order_dt','order_products','order_amount']
# 用\s+匹配任意空白符
df=pd.read_csv('CDNOW_master.txt',names=columns,sep='\s+')
查看前五行:
df.head()
- user_id : 用戶ID
- order_dt : 訂單時(shí)間
- order_products : 訂單商品數(shù)
- order_amount : 訂單金額
查看數(shù)據(jù)信息:
df.info()
可以知道,該份數(shù)據(jù)共有四個(gè)字段,且各個(gè)字段均沒有空值,是一份很干凈的數(shù)據(jù),但是第二個(gè)字段表示訂單時(shí)間,數(shù)據(jù)類型卻是int,所以我們需要將其轉(zhuǎn)化為時(shí)間類型datetime
# 轉(zhuǎn)換時(shí)間格式為datetime
df['order_dt']=pd.to_datetime(df.order_dt,format='%Y%m%d')
# 下面按照月份分析,所以需添加一個(gè)字段month,用它來表示訂單日期所在的月份,格式為月份的第一天
df['month']=df.order_dt.values.astype('datetime64[M]')
查看處理過后的數(shù)據(jù)前5行數(shù)據(jù):
df.head()
df.order_dt.values # 查看order_dt的值
通過查看order_dt的值可以知道,它的數(shù)據(jù)類型已經(jīng)改為datetime
至此,我們已經(jīng)完成了數(shù)據(jù)清洗工作,并添加了需要的字段month
數(shù)據(jù)描述性統(tǒng)計(jì):
df.groupby('user_id').sum().describe()
從用戶角度看,每位用戶平均購(gòu)買7張CD,最多的用戶購(gòu)買了1033張,屬于狂熱用戶了。用戶的平均消費(fèi)金額(客單價(jià))100元,標(biāo)準(zhǔn)差是240,結(jié)合分位數(shù)和最大值看,平均值才和75分位接近,肯定存在小部分的高額消費(fèi)用戶。
2. 進(jìn)行用戶消費(fèi)趨勢(shì)的分析(按月)
- 每月的消費(fèi)總金額
- 每月的訂單數(shù)量
- 每月的消費(fèi)產(chǎn)品件數(shù)
- 每月的消費(fèi)人數(shù)
- 每月用戶平均消費(fèi)金額
- 每月用戶平均消費(fèi)次數(shù)
2.1 每月的消費(fèi)總金額
按照月份進(jìn)行分組,并計(jì)算各個(gè)月份訂單的消費(fèi)總金額
grouped_month=df.groupby('month')
order_dt_amount=grouped_month.order_amount.sum()
order_dt_amount
可視化:作出消費(fèi)總金額隨時(shí)間的折線圖
order_dt_amount.plot()
plt.title('每月消費(fèi)總金額')
由上圖可知,消費(fèi)金額在前三個(gè)月達(dá)到最高峰,后續(xù)消費(fèi)較為穩(wěn)定,有輕微下降趨勢(shì)
2.2 每月的訂單數(shù)量
計(jì)算出每月的訂單數(shù)量并作出其折線圖:
# 作出每月訂單數(shù)量隨時(shí)間變化的折線圖
grouped_month.user_id.count().plot() # 注意,此處算出來的不是用戶數(shù)量而是訂單數(shù)量,用戶數(shù)量計(jì)算在后面
plt.title('每月訂單數(shù)量')
前三個(gè)月每月訂單數(shù)在10000筆左右,后續(xù)月份每月的訂單數(shù)在2500筆左右
2.3 每月消費(fèi)商品件數(shù)
計(jì)算出每月消費(fèi)商品件數(shù)并作出其折線圖:
# 作出每月消費(fèi)商品件數(shù)隨時(shí)間變化的折線圖
grouped_month.order_products.sum().plot()
plt.title('每月消費(fèi)商品件數(shù)')
前三個(gè)月每月消費(fèi)商品件數(shù)在23000件左右,后續(xù)月份每月消費(fèi)總金額在7000件左右
2.4 每月用戶數(shù)量
計(jì)算出每月的用戶數(shù)量并作出其折線圖:
# 作出每月用戶數(shù)量隨時(shí)間變化的折線圖
grouped_month.user_id.apply(lambda x: len(x.drop_duplicates())).plot()
plt.title('每月用戶數(shù)量')
# 另一種去重方式:df.groupby(['month','user_id']).count().reset_index()
前三個(gè)月每月用戶數(shù)量在9000人左右,后續(xù)月份每月用戶數(shù)量在2000人左右
2.5 每月用戶消費(fèi)的平均金額
((grouped_month.order_amount.sum())/(grouped_month.user_id.apply(lambda x: len(x.drop_duplicates())))).plot()
plt.title('每月用戶消費(fèi)的平均金額')
前三個(gè)月用戶平均消費(fèi)在40元左右,后續(xù)月份用戶平均消費(fèi)金額相比前三個(gè)月有一些提高,用戶平均消費(fèi)金額在區(qū)間[45,57.5]之間
2.6 每月用戶消費(fèi)的平均次數(shù)
計(jì)算出每月用戶消費(fèi)的平均次數(shù)并作出其折線圖:
((grouped_month.user_id.count())/(grouped_month.user_id.apply(lambda x : len(x.drop_duplicates())))).plot()
plt.title('每月用戶消費(fèi)的平均次數(shù)')
前三個(gè)月用戶消費(fèi)的平均次數(shù)逐漸增加,后續(xù)月份用戶的平均消費(fèi)次數(shù)在1.35次左右
3. 用戶個(gè)體消費(fèi)分析
- 用戶消費(fèi)商品數(shù)與消費(fèi)總金額的描述統(tǒng)計(jì)
- 用戶消費(fèi)金額和消費(fèi)商品數(shù)的散點(diǎn)圖
- 用戶消費(fèi)金額的分布圖
- 用戶消費(fèi)次數(shù)的分布圖
- 用戶累計(jì)消費(fèi)金額占比(百分之多少的用戶占了百分之多少的消費(fèi)額)
3.1 用戶消費(fèi)商品數(shù)與消費(fèi)總金額的描述統(tǒng)計(jì)
grouped_user=df.groupby('user_id')
grouped_user.sum().describe()
- 用戶平均購(gòu)買了7張CD,但是中位數(shù)只有3,說明小部分用戶購(gòu)買了大量的CD
- 用戶平均消費(fèi)了106元,中位數(shù)只有43,判斷同上,有極值干擾
3.2 消費(fèi)金額和消費(fèi)商品數(shù)的散點(diǎn)圖
# 每筆訂單消費(fèi)金額與消費(fèi)商品數(shù)的散點(diǎn)圖
df.plot.scatter(x='order_amount',y='order_products')
plt.title('訂單散點(diǎn)圖')
繪制每筆訂單的散點(diǎn)圖。從圖中觀察,訂單消費(fèi)金額和訂單商品量呈規(guī)律性,每個(gè)商品十元左右。訂單的極值較少,超出1000的就幾個(gè)。顯然不是異常波動(dòng)的罪魁禍?zhǔn)住?/p>
過濾掉訂單金額大于4000的訂單:
# 每位用戶的消費(fèi)金額與消費(fèi)商品數(shù)散點(diǎn)圖
plt.style.use('ggplot')
# 用query過濾掉訂單金額大于4000的訂單,減小極值干擾
grouped_user.sum().query('order_amount<4000').plot.scatter(x='order_amount',y='order_products')
plt.title('消費(fèi)金額-消費(fèi)商品數(shù)')
繪制用戶的散點(diǎn)圖,用戶也比較健康,而且規(guī)律性比訂單更強(qiáng)。因?yàn)檫@是CD網(wǎng)站的銷售數(shù)據(jù),商品比較單一,金額和商品量的關(guān)系也因此呈線性,沒幾個(gè)離群點(diǎn)。消費(fèi)能力特別強(qiáng)的用戶有,但是數(shù)量不多。為了更好的觀察,用直方圖
3.3 用戶消費(fèi)金額的分布圖
grouped_user.sum().order_amount.plot.hist(bins=20)
plt.title('消費(fèi)金額分布圖')
從直方圖可知,用戶消費(fèi)金額,絕大部分呈現(xiàn)集中趨勢(shì),小部分異常值干擾了判斷,可以使用過濾操作排除異常
# 過濾掉商品數(shù)大于100的訂單,減小極值影響
grouped_user.sum().query('order_products<100').order_amount.hist(bins=40)
plt.title('消費(fèi)金額分布圖')
# 計(jì)算過濾后數(shù)據(jù)的描述統(tǒng)計(jì)
grouped_user.sum().query('order_products<100').describe()
使用切比雪夫定理過濾掉異常值,計(jì)算95%的數(shù)據(jù)的分布情況 95%的數(shù)據(jù)在[mean-5std,mean+5std]
通過計(jì)算可知,95%的消費(fèi)在區(qū)間[0,856.5]元之間
3.4 用戶消費(fèi)次數(shù)的分布圖
plt.figure(figsize=(12,5))
grouped_user.count().query('order_products<100').order_amount.hist(bins=40)
plt.title('消費(fèi)次數(shù)分布圖')
- 從直方圖看,大部分用戶的消費(fèi)能力確實(shí)不高,大多只消費(fèi)了一次或兩次,高消費(fèi)用戶在圖上幾乎看不到,這也確實(shí)符合消費(fèi)行為的行業(yè)規(guī)律,即“二八法則”
- 下面通過計(jì)算累計(jì)消費(fèi)金額和累計(jì)消費(fèi)商品數(shù)百分比來分析用戶累計(jì)消費(fèi)金額的占比
3.5 用戶累計(jì)消費(fèi)金額占比(百分之多少的用戶占了百分之多少的消費(fèi)額)
user_cumsum=grouped_user.sum().sort_values('order_amount').apply(lambda x: x.cumsum()/x.sum())
plt.subplot(211)
user_cumsum.reset_index().order_amount.plot(figsize=(8,8))
plt.title('消費(fèi)金額累計(jì)百分比')
plt.subplot(212)
user_cumsum.reset_index().order_products.plot()
plt.title('消費(fèi)商品數(shù)累計(jì)百分比')
由上圖可知,7570位用戶貢獻(xiàn)了消費(fèi)額的80%,即32%的用戶貢獻(xiàn)了80%的消費(fèi)金額
同樣地,8250位用戶貢獻(xiàn)了消費(fèi)商品數(shù)量的80%,即34%的用戶貢獻(xiàn)了消費(fèi)商品數(shù)的80%
該結(jié)果符合消費(fèi)行業(yè)規(guī)律——“二八法則”
4. 用戶消費(fèi)行為
- 用戶第一次消費(fèi)(首購(gòu))
- 用戶最后一次消費(fèi)
- 新老客消費(fèi)比
- 多少用戶僅消費(fèi)了一次?
- 每月新客占比?
- 用戶分層
- RFM
- 新、活躍、回流、流失/不活躍
- 用戶購(gòu)買周期(按訂單)
- 用戶消費(fèi)周期描述
- 用戶消費(fèi)周期分布
- 用戶生命周期(按第一次 & 最后一次消費(fèi))
- 用戶生命周期描述
- 用戶生命周期分布
4.1 用戶第一次消費(fèi)(首購(gòu))
grouped_user.min().order_dt.value_counts().plot(figsize=(12,5))
plt.title('第一次消費(fèi)時(shí)間的分布')
計(jì)算用戶第一次購(gòu)買的時(shí)間:
grouped_user.min().month.value_counts()
用戶第一次購(gòu)買分布集中在前三個(gè)月
其中,在2月11日至2月25日有一次劇烈的波動(dòng)
4.2 用戶最后一次消費(fèi)時(shí)間
grouped_user.max().month.value_counts().plot(figsize=(12,5))
plt.title('最后一次消費(fèi)時(shí)間分布')
計(jì)算用戶最后一次購(gòu)買時(shí)間:
# 計(jì)算最后一次購(gòu)買時(shí)間
grouped_user.max().month.value_counts()
- 用戶最后一次購(gòu)買的分布比第一次分布廣,
大部分最后一次購(gòu)買,集中在前三個(gè)月,說明有很多用戶購(gòu)買了一次后就不在進(jìn)行購(gòu)買 - 隨著時(shí)間的遞增,最后一次購(gòu)買數(shù)也在遞增,消費(fèi)呈現(xiàn)流失上升的狀況
4.3 新老客消費(fèi)比
- 多少用戶僅消費(fèi)了一次?
- 每月新客占比?
計(jì)算只消費(fèi)了一次的用戶人數(shù):
# 計(jì)算只消費(fèi)了一次的用戶人數(shù)
grouped_user.count().query('order_dt==1').order_dt.count()
計(jì)算總的消費(fèi)人數(shù):
# 計(jì)算總的消費(fèi)人數(shù)
grouped_user.count().order_dt.count()
由上可知,有一半的用戶只消費(fèi)了一次
計(jì)算每月新客占比并作出其百分比折線圖:
# 按月份和用戶ID分組
grouped_month_user=df.groupby(['month','user_id'])
# 用當(dāng)月用戶訂單日期最小值與用戶訂單日期最小值聯(lián)結(jié)
tmp=grouped_month_user.order_dt.agg(['min']).join(grouped_user.order_dt.min())
# 判斷用戶當(dāng)月訂單日期最小值是否與用戶訂單日期最小值相等,新建字段new
tmp['new']=(tmp['min']==tmp.order_dt)
# 作新客占比折線圖
tmp.reset_index().groupby('month').new.apply(lambda x: x.sum()/x.count()).plot()
plt.title('新客占比百分比')
可以看出,只有前三個(gè)月的新客占比不為零,后續(xù)月份新客占比百分比為零,這說明只有前三個(gè)月有新用戶的增加,后續(xù)月份消費(fèi)的用戶是前三個(gè)月加入的老客戶,并沒有新客戶的加入
4.4 用戶分層
- RFM
- 新、活躍、回流、流失/不活躍
# 作透視表
rfm=df.pivot_table(index='user_id',
values=['order_dt','order_amount','order_products'],
aggfunc={'order_dt':'max','order_products':'sum','order_amount':'sum'})
rfm.head()
- R:消費(fèi)最后一次消費(fèi)時(shí)間的度量,數(shù)值越小越好
- F:消費(fèi)的總商品數(shù),數(shù)值越大越好
- M:消費(fèi)的總金額,數(shù)值越大越好
# 計(jì)算每位用戶最后一次消費(fèi)時(shí)間與全部用戶最后一次消費(fèi)時(shí)間的差值
rfm['R']=-(rfm.order_dt-rfm.order_dt.max())/np.timedelta64(1,'D')
rfm.rename(columns={'order_products':'F','order_amount':'M'},inplace=True)
rfm.head()
# 客戶層次的定義
def rfm_func(x):
level=x.apply(lambda x: '1' if x>=0 else '0')
label=level.R+level.F+level.M
d={
'111':'重要價(jià)值客戶',
'011':'重要保持客戶',
'101':'重要挽留客戶',
'001':'重要發(fā)展客戶',
'110':'一般價(jià)值客戶',
'010':'一般保持客戶',
'100':'一般挽留客戶',
'000':'一般發(fā)展客戶'
}
result=d[label]
return result
rfm['label']=rfm[['R','F','M']].apply(lambda x: x-x.mean()).apply(rfm_func,axis=1)
查看rfm的前10行數(shù)據(jù):
rfm.head(10)
# 計(jì)算每層客戶R、F、M的和
rfm.groupby('label').sum()
可以看出,重要保持客戶對(duì)于消費(fèi)總金額的占比遠(yuǎn)大于其他客戶的占比,這說明絕大部分收益是由重要保持客戶貢獻(xiàn)的,只要能保證這部分客戶不流失和增加,那么公司收益將得到有力保障
# 增加字段color,為下面作圖做準(zhǔn)備
rfm.loc[rfm.label=='重要保持客戶','color']='r'
rfm.loc[~(rfm.label=='重要保持客戶'),'color']='g'
rfm.plot.scatter('F','R',c=rfm.color)
plt.title('F-R')
從RFM分層可知,大部分用戶為重要保持客戶,但是這是由于極值的影響,所以RFM的劃分標(biāo)準(zhǔn)應(yīng)該以業(yè)務(wù)為準(zhǔn)
- 盡量用小部分的用戶覆蓋大部分的份額
- 不要為了數(shù)據(jù)好看劃分等級(jí)
作透視表:
# 作透視表,計(jì)算客戶每個(gè)月的消費(fèi)次數(shù)
pivoted_counts=df.pivot_table(index='user_id',
columns='month',
values='order_dt',
aggfunc='count').fillna(0)
pivoted_counts.head()
以上透視表記錄了每位用戶每月消費(fèi)次數(shù)的記錄,是一份消費(fèi)明細(xì)表
# 當(dāng)月有消費(fèi)記為1,沒有消費(fèi)記為0
df_purchase=pivoted_counts.applymap(lambda x: 1 if x>0 else 0)
df_purchase.tail()
# 定義columns_month
columns_month=df.groupby('month').sum().reset_index().month
columns_month
將用戶狀態(tài)分為unreg(未注冊(cè))、new(新客)、active(活躍用戶)return(回流用戶)和unactive(不活躍用戶):
# 狀態(tài)函數(shù)
def active_status(data):
status=[]
for i in range(18):
# 若本月沒有消費(fèi)
if data[i]==0:
if len(status)>0:
if status[i-1] == 'unreg':
status.append('unreg')
else:
status.append('unactive')
else:
status.append('unreg')
# 若本月消費(fèi)
else:
if len(status) == 0:
status.append('new')
else:
if status[i-1] == 'unactive':
status.append('return')
elif status[i-1] == 'unreg':
status.append('new')
else:
status.append('active')
return pd.Series (status,index=columns_month)
函數(shù)編寫思路:
- 若本月沒有消費(fèi)
- 若之前是未注冊(cè),則依舊為未注冊(cè)
- 若之前有消費(fèi),則為流失/不活躍
- 其他情況,為未注冊(cè)
- 若本月有消費(fèi)
- 若是第一次消費(fèi),則為新用戶
- 若之前有過消費(fèi),則上個(gè)月為不活躍,則為回流
- 若上個(gè)月為未注冊(cè),則為新用戶
- 除此之外,為活躍
# 應(yīng)用上面的函數(shù)
purchase_stats=df_purchase.apply(active_status,axis=1)
purchase_stats.head()
由上表可知,每月的用戶消費(fèi)狀態(tài)
- 活躍用戶,持續(xù)消費(fèi)的用戶,對(duì)應(yīng)的使消費(fèi)運(yùn)營(yíng)的質(zhì)量
- 回流用戶,之前不消費(fèi)本月才消費(fèi),對(duì)應(yīng)的是喚回運(yùn)營(yíng)
- 不活躍用戶,對(duì)應(yīng)的是流失
將unreg替換為空值,以便后續(xù)計(jì)算回購(gòu)率、復(fù)購(gòu)率:
# 將unreg替換為空值,以便后續(xù)計(jì)算回購(gòu)率、復(fù)購(gòu)率
# 計(jì)算每個(gè)月各種狀態(tài)的計(jì)數(shù)
purchase_stats_ct=purchase_stats.replace('unreg',np.NaN).apply(lambda x: pd.value_counts(x))
purchase_stats_ct
將上面透視表轉(zhuǎn)置:
purchase_stats_ct.fillna(0).T.head()
作用戶分層面積圖:
purchase_stats_ct.fillna(0).T.plot.area(figsize=(12,5))
plt.title('用戶分層')
由用戶分層面積圖可知,在前三個(gè)月用戶人數(shù)不斷增加,新增用戶數(shù)量很高,活躍用戶的數(shù)量也比較高,但在后續(xù)月份沒有了新用戶的注冊(cè),活躍用戶數(shù)量也較高峰期有所降低,但在后續(xù)月份保持穩(wěn)定的水平,同時(shí)也有穩(wěn)定的回流用戶。
4.5 用戶購(gòu)買周期(按訂單)
- 用戶消費(fèi)周期描述
- 用戶消費(fèi)周期分布
計(jì)算用戶訂單日期的差值:
order_diff=grouped_user.apply(lambda x: x.order_dt-x.order_dt.shift())
order_diff.head(10)
查看日期差的描述統(tǒng)計(jì):
order_diff.describe()
作用戶消費(fèi)周期分布:
(order_diff/np.timedelta64(1,'D')).hist(bins=20)
plt.title('用戶消費(fèi)周期分布')
- 用戶的生命周期受只購(gòu)買一次的用戶影響比較厲害(可以排除)
- 用戶均消費(fèi)134天,中位數(shù)僅0天,明顯受到只購(gòu)買一次用戶的影響明顯
排除只消費(fèi)一次的用戶:
u_1=(user_life['max']-user_life['min']).reset_index()[0]/np.timedelta64(1,'D')
u_1[u_1>0].hist(bins=40)
plt.title('用戶生命周期分布')
這是雙峰趨勢(shì)圖。部分質(zhì)量差的用戶,雖然消費(fèi)了兩次,但是仍舊無法持續(xù),在用戶首次消費(fèi)30天內(nèi)應(yīng)該盡量引導(dǎo)。少部分用戶集中在50天~300天,屬于普通型的生命周期,高質(zhì)量用戶的生命周期,集中在400天以后,這已經(jīng)屬于忠誠(chéng)用戶了
5. 復(fù)購(gòu)率和回購(gòu)率分析
- 復(fù)購(gòu)率
- 自然月內(nèi),購(gòu)買多次的用戶占比
- 回購(gòu)率
- 曾經(jīng)購(gòu)買過的用戶在某一時(shí)期內(nèi)的再次購(gòu)買的占比
5.1 復(fù)購(gòu)率
- 自然月內(nèi),購(gòu)買多次的用戶占比
將當(dāng)月消費(fèi)2次以上、1次和0次的用戶分別標(biāo)記為1、0和空值:
purchase_r=pivoted_counts.applymap(lambda x: 1 if x>1 else np.NaN if x==0 else 0)
purchase_r.head()
計(jì)算復(fù)購(gòu)率:
(purchase_r.sum()/purchase_r.count()).plot(figsize=(10,4))
plt.title('復(fù)購(gòu)率')
復(fù)購(gòu)率穩(wěn)定在20%左右,前三個(gè)月因?yàn)橛写罅啃掠脩粲咳耄@些用戶只購(gòu)買了一次,所以導(dǎo)致復(fù)購(gòu)率降低,后續(xù)月份用戶數(shù)量比較穩(wěn)定,所以復(fù)購(gòu)率也穩(wěn)定在21%左右,即后續(xù)月份每月有大概21%的用戶會(huì)在一個(gè)月內(nèi)消費(fèi)兩次以上
5.2 回購(gòu)率
- 曾經(jīng)購(gòu)買過的用戶在某一時(shí)期內(nèi)的再次購(gòu)買的占比
購(gòu)買明細(xì)表:
df_purchase.head()
定義一個(gè)函數(shù),將消費(fèi)兩次以上記為1,消費(fèi)一次記為0,沒有消費(fèi)記為空值:
# 定義函數(shù)
def purchase_back(data):
status=[]
for i in range(17):
if data[i]==1:
if data[i+1]==1:
status.append(1)
if data[i+1]==0:
status.append(0)
else:
status.append(np.NaN)
status.append(np.NaN)
return pd.Series (status,index=columns_month)
對(duì)透視表應(yīng)用函數(shù)purchase_back:
purchase_b=df_purchase.apply(purchase_back,axis=1)
purchase_b.head()
計(jì)算回購(gòu)率:
(purchase_b.sum()/purchase_b.count()).plot(figsize=(10,4))
plt.title('回購(gòu)率')
前三個(gè)月因?yàn)橛写罅康男掠脩粲咳耄浅^一半的人只消費(fèi)了一次,所以前三個(gè)月回購(gòu)率比較低,后續(xù)月份用戶人數(shù)比較穩(wěn)定,回購(gòu)率也比較穩(wěn)定,穩(wěn)定在30%左右,即當(dāng)月消費(fèi)人數(shù)中有30%左右的用戶會(huì)在下一個(gè)月再次消費(fèi)