【數據分析項目】淘寶用戶行為分析【SQL+Tableau】


1. 數據說明

2. 導入數據

  • 從原始數據集導入100000條數據到Navicat新建數據庫“userbehavior”中
  • 通過“設計表”修改字段名
  • 字段名修改

   

  • 字段描述

      

  • 查看表的基本數據
SELECT * FROM userbehavior;

 

3. 數據處理

  • 所有字段都有用,不需要選擇子集等操作

3.1 刪除重復值

  • 查看是否有記錄出現多於1次的情況
SELECT * FROM userbehavior
GROUP BY User_ID,Item_ID,Category_ID,Behavior,Time_info
HAVING COUNT(*)>1;

  •  沒有重復值

3.2 缺失值處理

  • 查看每一列的總數
SELECT COUNT(User_ID),COUNT(Item_ID),COUNT(Category_ID),COUNT(Behavior),COUNT(Time_info)
FROM userbehavior;

  •  沒有缺失值

3.3 分列處理

  • 利用FROM_UNIXTIME( )函數將時間戳信息Time_info轉換為日期和時間
  • 添加新列Date_Time,記錄日期和時間
ALTER TABLE userbehavior ADD COLUMN Date_Time TIMESTAMP(0) NULL;
UPDATE userbehavior
SET Date_time = FROM_UNIXTIME(`Time_info`);

  • 添加新列Date,記錄日期
ALTER TABLE userbehavior ADD COLUMN Date char(10) NULL;
UPDATE userbehavior
SET Date = FROM_UNIXTIME(`Timestamp`,'%y-%m-%d');

  • 添加新列time,截取Date_time的時間字段作為記錄
ALTER TABLE userbehavior ADD COLUMN Time char(10) NULL;
UPDATE userbehavior
SET Time = SUBSTRING(Date_time FROM 12 FOR 8);

3.4 異常值處理

  • 查看是否有不屬於2017年的11.25到12.03之間的數據
SELECT MAX(Date),MIN(Date)
FROM userbehavior;

  • 將不符合條件的數據刪除
DELETE FROM userbehavior WHERE Date >'17-12-03' OR Date <'17-11-25';

  •  有44行數據被刪除

4. 數據分析

  • 分析目的
    • 了解用戶的生命周期情況和行為偏好,從而做到更精准化的推薦
    • 分析如何更好的提高購買用戶比例
    • 通過RFM模型分析出有價值的客戶並提出相應的建議
  • 分析方法
    • 利用SQL分析數據,獲得分析結果並導出至Excel,利用Tableau實現數據可視化
  • 分析思路

 

4.1 數據總覽

(1)數據整體情況

SELECT COUNT(DISTINCT User_ID) AS 用戶數,
COUNT(DISTINCT Item_ID) AS 商品總數,
COUNT(DISTINCT Category_ID) AS 商品種類數,
COUNT(Behavior) AS 行為總數
FROM userbehavior;

(2)用戶行為整體情況

  • 創建行為數據視圖並按每個用戶的行為數量倒序排列
CREATE VIEW 用戶行為數據 AS
SELECT User_ID,COUNT(Behavior) AS 用戶行為總數,
SUM(IF(Behavior='pv',1,0)) AS 點擊數,
SUM(IF(Behavior='fav',1,0)) AS 收藏數,
SUM(IF(Behavior='cart',1,0)) AS 加購數,
SUM(IF(Behavior='buy',1,0)) AS 購買數
FROM userbehavior
GROUP BY User_ID
ORDER BY 用戶行為總數 DESC;

  • 共有983條數據

4.2 用戶生命周期分析

(1)用戶獲取情況

  • 通過查詢日新增用戶數分析用戶的獲取情況
CREATE VIEW 分組 AS
SELECT User_ID,MIN(Date) AS fd
FROM userbehavior
GROUP BY User_ID;

