SQL數據分析淘寶用戶分析實操

  • 2019 年 12 月 9 日
  • 筆記

sql也能做分析?

常見的數據清洗,預處理,數據分類,數據篩選,分類匯總,以及數據透視等操作,用SQL一樣可以實現(除了可視化,需要放到Excel里呈現)。SQL不僅可以從資料庫中讀取數據,還能通過不同的SQL函數語句直接返回所需要的結果,從而大大提高了自己在客戶端應用程式中計算的效率。

但是,這個過程需要很熟練掌握SQL!

本文就利用提取MySQL的數據,通過寫SQL的數據處理方式,來對一份淘寶數據進行用戶分析。

01. 數據來源及說明

本文從數據集中選取包含了2014年11月18日至2014年12月18日之間,8477名隨機用戶共1048575條行為數據,數據集的每一行表示一條用戶行為,共6列。

列欄位包含以下:

user_id:用戶身份  item_id:商品ID  behavior_type:用戶行為類型(包含點擊、收藏、加購物車、購買四種行為,分別用數字1、2、3、4表示)  user_geohash:地理位置(有空值)  item_category:品類ID(商品所屬的品類)  time:用戶行為發生的時間

02. 提出問題

1. 整體用戶的購物情況

pv(總訪問量)、日均訪問量、uv(用戶總數)、有購買行為的用戶數量、用戶的購物情況、復購率分別是多少?

2. 用戶行為轉化漏斗

點擊— 加購物車— 收藏— 購買各環節轉化率如何?購物車遺棄率是多少,如何提高?

3. 購買率高和購買率為 0 的人群有什麼特徵

4. 基於時間維度了解用戶的行為習慣

5. 基於RFM模型的用戶分析

03. 數據清洗

1. 導入數據

由於數據量有100多萬,通過資料庫管理工具 Navicat 將數據集導入 MySQL 資料庫會表較慢,我這裡使用ETL工具kettle進行導數,能夠提高導數效率,也方便後續實現報表自動化處理,資料庫的表名為user。

2. 缺失值處理

item_category 列表示地理位置資訊,由於數據存在大量空值,且位置資訊被加密處理,難以研究,因此後續不對item_category列進行分析。

3. 數據一致化處理

由於 time 欄位的時間包含(年-月-日)和小時,為了方便分析,將該欄位分成 2 個欄位,一個日期列(date)和一個小時列(time)。

{!– PGC_COLUMN –}

由於 behavior_type 列的四種行為類型分別用 1,2,3,4 表示點擊、收藏、加購物車、購買四種行為,為了方便查看數據,將1,2,3,4替換為 『pv'、』fav『,』cart',『buy' 。

通過查詢表結構,可以看到 date 列日期列不是日期類型:

將date 列改成 date 類型:

04. 構建模型和分析問題

1. 總體用戶購物情況

  • pv(總訪問量)
  • 日均訪問量
  • uv(用戶總數)
  • 有購買行為的用戶數量
  • 用戶的購物情況
  • 復購率:產生兩次或兩次以上購買的用戶占購買用戶的比例

2. 用戶行為轉化漏斗

在購物環節中收藏和加入購物車兩個環節沒有先後之分,所以將這兩個環節可以放在一起作為購物環節的一步。最終得到用戶購物行為各環節轉化率,如下:

不同的行業轉化率會有差異,據2012年的一項研究表明,在整個互聯網範圍內,平均轉化率為2.13%(數據來源於《精益數據分析》),圖中所示購買行為的轉化率為1.04%,與行業平均值存在較大差異,淘寶移動端用戶行為的轉化率還有很大的增長空間。

3. 購買率高和購買率為低的人群有什麼特徵

購買率高用戶特徵:

由以上結果可以看出,購買率高的用戶點擊率反而不是最多的,這些用戶收藏數和加購物車的次數也很少,一般不點擊超過5次就直接購買,由此可以推斷出這些用戶為理智型消費者,有明確的購物目標,屬於缺啥買啥型,很少會被店家廣告或促銷吸引。

購買率為低用戶特徵:

由以上結果可以看出,購買率為低用戶分為兩類,

第一類是點擊次數少的,一方面的原因是這類用戶可能是不太會購物或者不喜歡上網的用戶,可以加以引導,另一方面是從商品的角度考慮,是否商品定價過高或設計不合理;

第二類用戶是點擊率高、收藏或加購物車也多的用戶,此類用戶可能正為商家的促銷活動做準備,下單慾望較少且自制力較強,思慮多或者不會支付,購物難度較大。

4. 基於時間維度了解用戶的行為習慣

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

可以看出,每日0點到5點用戶活躍度快速降低,降到一天中的活躍量最低值,6點到10點用戶活躍度快速上升,10點到18點用戶活躍度較平穩,17點到23點用戶活躍度快速上升,達到一天中的最高值。

(2)一周中用戶活躍時段分布

由於第一周和第五周的數據不全,因此這兩周的數據不考慮到此次數據分析中。

