淘寶用戶行爲分析-AARRR、RMF模型(數據量:百萬級,工具mysql)

概況介紹:

電商平臺的用戶行爲分析,能一定程度的推動運營、產品等迭代,提供決策支持。
數據集來源: 阿里雲池
樣本量: 3835331
方法工具:
本文用2017年11月至12月的淘寶用戶行爲,AARRR模型及RMF模型利用進行分析。數據雖有點舊,但重在鍛鍊分析框架。
本文使用的分析工具以MySQL爲主,涉及分組彙總,引用變量,視圖,關聯查詢等內容。

分析思路

在這裏插入圖片描述
第一,基於AARRR漏斗模型,使用常見電商分析指標pv uv,從新增用戶數量、各環節轉化率、新用戶留存率三個方面進行分析,確定影響新增用戶數量的因素,找到需要改進的轉化環節,發現留存現存問題。
第二,將顆粒度逐漸細化,探尋用戶的商品偏好,哪類商品銷量最好,最壞,復購率、回購率最好的商品是什麼
第三:研究用戶在不同時間尺度下的行爲規律,找到用戶在不同時間週期下的活躍規律
第三,根據用戶畫像及價值分類,選擇合適的推廣方式。用戶什麼時段最活躍。
第四:利用RFM模型,進行客戶分類評分,找出對應策略。

一、數據處理

(1)數據導入
因爲數據量比較大,一共383萬,具體怎麼導我之前的文章介紹有過。
以下是代碼,等待一段時間纔可載入

D:\> cd change\mysql-8.0.19-winx64\bin
D:\change\mysql-8.0.19-winx64\bin>mysql --local-infile -u root -p
mysql> load data local infile'D:/xcw/work/數據面試/電商平臺用戶分析/UserBehavior.csv' into table taobao.xwfx
    -> fields terminated by ',';

如圖所示:3835331數據。
在這裏插入圖片描述
(2)數據清洗

數據清洗的一般步驟

在這裏插入圖片描述

desc xwfx

看看大概數據類型和數據是否含null值,最後兩行是我後加的,下文會講到。
在這裏插入圖片描述
在這裏插入圖片描述
我們發現最後一列是時間戳,查過之後發現是一種以秒來記錄的,與格林威治標準時間的相差秒數,因此,我們把他換算成日期和時間

先插入兩列

ALTER TABLE xwfx ADD date_ymd VARCHAR(255);
# 日期列
ALTER TABLE xwfx ADD date_time VARCHAR(255);
#時間列

在這裏插入圖片描述
接着進行轉化,記得要加where,不然有的版本會報錯
因爲我暫時還沒設置主鍵,想先看看時間轉換結果,

SET SQL_SAFE_UPDATES = 0  #沒有主鍵更新或刪除時會報錯,我得先設置安全模式關閉。
UPDATE xwfx
SET date_ymd = FROM_UNIXTIME(timestamp,'%Y-%m-%d') where userid >0

SET SQL_SAFE_UPDATES = 0  
UPDATE xwfx
SET date_time = FROM_UNIXTIME(timestamp,'%H:%i:%s') where userid >0;

上面可能會出現失去與服務器連接,因爲數據量有點大,需要自己先設置一下DBMS connection read time out(in seconds)適當調大。(不過還是建議大家設個主鍵)
最後得到下圖,日期轉換結束
在這裏插入圖片描述

SELECT
       MAX(date_ymd),
       MIN(date_ymd)
FROM xwfx;

發現有髒數據
在這裏插入圖片描述
且數據量比較大,導致我每次操作都要等很久,簡單看了一下數據集,

SELECT
       MAX(date_ymd),
       MIN(date_ymd),
       count( distinct userid),count(1)
FROM xwfx
WHERE date_ymd >='2017-11-25 '
and date_ymd <='2017-11-31 '

選擇2017.11.25至2017.11.31號這7天的數據

同樣的就得刪去這7天之外的數據

SET SQL_SAFE_UPDATES = 0  
Delete
FROM xwfx
WHERE date_ymd <'2017-11-25 '
or date_ymd > '2017-11-31 '

最終剩下2353708 row(s) ,正式開始分析啦…

二、AARRR模型

(1)獲客:每日新增用戶數
定義首次購買的用戶爲新增客戶,每天都有新增用戶,但是新增用戶在遞減。並未出現回升現象,發現問題應及時採取一定拉新策略。

select count(distinct t.userid)as 新增用戶數,t.日期 from	
    (SELECT 
	userid,min(date_ymd)as'日期'
	FROM taobao.xwfx
	where behavior='buy' 
	group by userid)t
