日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据分析项目某电商app行为数据分析(1)

發布時間:2024/1/23 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据分析项目某电商app行为数据分析(1) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

安裝mysql數據庫(官網下載即可,免費)
安裝過程如下:
MySQL數據庫安裝

安裝數據庫客戶端(官網下載試用版或破解版),安裝過程如下
https://blog.csdn.net/wypersist/article/details/79834490
數據集下載:
天池競賽
將下載到的csv文件導入到mysql數據庫,參考以下:
excel導入mysql庫
拿到數據,先看一眼數據長啥樣,是否有null值,什么樣的數據類型;

select * from tianchi_mobile_recommend_train_user limit 10;


user_id:用戶唯一標識

item_id:商品標識

behavior_type:用戶對商品行為類型,{1,瀏覽;2,收藏;3,加入購物車;4,購買}

user_geohash:用戶位置空間標識,由經緯度通過保密算法生成

item_category:商品分類標識

time:行為時間,精確到小時

說明:用戶位置空間大多為null,難以補充和研究,本例不做地理分析;
商品分類暫時不做分析;

數據范圍:從2014年11月18號~2014年12月18號淘寶APP一個月的行為數據;

select count(user_id) as pv,count(distinct user_id) as uv,count(distinct user_id) / count(user_id) as 'uv/pv' from tianchi_mobile_recommend_train_user where behavior_type=1;


pv:統計周期內頁面瀏覽次數(不去重)

uv:統計周期頁面訪問用戶數(去重)

pv/uv:1155;平均每1155次瀏覽對應一個用戶。對比大盤,歷史基線看這個數據是否可以優化提高;

select count(user_id) from ( select user_id from tianchi_mobile_recommend_train_user group by user_id having count(behavior_type)=1 ) as A;

where 后不能接單行函數,而having可以;having要跟在group by后使用,對分組后數據執行篩選(一般用單行函數,比如計數,平均等);
子查詢給表起別名A是必須的,否則報語法錯誤!
count后不能有空格,真的煩唉;

查詢結果為4,意味著只有4個用戶在30天內只瀏覽了頁面,占比4/10000=0.04%(頁面跳失率=只點擊一次瀏覽的用戶數/總用戶數);說明淘寶app的粘性很大。

提問:如果將上述語言改為以下,將會發生什么?

select count(user_id) from tianchi_mobile_recommend_train_user group by user_id having count(behavior_type)=1


學會一個套路:

先篩選滿足條件的字段建立一個子查詢,然后對子查詢執行計數,平均等操作。
接下來對用戶行為進行分析評價各功能占比:

select behavior_type,count(distinct user_id) from tianchi_mobile_recommend_train_user group by behavior_type;


瀏覽是用戶進入淘寶的第一交互,而第二個交互是收藏,加入購物車,還是直接購買,從數據上看都是可以的,也符合業務邏輯(比如小編本人拿到工資的時候,瀏覽–購買;等錢花的差不多的時候,就是瀏覽–加入購物車—(有錢后)購買)。

進入淘寶app的10000個用戶中,67.3%的用戶選擇了收藏,86.1%的用戶選擇了加入購物車,89%的用戶完成了購買。

進行路徑分析
不區分時間

select behavior_type,count( user_id) from tianchi_mobile_recommend_train_user group by behavior_type;


沒有去除重復值,統計的是點擊次數(一個人可以點擊多次);瀏覽次數11550581,收藏次數343564(收藏/占比=2.9%),購物車次數242556(購物車/瀏覽=2.1%),下單次數120205(下單/瀏覽=1%)。

select count(distinct t1.user_id),count(distinct t2.user_id),count(distinct t3.user_id),count(distinct t4.user_id) from ( select distinct user_id from tianchi_mobile_recommend_train_user where behavior_type=1 )t1 left join (select distinct user_idfrom tianchi_mobile_recommend_train_userwhere behavior_type=2 )t2 on t1.user_id=t2.user_id left join (select distinct user_id,from tianchi_mobile_recommend_train_userwhere behavior_type=3 )t3 on t2.user_id=t3.user_id left join (select distinct user_id from tianchi_mobile_recommend_train_userwhere behavior_type=4 )t4 on t3.user_id=t4.user_id


此為漏斗模型,業務中經常使用left join統計漏斗數據—基于前端埋點。