由以上結果可以看出,每周用戶活躍度較穩定,每周五活躍度會有小幅降低,但是周末會慢慢回升。其中周五用戶活躍度突增,這是由雙十二電商大促銷活動引起。

5. 基於 RFM 模型找出有價值的用戶

RFM模型是衡量客戶價值和客戶創利能力的重要工具和手段,其中由3個要素構成了數據分析最好的指標,分別是:

  • R-Recency(最近一次購買時間)
  • F-Frequency(消費頻率)
  • M-Money(消費金額)

由於數據源沒有相關的金額數據,暫且通過 R 和 F 的數據對客戶價值進行打分。

(1)計算R-Recency

由於數據集包含的時間是從2014年11月18日至2014年12月18日,這裡選取2014年12月19日作為計算日期,統計客戶最近發生購買行為的日期距離2014年12月19日間隔幾天,再對間隔時間進行排名,間隔天數越少,客戶價值越大,排名越靠前。

(2)計算F-Frequency

先統計每位用戶的購買頻率,再對購買頻率進行排名,頻率越大,客戶價值越大,排名越靠前。

(3)對用戶進行評分

對4330名有購買行為的用戶按照排名進行分組,共劃分為四組,對排在前四分之一的用戶打4分,排在前四分之一到四分之二(即二分之一)的用戶打3分,排在前四分之二到前四分之三的用戶打2分,剩餘的用戶打1分,按照這個規則分別對用戶時間間隔排名打分和購買頻率排名打分,最後把兩個分數合併在一起作為該名用戶的最終評分。

計算腳本如下:

'''  SELECT r.user_id,r.recent,r.recent_rank,f.frequency,f.freq_rank,  CONCAT(  --  對客戶購買行為的日期排名和頻率排名進行打分  CASE WHEN r.recent_rank <= (4330/4) THEN '4'  WHEN r.recent_rank > (4330/4) AND r.recent_rank <= (4330/2) THEN '3'  WHEN r.recent_rank > (4330/2) AND r.recent_rank <= (4330/43) THEN '2'  ELSE '1' END,  CASE WHEN f.freq_rank <= (4330/4) THEN '4'  WHEN f.freq_rank > (4330/4) AND f.freq_rank <= (4330/2) THEN '3'  WHEN f.freq_rank > (4330/2) AND f.freq_rank <= (4330/43) THEN '2'  ELSE '1' END  ) AS user_value  FROM  --  對每位用戶最近發生購買行為的間隔時間進行排名(間隔天數越少,客戶價值越大)  (SELECT a.,(@rank := @rank + 1) AS recent_rank  FROM  --  統計客戶最近發生購買行為的日期距離'2014-12-19'間隔幾天  (SELECT user_id,DATEDIFF('2014-12-19',MAX(date)) AS recent  FROM user  WHERE behavior_type = 'buy'  GROUP BY user_id  ORDER BY recent) AS a,  (SELECT @rank := 0) AS b)  AS r,  -- 對每位用戶的購買頻率進行排名(頻率越大,客戶價值越大)  (SELECT a.,(@rank2 := @rank2 + 1) AS freq_rank  FROM   --  統計每位用戶的購買頻率  (SELECT user_id,COUNT(behavior_type) AS frequency  FROM user  WHERE behavior_type = 'buy'  GROUP BY user_id  ORDER BY frequency DESC) AS a,  (SELECT @rank2 := 0) AS b)  AS f  WHERE r.user_id = f.user_id;  '''

通過打分可以了解每位顧客的特性,從而實現差異化營銷。比如對於 user_value = 44 的用戶,為重點用戶需要關注;對於user_value = 41 這類忠誠度高而購買能力不足的,可以可以適當給點折扣或捆綁銷售來增加用戶的購買頻率。

(4)kettle製作報表自動化

為了實現監測每個月用戶的評分變化,推測客戶消費的異動狀況,結合資料庫使用ETL工具kettle實現定時輸出評分結果:

這裡kettle實現過程不做詳細描述。

05. 結論

1. 總體轉化率只有 1%,用戶點擊後收藏和加購物車的轉化率在 5% ,需要提高用戶的購買意願,可通過活動促銷、精準營銷等方式。

2. 購買率高且點擊量少的用戶屬於理智型購物者,有明確購物目標,受促銷和廣告影響少;而購買率低的用戶可以認為是等待型或克制型用戶群體,下單慾望較少且自制力較強,購物難度較大。

3. 大部分用戶的主要活躍時間在10點到23點,在19點到23點達到一天的頂峰。每周五的活躍度有所下降,但周末開始回升。可以根據用戶的活躍時間段精準推送商家的折扣優惠或促銷活動,提高購買率。

4. 通過 R 和 F 的數據對用戶行為進行打分,對每位用戶進行精準化營銷,還可以通過對R 和 F 的數據監測,推測客戶消費的異動狀況,挽迴流失客戶。

End.

作者:數據分析不是個事兒 來源:簡書