group by t.日期

在這裏插入圖片描述
在這裏插入圖片描述

(2)激活:用戶數、商品數、類目數

SELECT COUNT(DISTINCT userid) AS num_user, 
COUNT(DISTINCT itemid) AS num_item, 
COUNT(DISTINCT categoryid) AS num_category 
FROM taobao.xwfx

在這裏插入圖片描述
整體上看本次分析共涉及37367名用戶,近70萬商品,近7000個品類。

(2)pv、uv、日均pv
分析pv(總體訪問量)及uv(獨立訪客數)

總體訪問量2107723人次,但獨立訪客數37367人次。

SELECT count(1) as 總體訪問量 FROM taobao.xwfx
where behavior = 'pv'

在這裏插入圖片描述
分析日均訪問量

日均訪問量維持在33萬~36萬人次左右,流量還是很大且比較穩定的
而11月25-26數據量大原因是碰到週末啦!!!!,果然週末還是量比較大的
而11月28號這天是週二哦,來個狂歡星期二吧,開個玩笑哈哈

SELECT date_ymd as 日期,count(behavior) as 日均訪問人數 FROM taobao.xwfx
where behavior = 'pv' and date_ymd >='2017-11-25'
group by date_ymd
order by date_ymd

在這裏插入圖片描述
(3)留存轉化:各階段行爲人數及漏斗圖

SELECT behavior as 階段,count(1) as 人數,count(distinct userid) as 用戶ID FROM taobao.xwfx
group by behavior
order by count(1) desc

在這裏插入圖片描述
將收藏和加入購物車但沒有買的整合成第二階段
漏斗圖
在這裏插入圖片描述
(4)流量轉化率、成交轉化率、跳出率

流量轉化率=購買訂單數量/瀏覽頁面次數=48892/2107723=2.32%

平均每次訪問會帶來2.32%的購買訂單數量,

成交轉化率=購買訂單數量/UV=48892/37095=1.32%

平均每一訪問用戶購買1.32商品。

跳出率 看出僅瀏覽,但不去加購也不去收藏的用戶比例.
跳出率=5447/110017=4.95%
約有4.95%的用戶瀏覽了一次頁面就跳出了。相對來說我覺得表現的很不錯了,基本大部分還是有選擇加購和收藏的。

SELECT COUNT(*) AS pv_quit,
count(DISTINCT userid) AS user_quit
FROM xwfx
WHERE 
userid IN 
(SELECT DISTINCT userid FROM xwfx
WHERE behavior='pv')
AND 
userid NOT IN 
(SELECT DISTINCT userid FROM xwfx
WHERE behavior IN ('fav','cart','buy'));

在這裏插入圖片描述
(5)次日留存回購人數、3日留存回購人數

  • 次日留存
select t1.date_ymd,count(t1.date_ymd),count(t2.date_ymd),
count(t2.date_ymd)/count(t1.date_ymd) as 留存率 from
(SELECT userid,date_ymd FROM taobao.xwfx
where behavior='buy' 
group by date_ymd,userid)t1
left join 
(SELECT userid,date_ymd FROM taobao.xwfx
where behavior='buy' 
group by date_ymd,userid)t2
on t1.userid=t2.userid 
and t1.date_ymd=date_sub(t2.date_ymd,interval 1 day)
group by t1.date_ymd

在這裏插入圖片描述

  • 3日留存

當日購買後,3天后再次購買的人數

select t1.date_ymd,count(t1.date_ymd),count(t2.date_ymd),
count(t2.date_ymd)/count(t1.date_ymd) as 留存率 from
(SELECT userid,date_ymd FROM taobao.xwfx
where behavior='buy' 
group by date_ymd,userid)t1
left join 
(SELECT userid,date_ymd FROM taobao.xwfx
where behavior='buy' 
group by date_ymd,userid)t2
on t1.userid=t2.userid 
and t1.date_ymd=date_sub(t2.date_ymd,interval 2 day)
group by t1.date_ymd

在這裏插入圖片描述
整體上看,次日留存率在23-24%間,3日留存率在22-23%,起碼在數據集時間範圍內回購率還是很高的。
(6)復購率
用戶中購買1次以上的佔總購買數的比例

select count(t.購買次數),count(if(t.購買次數>1,1,null)),
count(if(t.購買次數>1,1,null))/count(t.購買次數) as 復購率 from
	(select userid ,count(userid) as 購買次數 from xwfx
	where behavior='buy'
	group by userid )t