漏斗模型畫法參考:
漏斗繪制
對漏斗的說明:統計周期內,10000名瀏覽用戶中,有6730名用戶完成了收藏(完成一次就記錄,實際上可能同一用戶多次點擊收藏),收藏用戶中有6020名用戶添加了購物車,添加購物車用戶中有5730名用戶完成下單。下單率(完成下單用戶/進入app瀏覽用戶)為57.3%。

不同時間尺度下的用戶行為路徑分析

最開始我是這樣寫的,

select t1.date,count(distinct t1.user_id),count(distinct t2.user_id),count(distinct t3.user_id),count(distinct t4.user_id) from ( select distinct user_id ,DATE_FORMAT(time,'%Y-%m-%d') as date from tianchi_mobile_recommend_train_user where behavior_type=1 )t1 left join (select distinct user_id,DATE_FORMAT(time,'%Y-%m-%d') as datefrom tianchi_mobile_recommend_train_userwhere behavior_type=2 )t2 on t1.user_id=t2.user_id and t1.date=t2.date left join (select distinct user_id,DATE_FORMAT(time,'%Y-%m-%d') as datefrom tianchi_mobile_recommend_train_userwhere behavior_type=3 )t3 on t2.user_id=t3.user_id and t2.date=t3.date left join (select distinct user_id,DATE_FORMAT(time,'%Y-%m-%d') as datefrom tianchi_mobile_recommend_train_userwhere behavior_type=4 )t4 on t3.user_id=t4.user_id and t3.date=t4.date GROUP BY t1.date ORDER BY t1.date

12256906行*6列然后3個left join的數據用一臺16G的筆記本電腦想跑出結果—不存在的!(跑了20分鐘,沒出結果的我不想等了)。

代碼的原意是按天做漏斗,比如看2018-12-12這一天有多少用戶瀏覽,瀏覽的用戶中有多少收藏,收藏的用戶中有多少添加購物車,添加購物車的用戶中有多少愿意下單。

月維度的用戶行為分析

select DATE_FORMAT(time,'%Y-%m-%d'),sum(case when behavior_type=1 then 1 else 0 end ) as '瀏覽次數', sum(case when behavior_type=2 then 1 else 0 end ) as '收藏次數', sum(case when behavior_type=3 then 1 else 0 end) as '購物車次數', sum(case when behavior_type=4 then 1 else 0 end) as '購買次數' from tianchi_mobile_recommend_train_user group by DATE_FORMAT(time,'%Y-%m-%d') ORDER BY DATE_FORMAT(time,'%Y-%m-%d')



這個語句22s出結果。
實現的需求:知道某天有多少瀏覽量,多少收藏量,多少添加購物車,多少下單。
導出時注意設置格式。


從圖中發現:2014-12-12這天,各項指標都達到了高峰。背后原因是淘寶平臺雙十二做活動,拉高了各項指標。

其中,下單次數環比昨日上漲373%,添加購物車次數環比昨日上漲56.7%,收藏次數環比昨日上漲12.2%,瀏覽次數環比昨日上漲39.4%。活動當天,下單漲幅最大,是因為很多用戶提前看好了產品,等活動上線就開買;收藏漲幅最低,是因為用戶使用收藏的心理預期是下次再看看,這次不再自己購買物品清單內,優先級是最低的;添加購物車漲幅度也很大,是因為用戶添加購物車可以使用批量付款的原因,這樣可以節省用戶的購買時間。四項指標中圍繞付款的瀏覽,添加購物車,下單都得到了較大的漲幅,只有收藏于下單相背離,漲幅較為平穩。

建議:對用戶收藏的商品sku進行推薦,在雙十二活動結束后一周,二周密集推動高關聯商品sku,促進收藏商品下單轉化率。

分析框架:what—why–action模式。新手,老油子的區別就在于新手只會描述,老油子可以提出有洞察性的建議。

周維度的用戶行為分析

我們取雙十二所在周,與雙十二之前相距較遠一周2014-11-24~2014-11-30對比分析

對比二三象限,平常周(三象限)周五是各項指標最低的時間點,雙十二(二象限)恰好在周五各項指標“逆風翻盤”。

對比一四象限,瀏覽次數、添加購物車次數、收藏次數同比周一~周日,各項指標都有所增加,雙十二周五瀏覽次數、添加購物次數同比它周周五強勢上漲;可見雙十二活動,提升當周其它時間點的效果還是很顯著的,背后體現的邏輯就是用戶在為雙十二當天活動做前期準備;

