数据分析项目某电商app行为数据分析(1)
安裝mysql數(shù)據(jù)庫(kù)(官網(wǎng)下載即可,免費(fèi))
安裝過程如下:
MySQL數(shù)據(jù)庫(kù)安裝
安裝數(shù)據(jù)庫(kù)客戶端(官網(wǎng)下載試用版或破解版),安裝過程如下
https://blog.csdn.net/wypersist/article/details/79834490
數(shù)據(jù)集下載:
天池競(jìng)賽
將下載到的csv文件導(dǎo)入到mysql數(shù)據(jù)庫(kù),參考以下:
excel導(dǎo)入mysql庫(kù)
拿到數(shù)據(jù),先看一眼數(shù)據(jù)長(zhǎng)啥樣,是否有null值,什么樣的數(shù)據(jù)類型;
user_id:用戶唯一標(biāo)識(shí)
item_id:商品標(biāo)識(shí)
behavior_type:用戶對(duì)商品行為類型,{1,瀏覽;2,收藏;3,加入購(gòu)物車;4,購(gòu)買}
user_geohash:用戶位置空間標(biāo)識(shí),由經(jīng)緯度通過保密算法生成
item_category:商品分類標(biāo)識(shí)
time:行為時(shí)間,精確到小時(shí)
說(shuō)明:用戶位置空間大多為null,難以補(bǔ)充和研究,本例不做地理分析;
商品分類暫時(shí)不做分析;
數(shù)據(jù)范圍:從2014年11月18號(hào)~2014年12月18號(hào)淘寶APP一個(gè)月的行為數(shù)據(jù);
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:統(tǒng)計(jì)周期內(nèi)頁(yè)面瀏覽次數(shù)(不去重)
uv:統(tǒng)計(jì)周期頁(yè)面訪問用戶數(shù)(去重)
pv/uv:1155;平均每1155次瀏覽對(duì)應(yīng)一個(gè)用戶。對(duì)比大盤,歷史基線看這個(gè)數(shù)據(jù)是否可以優(yōu)化提高;
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 后不能接單行函數(shù),而having可以;having要跟在group by后使用,對(duì)分組后數(shù)據(jù)執(zhí)行篩選(一般用單行函數(shù),比如計(jì)數(shù),平均等);
子查詢給表起別名A是必須的,否則報(bào)語(yǔ)法錯(cuò)誤!
count后不能有空格,真的煩唉;
查詢結(jié)果為4,意味著只有4個(gè)用戶在30天內(nèi)只瀏覽了頁(yè)面,占比4/10000=0.04%(頁(yè)面跳失率=只點(diǎn)擊一次瀏覽的用戶數(shù)/總用戶數(shù));說(shuō)明淘寶app的粘性很大。
提問:如果將上述語(yǔ)言改為以下,將會(huì)發(fā)生什么?
select count(user_id) from tianchi_mobile_recommend_train_user group by user_id having count(behavior_type)=1
學(xué)會(huì)一個(gè)套路:
先篩選滿足條件的字段建立一個(gè)子查詢,然后對(duì)子查詢執(zhí)行計(jì)數(shù),平均等操作。
接下來(lái)對(duì)用戶行為進(jìn)行分析評(píng)價(jià)各功能占比:
瀏覽是用戶進(jìn)入淘寶的第一交互,而第二個(gè)交互是收藏,加入購(gòu)物車,還是直接購(gòu)買,從數(shù)據(jù)上看都是可以的,也符合業(yè)務(wù)邏輯(比如小編本人拿到工資的時(shí)候,瀏覽–購(gòu)買;等錢花的差不多的時(shí)候,就是瀏覽–加入購(gòu)物車—(有錢后)購(gòu)買)。
進(jìn)入淘寶app的10000個(gè)用戶中,67.3%的用戶選擇了收藏,86.1%的用戶選擇了加入購(gòu)物車,89%的用戶完成了購(gòu)買。
進(jìn)行路徑分析
不區(qū)分時(shí)間
沒有去除重復(fù)值,統(tǒng)計(jì)的是點(diǎn)擊次數(shù)(一個(gè)人可以點(diǎn)擊多次);瀏覽次數(shù)11550581,收藏次數(shù)343564(收藏/占比=2.9%),購(gòu)物車次數(shù)242556(購(gòu)物車/瀏覽=2.1%),下單次數(shù)120205(下單/瀏覽=1%)。
此為漏斗模型,業(yè)務(wù)中經(jīng)常使用left join統(tǒng)計(jì)漏斗數(shù)據(jù)—基于前端埋點(diǎn)。
漏斗模型畫法參考:
漏斗繪制
對(duì)漏斗的說(shuō)明:統(tǒng)計(jì)周期內(nèi),10000名瀏覽用戶中,有6730名用戶完成了收藏(完成一次就記錄,實(shí)際上可能同一用戶多次點(diǎn)擊收藏),收藏用戶中有6020名用戶添加了購(gòu)物車,添加購(gòu)物車用戶中有5730名用戶完成下單。下單率(完成下單用戶/進(jìn)入app瀏覽用戶)為57.3%。
不同時(shí)間尺度下的用戶行為路徑分析
最開始我是這樣寫的,
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.date12256906行*6列然后3個(gè)left join的數(shù)據(jù)用一臺(tái)16G的筆記本電腦想跑出結(jié)果—不存在的!(跑了20分鐘,沒出結(jié)果的我不想等了)。
代碼的原意是按天做漏斗,比如看2018-12-12這一天有多少用戶瀏覽,瀏覽的用戶中有多少收藏,收藏的用戶中有多少添加購(gòu)物車,添加購(gòu)物車的用戶中有多少愿意下單。
月維度的用戶行為分析
select DATE_FORMAT(time,'%Y-%m-%d'),sum(case when behavior_type=1 then 1 else 0 end ) as '瀏覽次數(shù)', sum(case when behavior_type=2 then 1 else 0 end ) as '收藏次數(shù)', sum(case when behavior_type=3 then 1 else 0 end) as '購(gòu)物車次數(shù)', sum(case when behavior_type=4 then 1 else 0 end) as '購(gòu)買次數(shù)' from tianchi_mobile_recommend_train_user group by DATE_FORMAT(time,'%Y-%m-%d') ORDER BY DATE_FORMAT(time,'%Y-%m-%d')
這個(gè)語(yǔ)句22s出結(jié)果。
實(shí)現(xiàn)的需求:知道某天有多少瀏覽量,多少收藏量,多少添加購(gòu)物車,多少下單。
導(dǎo)出時(shí)注意設(shè)置格式。
從圖中發(fā)現(xiàn):2014-12-12這天,各項(xiàng)指標(biāo)都達(dá)到了高峰。背后原因是淘寶平臺(tái)雙十二做活動(dòng),拉高了各項(xiàng)指標(biāo)。
其中,下單次數(shù)環(huán)比昨日上漲373%,添加購(gòu)物車次數(shù)環(huán)比昨日上漲56.7%,收藏次數(shù)環(huán)比昨日上漲12.2%,瀏覽次數(shù)環(huán)比昨日上漲39.4%。活動(dòng)當(dāng)天,下單漲幅最大,是因?yàn)楹芏嘤脩籼崆翱春昧水a(chǎn)品,等活動(dòng)上線就開買;收藏漲幅最低,是因?yàn)橛脩羰褂檬詹氐男睦眍A(yù)期是下次再看看,這次不再自己購(gòu)買物品清單內(nèi),優(yōu)先級(jí)是最低的;添加購(gòu)物車漲幅度也很大,是因?yàn)橛脩籼砑淤?gòu)物車可以使用批量付款的原因,這樣可以節(jié)省用戶的購(gòu)買時(shí)間。四項(xiàng)指標(biāo)中圍繞付款的瀏覽,添加購(gòu)物車,下單都得到了較大的漲幅,只有收藏于下單相背離,漲幅較為平穩(wěn)。
建議:對(duì)用戶收藏的商品sku進(jìn)行推薦,在雙十二活動(dòng)結(jié)束后一周,二周密集推動(dòng)高關(guān)聯(lián)商品sku,促進(jìn)收藏商品下單轉(zhuǎn)化率。
分析框架:what—why–action模式。新手,老油子的區(qū)別就在于新手只會(huì)描述,老油子可以提出有洞察性的建議。
周維度的用戶行為分析
我們?nèi)‰p十二所在周,與雙十二之前相距較遠(yuǎn)一周2014-11-24~2014-11-30對(duì)比分析
對(duì)比二三象限,平常周(三象限)周五是各項(xiàng)指標(biāo)最低的時(shí)間點(diǎn),雙十二(二象限)恰好在周五各項(xiàng)指標(biāo)“逆風(fēng)翻盤”。
對(duì)比一四象限,瀏覽次數(shù)、添加購(gòu)物車次數(shù)、收藏次數(shù)同比周一~周日,各項(xiàng)指標(biāo)都有所增加,雙十二周五瀏覽次數(shù)、添加購(gòu)物次數(shù)同比它周周五強(qiáng)勢(shì)上漲;可見雙十二活動(dòng),提升當(dāng)周其它時(shí)間點(diǎn)的效果還是很顯著的,背后體現(xiàn)的邏輯就是用戶在為雙十二當(dāng)天活動(dòng)做前期準(zhǔn)備;
從下單用戶上看,雙十二當(dāng)周同比其它周,除了周五強(qiáng)勢(shì)上漲,其它時(shí)間都處于下跌的趨勢(shì)并且下單次數(shù)不如其它周;這從數(shù)據(jù)上解釋了雙十二的“下單吸血效應(yīng)“現(xiàn)象是存在的。
對(duì)于一四象限本打算合成一張圖像,通過設(shè)置主次坐標(biāo)軸可以實(shí)現(xiàn),但會(huì)造成一個(gè)視覺誤差:添加購(gòu)物車次數(shù)曲線在瀏覽次數(shù)之上。—實(shí)際上,換算成百分比指標(biāo)看趨勢(shì)效果會(huì)好些。
小時(shí)維度的用戶行為分析
截取時(shí)間參考:
mysql截取年月日
從圖中可以發(fā)現(xiàn),四個(gè)指標(biāo)趨勢(shì)一致;其中,雙十二當(dāng)天零點(diǎn),瀏覽、添加購(gòu)物車、下單達(dá)到峰值A(chǔ),此后持續(xù)到2點(diǎn)到B開始急劇下降,2~6點(diǎn)是各指標(biāo)低谷;從6點(diǎn)開始上漲直到10點(diǎn)達(dá)到均衡B,10點(diǎn)到19點(diǎn)維持凌晨?jī)牲c(diǎn)級(jí)別的均衡B;19點(diǎn)之后開始上漲直到22點(diǎn)達(dá)到0點(diǎn)級(jí)別的峰值A(chǔ),此后從22點(diǎn)到24點(diǎn)維持均衡A。
這條數(shù)據(jù)洞察與我們的生活作息規(guī)律是強(qiáng)相關(guān)的。
基于RFM模型尋找最有價(jià)值用戶
由于數(shù)據(jù)集中沒有消費(fèi)金額這列數(shù)據(jù),就只能找R(最近一次購(gòu)買時(shí)間間隔),F(購(gòu)買頻率)來(lái)尋找最有價(jià)值用戶!
關(guān)于R
統(tǒng)計(jì)周期為1個(gè)月,最近購(gòu)買時(shí)間區(qū)間1-30,將其分為五檔,0-6,7-12,13-18,19-24,25-30分別對(duì)應(yīng)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--每一個(gè)用戶極端點(diǎn)購(gòu)買時(shí)間之差 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;
關(guān)于F
合并RFM得到:
我們盡量選擇R,F分?jǐn)?shù)靠前的用戶作為優(yōu)質(zhì)用戶,然后拉活動(dòng),做投放,但要注意小成本試錯(cuò),先小范圍試點(diǎn),再全量推廣;
對(duì)于R為4,F為0的用戶,用戶消費(fèi)時(shí)間間隔短而付費(fèi)次數(shù)少,運(yùn)營(yíng)活動(dòng)可以重點(diǎn)針對(duì)這部分用戶,比如拼團(tuán)打折,積分兌換,喚起這部分的購(gòu)買熱情。
總結(jié)
以上是生活随笔為你收集整理的数据分析项目某电商app行为数据分析(1)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pycharm使用import nump
- 下一篇: python 扫盲系列(1)