在這裏插入圖片描述
超過55.8%的用戶購買了一次以上。

三、基於商品維度瞭解用戶的行爲習慣

(一)熱銷商品、熱銷類別
標籤爲3122135這個商品銷量最好,共有34個用戶購買了,我很好奇是什麼

select itemid,count(distinct userid) from xwfx
where behavior='buy'
group by itemid
order by count(distinct userid) desc

在這裏插入圖片描述
從類別上看,1464116標籤號類別銷量最好,有808個用戶購買這一類商品,生活用品類吧感覺是

select categoryid,count(distinct userid) from xwfx
where behavior='buy'
group by categoryid
order by count(distinct userid) desc

在這裏插入圖片描述

四、基於時間維度瞭解用戶的行爲習慣

(1)一天中用戶活躍時段分佈

select hour(date_time), count(behavior),
sum(case when behavior='pv' then 1 else 0 end) as '點擊次數',
sum(case when behavior='cart' then 1 else 0 end) as '加購次數',
sum(case when behavior='fav' then 1 else 0 end) as '收藏次數',
sum(case when behavior='buy' then 1 else 0 end) as '購買次數'
 from xwfx
group by hour(date_time)
order by hour(date_time)

在這裏插入圖片描述在這裏插入圖片描述
我們可以看出:
(1)每日1點到5點用戶活躍度快速降低,降到一天中的活躍量最低值,6點到10點用戶活躍度逐漸上升
(2)下午整體時段的用戶活躍度較平穩,下午5點至7點有所回落,應該還是符合用戶生活習慣,該時間段大多數處於下班、接放學、煮吃這樣一個生活狀態,相對在電商時間較少
(3)用戶整體在晚上活躍度高,在10點-11點見達到流量峯值,是下午時段的2倍左右,

(2)一週中用戶行爲分析

select date_format(date_ymd,'%w') +1 as '星期',count(behavior)as 用戶行爲總量,
sum(case when behavior ='pv' then 1 else 0 end) as '瀏覽量',
sum(case when behavior ='cart' then 1 else 0 end) as '加購物車',
sum(case when behavior ='fav' then 1 else 0 end) as '收藏量',
sum(case when behavior ='buy' then 1 else 0 end) as '購買量' from xwfx
group by date_ymd
order by date_format(date_ymd,'%w')

在這裏插入圖片描述
漏了一天是因爲我之前最開始就只選了其中6天的數據,不過先試着分析看看
在這裏插入圖片描述

(1)說明在選取的11.25-11.30這個時段,商家及平臺並未做太多活動,用戶的各階段表現相對平穩。
(2)周天的瀏覽量相對高,但此時購買量並未有顯著上升,相反表現不如週一。

五、用RMF模型進行客戶價值分類

使用RFM模型對所有的客戶進行客戶價值分類,可以使推廣方式更有針對性。

RFM模型:

R(Recency):是指最近一次消費

F(Frequency):是指消費頻率

M(Monetary):是指消費金額
在這裏插入圖片描述
(1)計算最近一次消費時間和消費頻率

select userid,
datediff(‘2017-12-01’,max(date_ymd))as ‘最後一次交易距今時間’,
count(behavior)as ‘交易次數’
from xwfx
where behavior =‘buy’
group by userid
在這裏插入圖片描述

看一看最大值值

select max(t.最後一次交易距今時間),max(t.交易次數) from(
select userid,
datediff(‘2017-12-01’,max(date_ymd))as ‘最後一次交易距今時間’,
count(behavior)as ‘交易次數’
from xwfx
where behavior =‘buy’
group by userid)t

在這裏插入圖片描述
因爲數據集中沒含消費金額,我們假設他們的M值普遍較高,都爲高消費金額的客戶。
重點看R與F值的分析。

(2)對客戶進行評分

select userid,
(case when t.最後一次交易距今時間 in(0,1) then 4
      when t.最後一次交易距今時間 in(2,3) then 3
      when t.最後一次交易距今時間 in(4,5) then 2
      when t.最後一次交易距今時間 in(6,7) then 1
      when t.最後一次交易距今時間 >7 then 0
else null
end) as Recent,
(case when t.交易次數 >=16 then 4
      when t.交易次數 between 11 and 15 then 3
      when t.交易次數 between 6 and 10 then 2
      when t.交易次數 between 1 and 5 then 1
      when t.交易次數 =0 then 0
else null
end) as Frequent
 from
 (select userid,
 datediff('2017-12-01',max(date_ymd))as '最後一次交易距今時間',
 count(behavior)as '交易次數'
 from xwfx
 where behavior ='buy'
 group by userid)as t