SELECT fd,COUNT(User_ID)
FROM 分組
GROUP BY fd;

  • 11.25 日用戶新增數量最多,推測有新的促銷活動吸引了新用戶
  • 整體用戶增加數都處於較低的狀態,推測目前的推廣渠道效果一般,應該制定更加有效的策略

(2)用戶活躍情況

  • 通過計算UV、PV等指標和日變化趨勢查看用戶的活躍情況

     ① 總體獨立訪客數UV、點擊數PV、人均瀏覽次數、成交量

  • 人均瀏覽次數 = 點擊數 / 獨立訪客數
SELECT COUNT(DISTINCT User_ID) AS 獨立訪客數,
SUM(IF(Behavior='pv',1,0)) AS 點擊數,
SUM(IF(Behavior='pv',1,0))/COUNT(DISTINCT User_ID) AS 人均瀏覽次數,
SUM(IF(Behavior='buy',1,0)) AS 成交量
FROM userbehavior;

    ② 日活躍情況

SELECT Date,COUNT(DISTINCT User_ID) AS 日獨立訪客數,
SUM(IF(Behavior='pv',1,0)) AS 日點擊數,
SUM(IF(Behavior='pv',1,0))/COUNT(DISTINCT User_ID) AS 日人均瀏覽次數,
SUM(IF(Behavior='buy',1,0)) AS 日成交量
FROM userbehavior
GROUP BY Date;

 

  • 日獨立訪客數和日點擊數的增長趨勢基本相同,在11.27和11.30號有下降的趨勢
  • 日成交量在11.27和11.30號呈現增長的趨勢,推測用戶在此期間直接購買商品的行為增加

 

  •  日人均瀏覽趨勢在12.01號達到峰值,可能為雙12或其他活動宣傳導致用戶瀏覽量急速增加

(3)用戶留存情況

    ① 用戶次日、3日、5日、7日留存人數

  • 第一天(17-11-25)活躍人數
CREATE TABLE retention AS 
SELECT COUNT(DISTINCT User_ID) AS 第一天活躍人數
FROM userbehavior
WHERE Date = '17-11-25';
  • 次日留存人數
ALTER TABLE retention ADD COLUMN 第二天留存人數 INT;
UPDATE retention
SET 第二天留存人數 = (SELECT COUNT(DISTINCT User_ID)
                    FROM userbehavior
                    WHERE Date = '17-11-26'
                    AND User_ID IN (SELECT DISTINCT User_ID
                                    FROM userbehavior
                                    WHERE Date = '17-11-25'));
  • 最終留存人數計算結果

    ② 留存率

SELECT CONCAT(ROUND(100*第二天留存人數/第一天活躍人數,2),'%') AS 次日留存率,
       CONCAT(ROUND(100*第三天留存人數/第一天活躍人數,2),'%') AS 第3日留存率,
       CONCAT(ROUND(100*第五天留存人數/第一天活躍人數,2),'%') AS 第5日留存率,
       CONCAT(ROUND(100*第七天留存人數/第一天活躍人數,2),'%') AS 第7日留存率
FROM retention;

  • 用戶在7日之后還保持75.97%的留存率,處於比較高的狀態

    ③ 跳失率

  • 只瀏覽了一個頁面的訪客數 / 總訪客數
SELECT User_ID FROM 用戶行為數據
WHERE 用戶行為總數=1;

  • 不存在只瀏覽一次的用戶,跳失率為0
  • 結合上述的留存率,說明淘寶的忠實用戶比較多

(4)用戶購買情況

    ① 商品、購買數量及次數

  • 商品總數
SELECT COUNT(DISTINCT Item_ID) AS 商品數
FROM userbehavior;

  • 購買商品數
SELECT COUNT(DISTINCT Item_ID) AS 購買商品數
FROM userbehavior
WHERE Behavior = "buy";

  • 購買次數和商品數的對應關系
SELECT a.購買次數,COUNT(a.Item_ID) AS 商品數
FROM (SELECT Item_ID,COUNT(User_ID) AS 購買次數
      FROM userbehavior
      WHERE Behavior="buy"
      GROUP BY Item_ID) AS a