從下單用戶上看,雙十二當周同比其它周,除了周五強勢上漲,其它時間都處于下跌的趨勢并且下單次數不如其它周;這從數據上解釋了雙十二的“下單吸血效應“現象是存在的。

對于一四象限本打算合成一張圖像,通過設置主次坐標軸可以實現,但會造成一個視覺誤差:添加購物車次數曲線在瀏覽次數之上。—實際上,換算成百分比指標看趨勢效果會好些。

小時維度的用戶行為分析

截取時間參考:
mysql截取年月日

select hour(time),sum(case when behavior_type=1 then 1 else 0 end ) as '瀏覽次數', sum(case when behavior_type=2 then 1 else 0 end ) as '收藏次數', sum(case when behavior_type=3 then 1 else 0 end) as '購物車次數', sum(case when behavior_type=4 then 1 else 0 end) as '購買次數' from tianchi_mobile_recommend_train_user where DATE_FORMAT(time,'%Y-%m-%d')='2014-12-12' group by hour(time) ORDER BY hour(time)


從圖中可以發現,四個指標趨勢一致;其中,雙十二當天零點,瀏覽、添加購物車、下單達到峰值A,此后持續到2點到B開始急劇下降,2~6點是各指標低谷;從6點開始上漲直到10點達到均衡B,10點到19點維持凌晨兩點級別的均衡B;19點之后開始上漲直到22點達到0點級別的峰值A,此后從22點到24點維持均衡A。

這條數據洞察與我們的生活作息規律是強相關的。

基于RFM模型尋找最有價值用戶

由于數據集中沒有消費金額這列數據,就只能找R(最近一次購買時間間隔),F(購買頻率)來尋找最有價值用戶!

關于R

統計周期為1個月,最近購買時間區間1-30,將其分為五檔,0-6,7-12,13-18,19-24,25-30分別對應0-4分

create view pay_b as select user_id,DATEDIFF(max(DATE_FORMAT(time,'%Y-%m-%d')),min(DATE_FORMAT(time,'%Y-%m-%d'))) as b--每一個用戶極端點購買時間之差 from tianchi_mobile_recommend_train_user where behavior_type=4 group by user_id;select user_id, (case when b BETWEEN 25 and 30 then 0when b BETWEEN 19 and 24 then 1when b BETWEEN 13 and 28 then 2when b BETWEEN 7 and 12 then 3when b BETWEEN 0 and 6 then 4else nullend ) as R from pay_b order by R desc;


關于F

select min(a),max(a) from ( select count(distinct time) as a from tianchi_mobile_recommend_train_user where behavior_type=4 group by user_id ) as A;


create view pay_a as select user_id,count(distinct time) as a from tianchi_mobile_recommend_train_user where behavior_type=4 group by user_id;select user_id, (case when a BETWEEN 1 and 45 then 0when a BETWEEN 46 and 90 then 1when a BETWEEN 91 and 136 then 2when a BETWEEN 137 and 182 then 3when a BETWEEN 183 and 227 then 4else nullend ) as F from pay_a order by F desc;


合并RFM得到:

select t1.user_id,t1.R,t2.F from (select user_id, (case when b BETWEEN 25 and 30 then 0when b BETWEEN 19 and 24 then 1when b BETWEEN 13 and 28 then 2when b BETWEEN 7 and 12 then 3when b BETWEEN 0 and 6 then 4else nullend ) as R from pay_b )t1 inner join ( select user_id, (case when a BETWEEN 1 and 45 then 0when a BETWEEN 46 and 90 then 1when a BETWEEN 91 and 136 then 2when a BETWEEN 137 and 182 then 3when a BETWEEN 183 and 227 then 4else nullend ) as F from pay_a )t2 on t1.user_id=t2.user_id group by t1.user_id order by t1.R desc, t2.F desc


我們盡量選擇R,F分數靠前的用戶作為優質用戶,然后拉活動,做投放,但要注意小成本試錯,先小范圍試點,再全量推廣;

對于R為4,F為0的用戶,用戶消費時間間隔短而付費次數少,運營活動可以重點針對這部分用戶,比如拼團打折,積分兌換,喚起這部分的購買熱情。

總結

以上是生活随笔為你收集整理的数据分析项目某电商app行为数据分析(1)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。