group by userid
order by Recent desc

在這裏插入圖片描述
數值高的客戶爲優質,數值低的待改進

導出計算得R的均值爲2.85,F的均值爲1.10
下圖是以分值來劃分客戶類型,因爲看了一下整體F均值才1.1,
故我想用均值來劃分四個客戶層次,新建了一個RMF表:

在這裏插入圖片描述
注:如果有M,參考一下底下的圖片及對應策略
在這裏插入圖片描述
(3)客戶分層繪圖

SELECT userid, Recent, Frequent,
(CASE WHEN Recent>=2.85 AND Frequent>=1.10 THEN '重要價值客戶'
      WHEN Recent<2.85 AND Frequent>=1.10 THEN '重要喚回客戶'
      WHEN Recent>=2.85 AND Frequent<1.10 THEN '重要推廣客戶'
      WHEN Recent<2.85 AND Frequent<1.10 THEN '重要挽留客戶'
END)  '客戶分類' FROM taobao.rmf
ORDER BY Recent DESC,Frequent DESC

在這裏插入圖片描述
計算一下各類客戶的數量

select t.客戶分類,count(t.userid) from
(SELECT userid, Recent, Frequent,
(CASE WHEN Recent>=2.85 AND Frequent>=1.10 THEN '重要價值客戶'
   WHEN Recent<2.85 AND Frequent>=1.10 THEN '重要喚回客戶'
   WHEN Recent>=2.85 AND Frequent<1.10 THEN '重要推廣客戶'
   WHEN Recent<2.85 AND Frequent<1.10 THEN '重要挽留客戶'
END)  '客戶分類' FROM taobao.rmf
ORDER BY Recent DESC,Frequent DESC)t 
group by t.客戶分類

哈哈哈,以下就是最後的結果啦,還是有成就感的對不對哈哈
在這裏插入圖片描述

在這裏插入圖片描述

六、結論

(1)本次數據集6天總計200多萬流量,70萬種商品,7000條類目,37000的獨立訪客,日均訪問量在35-36萬間。
(2)近6日逐日新增用戶數遞減,最終成交轉化率在2.32%,從瀏覽到有購買意向只有2.32%的轉化率,除去有一部分用戶是直接購買,但也說明大多數用戶以瀏覽頁面爲主而購買轉化較少,此處爲轉化漏斗中需要改善和提高的環節。

針對這一環節改善轉化率的建議有:
①優化電商平臺的搜索匹配度和推薦策略,主動根據用戶喜好推薦相關的商品,優化商品搜索的準確度和聚合能力,對搜索結果排序優先級進行優化;
②給客戶提供同類產品比較的功能,讓用戶不需要多次返回搜索結果反覆查看,便於用戶確定心怡產品;
③在商品詳情頁的展示上突出用戶關注的重點信息,精簡信息流的呈現方式,減少用戶尋找信息的成本;

(3)復購、回購
次日回購及3日回購,均保持較高水平,達到22%,復購率在55%。雖然成交轉化率不高,但用戶多次購買及回購的頻率還是不錯的,買過都說好哈哈。

1、營銷活動能爲提升留存帶來一定正向的影響,可以多推出一些營銷活動,讓用戶提高使用淘寶電商平臺的頻率。
2、高復購次數的用戶少,商家可以從商品質量、服務質量、物流體驗三方面尋找原因,定位所在問題點,尋求高復購率。

(3)3122135爲6日內最熱銷商品,1464116爲最熱銷類目,也可以分析一下最不受歡迎的商品,提供改進措施

根據購買環節的前十品類,app的展現頁面對這些品類首要進行展現,便於滿足用戶購買需求。

(4)活躍時段集中在夜晚,22-23點達到單時段近12000的流量峯值,一週來看,用戶行爲並未在週末有顯著的變化。
(5)
重要推廣客戶數(R大F小):11769
重要價值客戶數(R大F大):1323
重要喚回客戶(R小F小):137
重要挽留客戶(R小F大):6626
在這裏插入圖片描述

重要價值用戶:需要重點關注。並且活動投放時需謹慎對待,不要引起用戶反感。
重要推廣客戶:運營活動可以重點針對這部分用戶,提高用戶的產品使用頻率,通過拼團打折、積分兌換等活動喚起用戶注意力。
重要挽留客戶:可以通過推送提醒,短信召回等方式,含促銷活動等字眼,進行吸引喚回
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章