GROUP BY 購買次數
ORDER BY 購買次數 DESC;

  • 商品共有64440個,用戶購買的商品有1984個,其中只購買一次的有1881種
  • 只夠買一次的商品占很大比例,說明商品銷售不是靠爆款

    ② 復購率

  • 購買次數>1 / 購買次數>0
SELECT SUM(IF(購買數 > 1,1,0)) AS 復購次數,
SUM(IF(購買數 > 0,1,0)) AS 購買次數,
CONCAT(ROUND((SUM(IF(購買數 > 1,1,0)) * 100/ SUM(IF(購買數 > 0,1,0))),2),'%')
AS 復購率
FROM 用戶行為數據;

  • 復購率大約66%,說明淘寶足夠吸引人,並且能留住用戶 

4.3 用戶行為路徑分析

(1)行為轉化漏斗(點擊行為到其他行為的轉化率分別為多少)

SELECT 
SUM(IF(Behavior='pv',1,0)) AS 點擊,
SUM(IF(Behavior='fav',1,0)) AS 收藏,
SUM(IF(Behavior='cart',1,0)) AS 加購,
SUM(IF(Behavior='buy',1,0)) AS 購買
FROM userbehavior;

  • 可以看出,點擊過后的行為比例最高的為加購,推測情況為對同一種商品貨比三家,傾向於加入購物車
  • 收藏行為少於加購,可能因為收藏行為不能直接結算
  • 購買行為所占比例僅為2.34%,表明點擊后用戶大量流失,如何減少點擊行為到購買行為的流失將作為分析方向

(2)用戶轉化漏斗

SELECT SUM(IF(點擊數>0,1,0)) AS 點擊用戶數,
SUM(IF(收藏數>0,1,0)) AS 收藏用戶數,
SUM(IF(加購數>0,1,0)) AS 加購用戶數,
SUM(IF(購買數>0,1,0)) AS 購買用戶數
FROM 用戶行為數據;

  • 收藏用戶數所占比例沒有加購高
  • 點擊后的用戶會有68.47%的付費,購買轉化率不錯,可以進而分析哪種購物方式促進了購買用戶的轉化

(3)四種不同行為路徑

  • 購買行為可以由大致四種導致:點擊+購買、點擊+加購+購買、點擊+收藏+購買、點擊+收藏加購+購買
  • 點擊用戶數為980

    ① 點擊→購買

SELECT SUM(IF(購買數>0,1,0)) AS 購買用戶數1
FROM 用戶行為數據
WHERE 收藏數=0 AND 加購數=0;

    ② 點擊→加購→購買

SELECT SUM(IF(購買數>0,1,0)) AS 購買用戶數2,
SUM(IF(加購數>0,1,0)) AS 加購用戶數2
FROM 用戶行為數據
WHERE 收藏數=0 AND 加購數<>0;

    ③ 點擊→收藏→購買

SELECT SUM(IF(購買數>0,1,0)) AS 購買用戶數2
FROM 用戶行為數據
WHERE 收藏數=0 AND 加購數<>0;

    ④ 點擊→加購收藏→購買

SELECT SUM(IF(購買數>0,1,0)) AS 購買用戶數4,
SUM(IF(收藏數>0,1,0)) AS 收藏用戶數4,
SUM(IF(加購數>0,1,0)) AS 加購用戶數4
FROM 用戶行為數據
WHERE 收藏數<>0 AND 加購數<>0;

(4)不同行為路徑的轉化漏斗圖

  • 可以看出,用戶點擊后更傾向於加入購物車,直接購買的人比較少
  • 通過“點擊+加購+購買”路徑,最后的購買人數最多
  • 通過”點擊+收藏加購+購買“的最終購買轉化效果最高,商家可以通過增加此部分用戶所占比例提高銷量
  • 比如收藏可有優惠,促進加購消費者進行收藏操作

4.4 用戶偏好分析

