用户购物行为分析
淘寶用戶行為分析
- (一)項目數(shù)據(jù)來源
- (二)分析角度
- (三)分析正文
- 提出問題
- 理解數(shù)據(jù)
- 數(shù)據(jù)清洗
- (四)模型構(gòu)建
- 1. 用戶購物情況整體分析
- 2 用戶行為時間維度分析
- 3 商品銷售情況分析
- 4 用戶行為路徑分析
- 5 參照RFM模型,對用戶進行分類找出有價值的用戶
- 6 聚類分析
- (五)結(jié)論及建議
(一)項目數(shù)據(jù)來源
項目數(shù)據(jù)來源于: https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1。
用戶在網(wǎng)上進行購物時,會產(chǎn)生一系列的數(shù)據(jù),這些數(shù)據(jù)綜合起來既反映了用戶的行為偏好,也反映了商品的受歡迎程度,同時反映了在用戶和商品的交互過程中所產(chǎn)生的問題。
旨在通過此項目來學(xué)習(xí)電商數(shù)據(jù)的主要分析方法和分析思路,主要使用的工具為Mysql。
(二)分析角度
首先分為兩個角度:用戶和商品
用戶角度主要從時間維度來分析用戶的各種行為情況以及之間的關(guān)系:
商品角度主要銷量維度分析商品的賣點和銷售潛力
(三)分析正文
分析步驟如下:
提出問題- -理解數(shù)據(jù)- -數(shù)據(jù)清洗- -構(gòu)建模型- -分析結(jié)論
提出問題
根據(jù)之前的維度,有以下幾個分析角度:
? 用戶最活躍的日期及時段
? 用戶對商品有哪些購買偏好
? 用戶行為間的轉(zhuǎn)化情況
? 用戶分類,哪些是有價值的用戶
? 同一商品復(fù)購率和回購率排名
理解數(shù)據(jù)
本數(shù)據(jù)集包含了2017年11月25日至2017年12月3日之間,有行為的約一百萬隨機用戶的所有行為(行為包括點擊、購買、加購、喜歡)
用戶行為類型又分為四種:
pv:商品詳情頁pv,等價于點擊
buy:商品購買
cart:商品加入購物車
fav:收藏
數(shù)據(jù)清洗
包含數(shù)據(jù)導(dǎo)入(采用Navicat)、缺失值處理、一致化處理、異常值處理(2017.11.25到2017.12.3日內(nèi)的數(shù)據(jù))
為了之后的分析方便,在表中添加字段“datetime”“times”“dates”“hours”“weekday”“week”,分別存放時間戳轉(zhuǎn)化的日期時間,時間,日期,小時,星期幾,第幾周。表達(dá)式為:
4. 異常值處理
因為該數(shù)據(jù)集為2017年11月25日至2017年12月3日之間產(chǎn)生的用戶行為,因此查詢不在此區(qū)間的數(shù)據(jù),共1944條,為異常值數(shù)據(jù)點:
相對于總數(shù)據(jù)量3835330來說,占全體數(shù)據(jù)量的0.05%,可認(rèn)為對總樣本影響很小,可以直接刪去。
(四)模型構(gòu)建
1. 用戶購物情況整體分析
1.1 總的點擊量查詢,結(jié)果為3431905
SELECT count(*) FROM userbehavior WHERE behavior_type = 'pv';1.2 總的購買次數(shù)查詢,結(jié)果為76707
SELECT count(*) FROM userbehavior WHERE behavior_type = 'buy';1.3 總的加入購物車數(shù)查詢,結(jié)果為213634
SELECT count(*) FROM userbehavior WHERE behavior_type = 'cart';1.4 總的收藏量查詢,結(jié)果為111140
SELECT count(*) FROM userbehavior WHERE behavior_type = 'fav';2 用戶行為時間維度分析
2.1 點擊量時間段分布(每日訪客)查詢
SELECT dates,count(*) as 訪客 FROM userbehavior WHERE behavior_type = 'pv' GROUP BY dates;
查詢?nèi)掌诤蟀l(fā)現(xiàn),12月2日和12月3日為周六周日,訪客增多符合預(yù)期。但對比11月25日和11月26日(同樣是周末),雖然訪問量比工作日略有提升,但并不明顯,需要深入挖掘具體原因。
2.2 各個時段訪客量
SELECT hours,count(*) as 訪客 FROM userbehavior WHERE behavior_type = 'pv' GROUP BY hours ORDER BY hours asc;
可以看出,可大致分為4個等級:
2.3 各個時段成交量查詢
SELECT hours,count(*) as 成交量 FROM userbehavior WHERE behavior_type = 'buy' GROUP BY hours ORDER BY hours asc;
與各個時段的訪問量不同,晚上(20:00-23:00)的購買量與白天(09:00-18:00)相比并沒有顯著的提升。認(rèn)為是晚上下班后休閑時客戶的瀏覽行為相比較于購買行為較白天增多,并且白天有工作購買的需求。
2.4對工作日白天夜間購買量進行查詢
進一步,我們對工作日白天的購買量進行查詢驗證猜想:
由此發(fā)現(xiàn),發(fā)現(xiàn),工作日白天消費較多,占到一半以上,符合之前2.3的推測。
以上分析可以看出:
3 商品銷售情況分析
3.1 商品交易數(shù)總量,結(jié)果為56726
SELECTcount( DISTINCT item_id ) AS 交易商品數(shù) FROMuserbehavior WHEREbehavior_type = 'buy';3.2 商品每日成交量查詢
SELECTdates,COUNT( behavior_type ) AS 成交量 FROMuserbehavior WHEREbehavior_type = 'buy' GROUP BYdates;
可以看出,2017/11/25-2017/12/2之間的每日成交量變化幅度并不是很大,12/2與12/3兩個周末成交量有小幅度上漲,推測是這段時間處于雙11 與雙12之間,沒有特別大的購物活動,因而變化不明顯。
3.3 商品被購買次數(shù)排名查詢(取前20名)
SELECTa.* FROM(SELECTu.item_id,COUNT( u.behavior_type ) AS 被購買次數(shù) FROMuserbehavior AS u WHEREu.behavior_type = 'buy' GROUP BYu.item_id ORDER BY被購買次數(shù) DESC ) AS a LIMIT 20;
可以根據(jù)商品被購買次數(shù)后續(xù)進行商品受歡迎程度對比(同一商品大類下),分析受歡迎商品的共同點。
4 用戶行為路徑分析
4.1 各類用戶行為人數(shù)查詢
SELECTbehavior_type,count( behavior_type ) AS 人數(shù) FROMuserbehavior GROUP BYbehavior_type;
4.2 用戶行為路徑分析
因為未知用戶收藏和加入購物車的關(guān)系,所以暫定兩者平行,分為
①點擊→收藏→購買
②點擊→加入購物車→購買
③點擊→購買
這三條行為路徑
第一條路經(jīng)
①收藏轉(zhuǎn)化率=添加收藏后購買的用戶數(shù)/添加收藏的用戶數(shù)
點擊用戶數(shù)為:37223
收藏用戶數(shù)為:14943
收藏后加購用戶數(shù)為:3233
收藏轉(zhuǎn)化率為:3233/14943 = 21.6%
而瀏覽收藏轉(zhuǎn)化率為:14943/37223 = 40.1%
第二條路經(jīng)
②購物車轉(zhuǎn)化率=加入購物車后購買的用戶數(shù)/加入購物車的用戶數(shù)
點擊用戶數(shù)為:37223
添加購物車用戶數(shù)為:28122
添加購物車后購買的用戶數(shù)為:8503
購物車轉(zhuǎn)化率:8503/28122 = 30.2%
而瀏覽加購物車轉(zhuǎn)化率為:28122/37223 = 75.6%
對比以上兩種路徑可以看出,用戶點擊到加入購物車的轉(zhuǎn)化率很高,達(dá)到了75.6%,說明大部分用戶點擊瀏覽后有購買意向,因此選擇加入購物車,但是只有30%的加入購物車商品立即實現(xiàn)了購買,推測產(chǎn)生此現(xiàn)象的原因是:
同時發(fā)現(xiàn),用戶點擊到加入購物車的轉(zhuǎn)化率(75.6%)遠(yuǎn)高于點擊到收藏的轉(zhuǎn)化率(40.1%),說明用戶有購買意向時更傾向于加入購物車,認(rèn)為原因是因為購物車方便下單購買,有直接付款的選項,而收藏需要重新進入商品頁面選擇,造成用戶的流失。
5 參照RFM模型,對用戶進行分類找出有價值的用戶
5.1 顧客復(fù)購率查詢
a.總的產(chǎn)生購買行為的用戶數(shù)查詢,結(jié)果為:25400
SELECTCOUNT( DISTINCT user_id ) AS 購買人數(shù) FROMuserbehavior WHEREbehavior_type = 'buy';b.購買兩次以上的用戶數(shù)查詢,結(jié)果為:16712
SELECTCOUNT( * ) AS 購買人數(shù) FROM( SELECT COUNT( u.user_id ) AS 用戶購買次數(shù) FROM userbehavior AS u WHERE behavior_type = 'buy' GROUP BY u.user_id ) AS userbuy WHEREuserbuy.用戶購買次數(shù) > 1;因此復(fù)購率 = 16712/25400*100% = 65.8%
5.2 重復(fù)購買次數(shù)最多的用戶查詢(前20名)
SELECTuser_id,count( user_id ) AS 購買次數(shù) FROMuserbehavior WHEREbehavior_type = 'buy' GROUP BYuser_id ORDER BY購買次數(shù) DESC LIMIT 20;
這些用戶在9天里消費了至少30次,上至84次,屬于高頻率消費客戶,需要特別標(biāo)注。
5.3 RFM模型
RFM模型是衡量客戶價值和客戶創(chuàng)利能力的重要工具和手段。在眾多的客戶關(guān)系管理(CRM)的分析模式中,RFM模型是被廣泛提到的。該機械模型通過一個客戶的最近交易行為(Recency)、交易頻率(Frequency)以及交易金額(Monetary)3項指標(biāo)來描述該客戶的價值狀況。
最近一次消費 (Recency):最近一次消費意指上一次購買的時候,它反映與顧客建立長期的關(guān)系,讓顧客持續(xù)保持往來,并贏得他們的忠誠度的可能性。
消費頻率 (Frequency):消費頻率是顧客在限定的期間內(nèi)所購買的次數(shù)。它直接反映了顧客對商品的忠誠度。
消費金額 (Monetary):指的是一段時間內(nèi)的消費金額。它反映了顧客的消費能力。(因為此數(shù)據(jù)不涉及商品金額,因此只對R和F進行分析)
R(最近一次消費)查詢:
因為數(shù)據(jù)集是從11月25日起始,因此可以把距離11月25日的時間作為R值標(biāo)準(zhǔn),距離越久,得分越高,最近一次消費時間越近。
F(消費頻率)查詢:
從上文復(fù)購率部分可知,購買次數(shù)最多的用戶購買次數(shù)為84次,與R檔位對應(yīng),從1-84劃分為4檔:[1-21],[22-42],[43-63],[64-84]分別對應(yīng)1,2,3,4分。
| 低 | 低 | 重要挽留以及一般挽留客戶 |
| 低 | 高 | 重要保持以及一般保持客戶 |
| 高 | 低 | 重要發(fā)展以及一般發(fā)展客戶 |
| 高 | 高 | 重要價值以及一般價值客戶 |
求得R平均值為:2.98
求得F平均值為:1.00
至此,我們就可以對所有的購買用戶進行畫像分類。
順便,為了了解各個類型用戶數(shù)量情況,可以對此進行查詢:
| 價值客戶 | 225 |
| 保持客戶 | 17 |
| 發(fā)展客戶 | 17154 |
| 挽留客戶 | 8004 |
可以看出,價值客戶與保持客戶較少,僅占比0.95%,因此需要及時針對不同類型客戶做出相應(yīng)的調(diào)整計劃:
- 對于價值客戶,他們是最優(yōu)質(zhì)的用戶,需要重點關(guān)注并保持,應(yīng)該提高滿意度,增加留存;
- 對于保持客戶,他們最近有購買,但購買頻率不高,可以通過活動等提高其購買頻率;
- 對于發(fā)展客戶,他們雖然最近沒有購買,但以往購買頻率高,可以做觸達(dá),以防止流失;
- 對于挽留客戶,他們最近沒有購買,以往購買頻率也不高,特別容易流失,所以應(yīng)該贈送優(yōu)惠券或推送活動信息,喚醒購買意愿。
6 聚類分析
最后,借助python中的sklearn庫對用戶進行行為聚類分析
#導(dǎo)入所需庫 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.cluster import KMeans from sklearn.preprocessing import StandardScaler#將上文中使用Mysql處理過的數(shù)據(jù)導(dǎo)出,并導(dǎo)入jupyter notebook df = pd.read_csv("C:/Users/Y/Desktop/淘寶用戶行為/userbehavior1.csv") #實例化Kmeans聚類器 estimator = KMeans(n_clusters=3,tol=0.001,init = 'k-means++')data_behavior = df.groupby(['user_id','behavior_type']).count()['item_id'].unstack().reset_index() data_behavior = data_behavior.fillna(0)#添加時間特征 data_daily = df.groupby(['user_id','times']).count()['item_id'].unstack().reset_index() data_daily = data_daily.fillna(0) estimator.fit(data_daily.iloc[:,1:]) y_daily = estimator.labels_ data_behavior['daily_feature'] = y_daily#添加星期特征 data_week = df.groupby(['user_id','weekday']).count()['item_id'].unstack().reset_index() data_week = data_week.fillna(0) estimator.fit(data_week.iloc[:,1:]) y_week = estimator.labels_ data_behavior['weekday_feature'] = y_week #數(shù)據(jù)查看 data_behavior.head() #整理數(shù)據(jù)特征后聚類 estimator1 = KMeans(n_clusters = 6,tol = 0.001,init = 'k-means++') estimator1.fit(data_behavior1.iloc[:,1:]) data_behavior['cluster'] = estimator1.labels_ merge_data = pd.merge(df,data_behavior, on='user_id',how='left') merge_data = merge_data[['user_id','item_id','behavior_type','times','buytimes','pvtimes','carttimes','favtimes','cluster']]ax = sns.countplot(x="cluster", hue="behavior_type", data=merge_data2)
這是6類的用戶分布情況,因點擊量與其他指標(biāo)數(shù)量差距過大,去除點擊量后重試
可以看出,不同類型的用戶之間的購物習(xí)慣各不相同,有的喜歡加入購物車,有的喜歡收藏,有的喜歡直接購買。
第一類和第5類人數(shù)最多,兩者之間的用戶行為模式也比較相似。
(五)結(jié)論及建議
總結(jié)
- 上一篇: 可汗学院统计学 task4
- 下一篇: coreldraw插件编写