隨着網絡的不斷髮展,網絡購物成爲一種時尚。而做爲消費者,一般只會去關注淘寶裏面的商品內容和是否有活動等,而歷來都不會去關心淘寶內部是如何運做,或這些數據是怎樣的一種存在。爲了知足做爲好奇寶寶的我,心血來潮,想探究究竟。終於在'天池'這個平臺上找到了由阿里巴巴發佈的淘寶用戶行爲數據,以此分析淘寶數據。該數據集的時間節點爲:2014年11月22日到2014年12月18日。python
利用SQL對淘寶用戶行爲進行數據分析,在MySQL關係型數據庫管理系統中進行。分析步驟以下:sql
本項目基於淘寶用戶行爲數據,探索淘寶用戶的行爲模式,尋找高購買率背後用戶行爲特徵,具體指標包括:日PV和日UV分析,支付率分析,復購行爲分析,漏斗轉化率分析和用戶價值RFM分析。數據庫
本次分析的目的是想經過對淘寶用戶行爲數據分析,爲如下問題提供解釋和改進建議:網絡
1.分析用戶常見電商分析指標,肯定各個環節的流失率,找到須要改進的環節app
2.研究用戶在不一樣時間尺度下的行爲規律,找到用戶在不一樣時間週期下的活躍規律優化
3.找到用戶對不一樣種類商品的偏好,找到針對不一樣商品的營銷策略網站
4.找出最具價值的核心付費用戶羣,對這部分用戶的行爲進行分析ui
爲了分析這些問題,咱們使用如下兩種模型進行分析spa
本次分析的目的是想經過對淘寶用戶行爲的數據分析,爲如下問題提供解釋和改進建議:3d
爲分析這些問題,咱們常使用兩種模型分析用戶行爲:(AARRR, RFM模型):
該漏斗模型是將用戶進入app後的每一步行爲進行拆解。它是根據用戶使用產品全流程的不一樣階段進行劃分,針對每一環節的用戶流失狀況分析出不一樣環節的優化優先級:
因爲不一樣的用戶對公司帶來的收益差異很大,並且根據二八定律20%的作有價值用戶能帶來80%的收益,所以須要對用戶進行價值評價,找到最優價值的用戶羣,並針對這部分用戶進行差別化營銷
R-Recency(最近一次購買時間)
R指用戶上一次消費時間,上一次購物時間距離如今最近的客戶,該客戶羣體一般在近期響應營銷活動的可能性也就越大,而對於好久沒有購物行爲也意味着放棄了使用app等,從新喚起用戶也須要更多的成本
F-Frequency(消費頻率)
F指用戶在某段時間內的購物次數,消費頻率越高意味着這部分用戶對產品的滿意度最高,用戶粘性最好,忠誠度也最高。
M-Money(消費金額)
M指用戶在某段時間內的購物金額,這也是爲公司帶來價值的最直接體現,而消費金額較高的用戶在用戶整體中人數較少,卻能創造出更多價值,是須要重點爭取的對象。
這三個維度互相關聯,反映了每一個用戶的如今價值和潛在價值,將每一個維度分紅5個區間進行評分,經過計算分數找到最有價值的用戶,並對用戶進行分類,能夠有針對性的不一樣類型用戶採用不一樣的營銷策略。
本次數據是基於阿里巴巴M-Commerce平臺上的真實用戶 - 商品行爲數據。同時,它提供移動時代的典型位置信息。參與者須要構建面向移動商務的商品推薦模型。他們還但願深刻了解數據背後的含義,並在適當的時間和地點爲移動用戶推薦合適的商品。
天池數據集:https://tianchi.aliyun.com/dataset/dataDetail?dataId=46
本數據集(UserBehavior.csv)包含了2014年11月22日至2017年12月18日之間,有行爲的約一百萬隨機用戶的全部行爲(行爲包括點擊、收藏、加購物車、支付)。數據集的組織形式和MovieLens-20M相似,即數據集的每一行表示一條用戶行爲,由用戶ID、商品ID、商品類目ID、行爲類型和時間戳組成,並以逗號分隔。關於數據集中每一列的詳細描述以下:
理解商品數據集的字段信息:
item_id: 用戶id
item_geohash: 商品id
item_category: 品類id(商品所屬品類)
用戶數據集:
user_id: 用戶id
item_id: 商品id
behavior_type: 用戶行爲類型(分別用一、二、三、4表示點擊、收藏、加購物車、支付四種狀態)
user_geohash: 用戶地理位置
item_category: 品類id(商品所屬的品類)
time: 用戶行爲發生時間
在MySQL中建立user表,使用Navicat導入數據
create table user( 用戶id int not null , 商品id varchar(255), 用戶行爲 enum('點擊','收藏','加購物車','支付'), 用戶地理位置 varchar(255), 商品品類 varchar(255), 時間 varchar(255))engine=innodb default charset=UTF8;
經過navicat將數據集導入MySQL庫。共有12256906條數據
缺失值處理:
經過觀察發現用戶地理位置多爲空值,經統計共有8334824條,爲防止對結果形成誤導,故該維度特徵不作分析。
用戶發生行爲時間數據一致化處理如上圖
因爲 time 字段的時間包含(年-月-日)和小時,爲了方便分析,將該字段分紅 2 個字段,一個日期列和一個小時列。如上表所示。
用戶總的瀏覽量(PV)
PV(訪問量):即Page View, 具體是指網站的是頁面瀏覽量或者點擊量,頁面被刷新一次就計算一次。
UV(獨立訪客):即Unique Visitor,訪問您網站的一臺電腦客戶端爲一個訪客。
日均訪問量
SELECT 日期, COUNT(`用戶行爲`) AS '日均訪問量' FROM USER WHERE `用戶行爲` = '點擊' GROUP BY 日期 ORDER BY 日期;
由上圖可知,在12月12日當天,訪問量急劇增長,有明顯的峯值,這個與雙十二活動有關。所以,在活動前幾天或者當天能夠加大商品的投放量。
用戶老是(UV)
使用查詢語句分別輸出用戶點擊,收藏,加入購物車以及支付的用戶人數
SELECT COUNT(DISTINCT `用戶id`) AS '點擊用戶數量' FROM user WHERE `用戶行爲` = '點擊'; SELECT COUNT(DISTINCT `用戶id`) AS '收藏用戶數量' FROM user WHERE `用戶行爲` = '收藏'; SELECT COUNT(DISTINCT `用戶id`) AS '加購物車用戶數量' FROM user WHERE `用戶行爲` = '加購物車'; SELECT COUNT(DISTINCT `用戶id`) AS '支付用戶數量' FROM user WHERE `用戶行爲` = '支付';
結果爲:
CREATE VIEW 單個用戶行爲 AS SELECT `用戶id`, count(`用戶行爲`), SUM(CASE WHEN `用戶行爲`='點擊' THEN 1 ELSE 0 END) AS '點擊次數', SUM(CASE WHEN `用戶行爲`='收藏' THEN 1 ELSE 0 END) AS '收藏次數', SUM(CASE WHEN `用戶行爲`='加購物車' THEN 1 ELSE 0 END) AS '加購物車數', SUM(CASE WHEN `用戶行爲`='支付' THEN 1 ELSE 0 END) AS '購買次數' FROM user GROUP BY `用戶id` ORDER BY COUNT(`用戶行爲`) DESC;
查詢結果爲:
查看單個用戶的復購率:
SELECT CONCAT(ROUND(SUM(case when `支付次數`>=2 then 1 else 0 end) / SUM(case when 支付次數>0 then 1 else 0 end) * 100), '%') AS '復購率' FROM 單個用戶行爲;
用戶購買行爲,收藏和加購物車兩個環節是並行的,不存在上下承接關係
SELECT SUM(點擊次數) AS '總點擊數', SUM(收藏次數) AS '收藏總數', SUM(加購物車次數) AS '加購物車總數', SUM(支付次數) AS '支付總數' FROM 單個用戶行爲;
用戶購買行爲轉化率
SELECT CONCAT(ROUND(SUM(點擊次數)/(SELECT COUNT(*) from `user`)*100,2),'%') AS '點擊-瀏覽轉化率', CONCAT(ROUND((SUM(收藏次數)+SUM(加購物車次數))/SUM(點擊次數)*100,2),'%') AS '收藏加購物車-點擊轉化率', CONCAT(ROUND(SUM(支付次數)/(SUM(收藏次數)+SUM(`加購物車次數`))*100,2),'%') AS '購買-收藏加購物車轉化率' FROM 單個用戶行爲;
SELECT CONCAT(ROUND(SUM(點擊次數)/(SELECT COUNT(*) from `user`)*100,2),'%') AS '點擊-瀏覽轉化率', CONCAT(ROUND(SUM(收藏次數)/SUM(點擊次數)*100,2),'%') AS '收藏-點擊轉化率', CONCAT(ROUND(SUM(加購物車次數)/SUM(點擊次數)*100,2),'%') AS '購物車-點擊轉化率', CONCAT(ROUND(SUM(支付次數)/SUM(點擊次數)*100,2),'%') AS '購買-點擊轉化率' FROM 單個用戶行爲;
### 降序排序 SELECT 用戶id, 點擊次數, 收藏次數, 加購物車次數, 支付次數, CONCAT(ROUND(支付次數/點擊次數*100, 2),'%') AS '購買率' FROM `單個用戶行爲` GROUP BY `用戶id` ORDER BY 支付次數 DESC; ### 升序排序 SELECT 用戶id, 點擊次數, 收藏次數, 加購物車次數, 支付次數, CONCAT(ROUND(支付次數/點擊次數*100, 2),'%') AS '購買率' FROM `單個用戶行爲` GROUP BY `用戶id` ORDER BY 支付次數 ASC;
由上表能夠發現,購買率高並不表明購買次數就高,由此能夠推斷,點擊次數少,收藏也少可是購買次數越高的人是有目的的購物。這類用戶更喜歡看準目標就直接下單,此類用戶目標明確,通常都是缺啥買啥,鮮少會爲了促銷而衝動購物,爲理智購物型
購買率爲0用戶:此類用戶能夠認爲是等待型或剋制型用戶,該類用戶在一個月裏購物慾望爲0,若是點擊次數較少,多是不太會購物的或者不喜歡上網的用戶;若是點擊次數較多,加購或收藏較多,有可能考慮是爲商家活動作準備,該類用戶,下單慾望較少且自制力較強,思慮多或者不會支付,購物難度較大。
SELECT 時間, COUNT(`用戶行爲`), SUM(CASE WHEN `用戶行爲`='點擊' THEN 1 ELSE 0 END) AS '點擊次數', SUM(CASE WHEN `用戶行爲`='收藏' THEN 1 ELSE 0 END) AS '收藏次數', SUM(CASE WHEN `用戶行爲`='加購物車' THEN 1 ELSE 0 END) AS '加購數', SUM(CASE WHEN `用戶行爲`='支付' THEN 1 ELSE 0 END) AS '購買次數' FROM user GROUP BY `時間` ORDER BY `時間`;
能夠看出,每日0點到5點用戶活躍度快速下降,降到一天中的活躍量最低值,6點到10點用戶活躍度快速上升,10點到18點用戶活躍度較平穩,18點到23點用戶活躍度快速上升,達到一天中的最高值。與用戶產生互動的運營行爲能夠參考用戶比較活躍的時間段。
一週中用戶活躍時間段分佈
SELECT DATE_FORMAT(日期,'%W') AS weeks, COUNT(`用戶行爲`), SUM(CASE WHEN `用戶行爲`='點擊' THEN 1 ELSE 0 END) AS '點擊次數', SUM(CASE WHEN `用戶行爲`='收藏' THEN 1 ELSE 0 END) AS '收藏次數', SUM(CASE WHEN `用戶行爲`='加購物車' THEN 1 ELSE 0 END) AS '加購數', SUM(CASE WHEN `用戶行爲`='支付' THEN 1 ELSE 0 END) AS '購買次數' FROM user where 日期 BETWEEN '2014-11-23' AND '2014-12-13' GROUP BY weeks ORDER BY DATE_FORMAT(日期,'%w');
每週用戶活躍度較穩定,每週五活躍度會有小幅下降,可是週末會慢慢回升。其中第四周週五用戶活躍度突增是由雙十二大促活動引發。
不一樣商品種類的用戶行爲
select count(商品id) FROM (SELECT 商品id, count(用戶id) as 'times' FROM user where 用戶行爲 = '支付' GROUP BY 商品id) as buy_times GROUP BY times ORDER BY COUNT(*) desc;
在本次統計的數據中,只購買一次的產品有77586種,購買兩次的產品有9910種,本次分析的商品中用戶購買的共有92753種商品,卻沒有出現購買用戶數量很是集中的商品,購買一次的商品佔到83.65%,說明商品售賣主要依靠長尾商品的累積效應,而非爆款商品的帶動。
咱們首先統計出用戶購買商品的最大值和最小值,數據源中沒有相關的金額數據,所以經過 R 和 F 的數據對客戶價值進行打分
SELECT r.用戶id,f.frequency,recent_rank,freq_rank, CONCAT( CASE WHEN recent_rank<=(4330)/4 THEN '4' WHEN recent_rank>(4330)/4 AND recent_rank<=(4330)/2 THEN '3' WHEN recent_rank>(4330)/2 AND recent_rank<=4330/4*3 THEN '2' ELSE '1' END, CASE WHEN freq_rank<=(4330)/4 THEN '4' WHEN freq_rank>(4330)/4 AND freq_rank<=(4330)/2 THEN '3' WHEN freq_rank>(4330)/2 AND freq_rank<=4330/4*3 THEN '2' ELSE '1' END )AS user_value FROM (SELECT a.*,(@rank:=@rank+1) AS recent_rank FROM ( SELECT `用戶id`, DATEDIFF('2014-12-19',max(日期)) AS recent FROM user AS t1 WHERE `用戶行爲`='支付' GROUP BY `用戶id` ORDER BY recent )AS a,(SELECT @rank:=0) AS b) AS r, (SELECT *,(@rank2:=@rank2+1) AS freq_rank FROM (SELECT `用戶id`,count(*) AS frequency FROM user WHERE `用戶行爲`='支付' GROUP BY `用戶id` ORDER BY frequency DESC) AS a,(SELECT @rank2:=0)AS b) AS f WHERE r.用戶id=f.用戶id ORDER BY user_value DESC;
經過打分能夠了解每位顧客的特性,從而實現差別化營銷。好比對於客戶價值高的用戶,爲重點用戶須要關注;對於客戶價值中等且忠誠度高而購買能力不足的,能夠能夠適當給點折扣或捆綁銷售來增長用戶的購買頻率。對於客戶價值低且忠誠度不高而購買能力強的,須要關注他們的購物習性作精準化營銷,對於客戶價值低且忠誠度不高購買能力不強的客戶可做爲潛在客戶。
本次分析利用Mysql語句執行,數據集大約有1000萬條淘寶用戶行爲數據,針對用戶行爲問題咱們可使用AARRR漏斗模型進行業務分析,結合上述分析的業務指標,提出修改建議。
第一環節獲取客戶(Acquisition):關鍵點是語言市場匹配、渠道產品匹配。
2014年12月12日那一天是雙十二,點擊量陡增,懷疑是那一天淘寶平臺有大促銷促銷活動。一天的不一樣時段中,點擊量從19點開始點擊量穩步上升,到22點到達頂峯,23點稍有回落,到24點明顯降低,大部分用戶會在晚上時段購物,平臺開展活動獲取客戶首選這個時間段進行。
淘寶是電商第一平臺,用戶基數大,能夠利用用戶轉發的方式獲取新客戶,好比在晚間時段作促銷活動,邀請朋友拼團享受優惠來增長用戶數,適合利用口碑渠道獲取新客戶。
第二環節激活用戶(Activation):摸清楚產品的「啊哈」時刻,用戶從瀏覽到最終購買整個過程的流失狀況,肯定夾點位置,提出改善轉化率的建議。
用戶行爲包括點擊、放進購物車、收藏以及購買,點擊量佔總行爲的94%,而放進購物車只佔2.97%,最後實際購買跌至1.04%,夾點在放進購物車這一環節上。可能出現的緣由是用戶花了大量時間尋找合適的產品。
根據數據分析結果改善轉化率的建議有:(1)優化電商平臺的篩選功能,增長關鍵詞的準確率,讓用戶能夠更容易找到合適產品;(2)給客戶提供同類產品比較的功能,讓用戶不須要屢次返回搜索結果反覆查看,便於用戶肯定心怡產品;(3)精簡下單步驟,提供一鍵下單服務,好比只包含點擊-購買-支付三個環節,縮短購買流程,提升用戶體驗。
第三個環節提升留存(Retention):讓用戶養成使用習慣。
讓用戶保持使用淘寶電商平臺的習慣是提升留存率的關鍵,可採用的方案可能有:(1)按照使用頻率和購買次數積攢積分,天天上線點擊量達到某個數值便可自動領取積分,到月末換取購物禮券;(2)對於年購買次數和金額達到規定量的客戶推出VIP服務,享受全場不限時9.5折優惠,購買次數同比上升以後相應福利也上升,利用這種方法提升高價值用戶的留存率和對平臺的忠誠度。
第四個環節增長收入(Revenue):提升成交轉化率、復購率及產品和類目的購買率狀況。
獨立用戶從點擊到最後購買的轉化率約爲68%,用戶購買誠意仍是很足的,因此經過合理優化電商平臺的篩選功能能夠提升最終購買的轉化率。
有購買行爲的用戶中,大概有92%的用戶會重複購買。咱們能夠經過復購率、購買金額(本次數據集沒有提供)等來肯定價值用戶,經過分析找出價值用戶的購買偏好,產品和類目等,給價值用戶制定個性化的產品推薦,從而提升用戶體驗和電商平臺銷售狀況。
以上數據顯示淘寶平臺的最大優點是產品種類和類目豐富,用戶可選擇的範圍很是廣,吸引不一樣類型的客戶羣,因此應該繼續保持這個優點。
可能合適的提升方案有:(1)內容營銷:「沒有找不到的產品,只有想不到的產品」來宣傳平臺購物種類豐富,讓用戶造成「只要買東西上淘寶必定有」的思惟習慣;(2)針對前面肯定的價值用戶提供個性化產品推薦,好比最關心的產品類目和種類,上新以後定時推送給用戶;(3)針對復購率,能夠推出3個月內復購優惠活動,讓客戶保持購買頻率。
第五個環節推薦(Refer):用戶推薦給其餘人,關注轉發率、轉化率和K因子。
針對淘寶平臺,讓用戶推薦給其餘人的方案有:(1)產品在購買的時候提供拼團服務,讓用戶主動推薦給其餘人;(2)每當推出新功能,好比前面提到的一鍵下單,讓體驗過的用戶轉發和分享領取優惠券,快速實現新功能推廣;(3)當用戶使用優惠券購物或者經過某種行爲積分購物以後提供朋友圈打卡功能,分享給好友,實現傳播功能。
在實行以上方案以後須要關注轉發率,也既用戶分享的比例,轉化率,經過用戶分享連接點擊購買的用戶比例以及K因子( = 感染率*轉化率)來檢測提出方案的有效性。