(1)用戶行為時間偏好分析

     ① 用戶行為習慣(按天)
CREATE VIEW 用戶行為習慣分布(日) AS
SELECT Date,COUNT(Behavior) AS "用戶行為數",
SUM(IF(Behavior='pv',1,0)) AS "點擊",
SUM(IF(Behavior='fav',1,0)) AS "收藏",
SUM(IF(Behavior='cart',1,0)) AS "加購",
SUM(IF(Behavior='buy',1,0)) AS "購買"
FROM userbehavior
GROUP BY Date
ORDER BY Date;

 

  • 點擊和加購的趨勢基本相同,在12.02號這一天都達到峰值狀態
  • 收藏在12.03處於較高的狀態
  • 用戶的購買行為主要集中在11.27、11.30及12.02之后
     ② 用戶行為習慣(按時)
CREATE VIEW 用戶行為習慣分布(時) AS
SELECT SUBSTRING(Time FROM 1 FOR 2),COUNT(Behavior) AS "用戶行為數",
SUM(IF(Behavior='pv',1,0)) AS "點擊",
SUM(IF(Behavior='fav',1,0)) AS "收藏",
SUM(IF(Behavior='cart',1,0)) AS "加購",
SUM(IF(Behavior='buy',1,0)) AS "購買"
FROM userbehavior
GROUP BY SUBSTRING(Time FROM 1 FOR 2)
ORDER BY SUBSTRING(Time FROM 1 FOR 2);

  • 購買用戶集中活躍峰值在20時到22時,所有的行為數值都處於比較高的狀態
  • 推測20時大多為下班時間,用戶都處於休息狀態,空閑時間較多,點擊和加購行為明顯提升,購買行為也處於峰值狀態。
  • 商家可以利用此時間段實施一些優惠活動,吸引消費者,獲得更好的購買率

(2)用戶行為偏好Top 20產品分析

SELECT Category_ID,SUM(IF(Behavior="pv",1,0)) AS 點擊數
FROM userbehavior
GROUP BY Category_ID
ORDER BY 點擊數 DESC
LIMIT 20;
     ① 點擊Top 20產品

  

     ② 加購Top 20產品

 

     ③ 收藏Top 20產品

 

     ④ 購買Top 20產品

 

  • 創建每個行為Top20商品的視圖,計算不同行為的商品重疊情況
CREATE VIEW 點擊 AS 
SELECT Category_ID,SUM(IF(Behavior="pv",1,0)) AS 點擊數
FROM userbehavior
GROUP BY Category_ID
ORDER BY 點擊數 DESC
LIMIT 20;

SELECT COUNT(點擊.Category_ID) FROM 點擊
INNER JOIN 加購 ON 點擊.Category_ID = 加購.Category_ID
  • 點擊和加購相同的有15種,點擊和收藏相同的有18種
  • 加購和購買相同的有14種,收藏和購買相同的有11種
  • 對於行為重疊的商品種類應該更加關注
  • 根據行為喜歡的Top產品,適時的推出一些優惠活動,可以更加有效的提高用戶的收藏加購行為

4.5 用戶價值分析

(1)RFM模型簡介

  •  采用RFM模型進行用戶價值分析
  • 由於本數據集不存在金額字段,所以只從RF兩個維度進行分析
    • R:最近一次購買時間(采用12.03和最近一次購買的時間間隔作為計算依據)
    • F:消費頻次(采用用戶購買次數作為計算依據)
  • 一般來說,R和F的值越大,說明用戶的價值越高

(2)R值的計算

  • 數據集的時間跨度為2017年的11.25到12.03,共9天
  • 定義R值的划分規則:
    • 間隔時間 > 7天:1
    • 間隔時間 5-7天:2
    • 間隔時間 3-4天:3
    • 間隔時間 0-2天:4
SELECT User_ID,
(CASE WHEN Rtime>7 THEN 1
      WHEN Rtime BETWEEN 5 AND 7 THEN 2
      WHEN Rtime BETWEEN 3 AND 4 THEN 3
      WHEN Rtime BETWEEN 0 AND 2 THEN 4
 ELSE NULL END) AS R值
 FROM (SELECT User_ID,DATEDIFF('17-12-03',MAX(Date)) AS Rtime
       FROM userbehavior
       WHERE Behavior='buy'
       GROUP BY User_ID) AS 購買時間間隔
ORDER BY R值 DESC;

(3)F值的計算

SELECT User_ID,COUNT(Behavior) AS 購買次數
FROM userbehavior
WHERE Behavior='buy'
GROUP BY User_ID
ORDER BY 購買次數 DESC;

  • 可以看出,購買次數最多的為43次
  • 定義F值的划分規則
    • 購買次數  1-10:1
    • 購買次數11-20:2
    • 購買次數21-30:3
    • 購買次數   >30:4
SELECT User_ID,
(CASE WHEN Btime BETWEEN 1  AND 10 THEN 1
      WHEN Btime BETWEEN 11 AND 20 THEN 2
      WHEN Btime BETWEEN 21 AND 30  THEN 3
      WHEN Btime >30 THEN 4
 ELSE NULL END) AS F值
 FROM (SELECT User_ID,COUNT(Behavior) AS Btime
       FROM userbehavior
       WHERE Behavior='buy'
       GROUP BY User_ID) AS 購買次數
 ORDER BY F值 DESC;

(4)用戶划分

  • 將用戶按照以下規則進行划分:
F(3-4) 重要保持用戶 重要價值用戶
F(1-2) 重要挽留用戶 重要發展用戶
  R(1-2) R(3-4)
  • 創建r_value和f_value分別記錄之前計算的R值和F值
  • 將R值和F值合並到一起
CREATE VIEW 用戶價值分析 AS
SELECT r.User_ID,R值,F值
FROM r_value AS r JOIN f_value AS f
ON r.User_ID = f.User_ID

  • 計算R值和F值的平均值
SELECT AVG(R值), AVG(F值)
FROM 用戶價值分析;

  • 查看不同用戶對應的份額
CREATE VIEW 用戶類型 AS
SELECT User_ID,
(CASE WHEN R值>3.3413 AND F值>1.0298 THEN "重要價值用戶"
      WHEN R值<3.3413 AND F值>1.0298 THEN "重要保持用戶"
      WHEN R值>3.3413 AND F值<1.0298 THEN "重要發展用戶"
      WHEN R值<3.3413 AND F值<1.0298 THEN "重要挽留用戶"
 END) AS user_type
 FROM 用戶價值分析
SELECT user_type,COUNT(User_ID) AS 人數
FROM 用戶類型
GROUP BY user_type

   

(5)用戶價值分析結論

  • 重要發展用戶占比最高,這些用戶購買時間間隔較短,但購買次數比較低,重點應該提升消費頻次
  • 重要挽留客戶占比第二,購買次數少,購買時間久遠,是潛在客戶,應該做精准化的營銷
  • 重要價值客戶占比第三,需要重點關注,屬於忠實買家,應提供定期的VIP服務
  • 重要保持用戶占比最少,購買次數多,但最近沒有買,應該采取措施及時召回

5. 總結

  • 日新增用戶數不是很多,推廣渠道的效果一般,12.02日的增長明顯,推測可能為活動影響
  • 用戶留存率較高,跳失率為0,復購率也較高,用戶的忠誠度較高
  • 購買一次的用戶占比最多,說明淘寶的銷售情況並不是依靠爆款產品
  • 用戶從點擊到最后的購買有大量的流失情況,建議通過活動或優惠券的方式吸引用戶購買
  • 通過加購收藏方式的用戶最終購買的可能性最大,可以通過收藏有禮的方式提高收藏行為
  • 用戶多活躍在20時到22時,建議在此時間段內進行推廣,使效果最大化
  • 重要價值用戶占比較少,大多數為重要發展和重要挽留客戶,建議針對不同的人群,進行精准化營銷


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM