目錄
前言
一、數(shù)據(jù)集的來源和各個(gè)字段的意義
二、數(shù)據(jù)分析
1.引入庫
2.讀入數(shù)據(jù)
3.查看數(shù)據(jù)數(shù)量級(jí)
4.PV(Page View)/UV訪問量
5.漏斗模型
6.用戶購買商品的頻次分析。
7.ARPPU(average revenue per paying user)
?計(jì)算 ARPPU
?ARPPU出圖
8.復(fù)購情況分析
計(jì)算用戶購買頻次
復(fù)購周期分析
總結(jié)
前言
本人代碼萌新一枚,目前還在學(xué)習(xí)python中,這篇文章是我本人對(duì)天池大數(shù)據(jù)競(jìng)賽上的學(xué)習(xí)賽上官方對(duì)數(shù)據(jù)分析后的自己的一些見解,參考的位置我會(huì)放在文章的最后。第一次在CSDN寫文章,有錯(cuò)誤還希望大家可以指正,我都會(huì)積極改正。
例如:隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。
一、數(shù)據(jù)集的來源和各個(gè)字段的意義
《淘寶用戶購物行為數(shù)據(jù)》提供了1萬用戶量級(jí)的完整行為數(shù)據(jù),數(shù)據(jù)包含了抽樣出來的1W用戶在一個(gè)月時(shí)間(11.18~12.18)之內(nèi)的移動(dòng)端行為數(shù)據(jù):user_action.csv(這是數(shù)據(jù)集原地址),為了簡化問題相比原數(shù)據(jù)集,我們?nèi)サ袅藆ser_geohash這個(gè)大部分情況為空的字段。
字段 | 字段說明 | 提取說明 |
---|---|---|
user_id | 用戶標(biāo)識(shí) | 抽樣和字段脫敏 |
item_id | 商品標(biāo)識(shí) | 字段脫敏 |
behavior_type | 用戶對(duì)商品的行為類型 | 包括瀏覽、收藏、加購物車、購買,對(duì)應(yīng)取值分別是1、2、3、4 |
item_category | 商品分類標(biāo)識(shí) | 字段脫敏 |
time | 行為時(shí)間 | 精確到小時(shí)級(jí)別 |
利用該數(shù)據(jù)集可以分析淘寶用戶的購物行為和瀏覽行為,可以讓商家更清楚的知道如何最大化將自己的產(chǎn)品變現(xiàn),如何發(fā)放消費(fèi)卷和優(yōu)惠卷來吸引消費(fèi)者購買商品。
二、數(shù)據(jù)分析
1.引入庫
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
2.讀入數(shù)據(jù)
data_user = pd.read_csv('./tianchi_mobile_recommend_train_user.csv')
# 讀取用戶數(shù)據(jù)集,路徑需要自行調(diào)整。
data_uesr.head(20) # 包含前言所有的字段
3.查看數(shù)據(jù)數(shù)量級(jí)
# 查看數(shù)據(jù)集量級(jí)
print('整體數(shù)據(jù)的大小為',len(data_user))
print('數(shù)據(jù)集中用戶數(shù)量是:',len(set(data_user['user_id'])))
print('數(shù)據(jù)集中商品數(shù)量是:',len(set(data_user['item_id'])))
print('數(shù)據(jù)集中商品類別數(shù)量是:',len(set(data_user['item_category'])))
整體數(shù)據(jù)的大小為 12256906
數(shù)據(jù)集中用戶數(shù)量是: 10000
數(shù)據(jù)集中商品數(shù)量是: 2876947
數(shù)據(jù)集中商品類別數(shù)量是: 8916
# 分割天(date)和小時(shí)(hour)
data_user['data'] = data_user['time'].map(lambda x:x.split(' ')[0])
data_user['hour'] = data_user['time'].map(lambda x:x.split(' ')[1])
data_user.head(20)
data_user.dtypes # 查看各個(gè)字段數(shù)據(jù)類型
user_id 用戶標(biāo)識(shí) item_id 商品標(biāo)識(shí) behavior_type 用戶對(duì)商品的行為類型 item_category 商品分類標(biāo)識(shí) time 行為時(shí)間 data 精確到一年中的那一天的時(shí)間 hour 小時(shí)
# 對(duì)數(shù)據(jù)進(jìn)行類型調(diào)整成合適的類型,如:data字段是時(shí)間,則需要變成datetime類型
data_user['user_id'] = data_user['user_id'].astype('object') # 改變字段數(shù)據(jù)類型
data_user['item_id'] = data_user['item_id'].astype('object')
data_user['item_category'] = data_user['item_category'].astype('object')
data_user['time'] = data_user['time'].astype('object')
data_user['data'] = pd.to_datetime(data_user['data'])
data_user['hour'] = data_user['hour'].astype('int64')
data_user.dtypes
4.PV(Page View)/UV訪問量
計(jì)算PV: PageView , UV: UniqueView
PV: 按“日期”從data_user組中選擇并計(jì)算’user_id‘(用戶)的數(shù)量
UV: 按“日期”從data_user組中選擇并計(jì)算不同的’user_id‘(用戶);
# 計(jì)算PV: PageView , UV: UniqueView
# PV: 按“日期”從data_user組中選擇并計(jì)算’user_id‘(用戶)的數(shù)量
# UV: 按“日期”從data_user組中選擇并計(jì)算不同的’user_id‘(用戶);
# PV(Page View)訪問量
# 探究每一天中,用戶對(duì)所有商品的總訪問量
pv_daily = data_user.groupby('data')['user_id'].count()
pv_daily = pv_daily.reset_index() # 添加下標(biāo)
pv_daily = pv_daily.rename(columns={'user_id':'pv_daily'})
# 將名字user_id 改為 PV_daily
# PV_daily.head()
pv_daily
?PV訪問量就是不管用戶數(shù)量(假如一個(gè)用戶訪問了10000次,pv值就會(huì)增加10000)
?UV訪問量就是只會(huì)計(jì)算用戶數(shù)量(假如一個(gè)用戶訪問了10000次,uv值只會(huì)+1)
# 探究每一天中,用戶對(duì)所有商品的訪問量,但是這個(gè)訪問量,一個(gè)用戶訪問多次淘寶也只會(huì)記錄一次訪問
# 可以理解為這一天有這么多用戶訪問了淘寶
uv_daily = data_user.groupby('data')['user_id'].apply(lambda x:len(x.unique()))
# apply函數(shù) apply(func [, args [, kwargs ]]) 函數(shù)用于當(dāng)函數(shù)參數(shù)已經(jīng)存在于一個(gè)元組或字典中時(shí),間接地調(diào)用函數(shù)。args是一個(gè)包含將要提供給函數(shù)的按位置傳遞的參數(shù)的元組。如果省略了args,任何參數(shù)都不會(huì)被傳遞,kwargs是一個(gè)包含關(guān)鍵字參數(shù)的字典
# unique函數(shù) 去重函數(shù),類似于set的用法,如果出現(xiàn)一樣的字段,就不會(huì)占用空間
uv_daily = uv_daily.reset_index()
uv_daily = uv_daily.rename(columns={'user_id':'uv_daily'})
uv_daily
# 可視化
none,axes = plt.subplots(2,1,sharex=True) #sharex 共享X軸 兩張圖的X軸是相同的
# 后續(xù)畫圖操作不能使用fig,只能使用axes(接受的第二個(gè)參數(shù)) fig函數(shù)的下標(biāo)是不可使用的
# pv_daily: pandas 對(duì)象
# Matplotlib, Pandas , histplot: 柱狀圖
pv_daily.plot(x='data', y='pv_daily', ax=axes[0], colormap='cividis')
# ax 劃分子圖 axes[表示子圖的位置]
# colormap 色度圖 可以生成偽彩色圖像 可以應(yīng)用到灰度圖像 畫圖時(shí)可以不添加這個(gè)關(guān)鍵詞
uv_daily.plot(x='data', y='uv_daily', ax=axes[1], colormap='RdGy')
axes[0].set_title('pv_daily')
axes[1].set_title('uv_daily')
# 從圖中可以看出UV值和PV值都在12日達(dá)到了峰值,其原因可能是因?yàn)?2.12雙十二大促銷的原因,導(dǎo)致消費(fèi)集中的情況。
?
# 看一下基于每一個(gè)小時(shí)對(duì)應(yīng)的訪問量和去重訪問量(用戶數(shù))
pv_hour = data_user.groupby('hour')['user_id'].count()
pv_hour = pv_hour.reset_index()
pv_hour = pv_hour.rename(columns={'user_id':'pv_hour'})
pv_hour
?
# 看一下基于每個(gè)小時(shí)對(duì)應(yīng)有多少用戶訪問了淘寶
uv_hour = data_user.groupby('hour')['user_id'].apply(lambda x:len(x.unique()))
uv_hour = uv_hour.reset_index()
uv_hour = uv_hour.rename(columns={'user_id':'uv_hour'})
uv_hour
none,pic2 = plt.subplots(2,1,sharex=True) # sharex = True 讓畫布上的兩個(gè)圖共用一個(gè)X軸 第一個(gè)寫none的原因是因?yàn)槲覜]有發(fā)現(xiàn)第一個(gè)參數(shù)有什么實(shí)際上的作用,所以就用none
pv_hour.plot(x='hour',y='pv_hour',ax=pic2[0])
uv_hour.plot(x='hour',y='uv_hour',ax=pic2[1])
pic2[0].set_title('pv_hour')
pic2[0].set_title('uv_hour')
sharex = True 讓畫布上的兩個(gè)圖共用一個(gè)X軸 第一個(gè)寫none的原因是因?yàn)槲覜]有發(fā)現(xiàn)第一個(gè)參數(shù)有什么實(shí)際上的作用,所以就用none
圖中看出,PV值(小時(shí)總訪問量)在20點(diǎn)的時(shí)候達(dá)到峰值。出現(xiàn)這一現(xiàn)象的原因大概是大部分人都是打工人,大部分人在20點(diǎn)左右會(huì)下班瀏覽淘寶。而UV值(小時(shí)用戶量)在10點(diǎn)的時(shí)候達(dá)到峰值,稍后數(shù)據(jù)趨于平穩(wěn),可能的原因是前面的時(shí)間點(diǎn)大家都在睡覺和休息,起床后會(huì)打開手機(jī)稍加瀏覽淘寶,關(guān)心一下商品有沒有打折信息。在0點(diǎn)往后到5點(diǎn)這個(gè)時(shí)間段,UV和PV的值都普遍呈下降趨勢(shì),是一天之中最小的流量時(shí)間段。
# 因?yàn)殡p十二12.12的節(jié)日促銷UV和PV值雙雙達(dá)到峰值,那可以看一看在雙十二當(dāng)天的小時(shí)段變化
data_user_1212 = data_user[data_user['data']=='2014-12-12']
data_user_1212.dtypes
# 計(jì)算每小時(shí)的PV
pv_hour_1212 = data_user_1212.groupby('hour')['user_id'].count()
pv_hour_1212 = pv_hour_1212.reset_index()
pv_hour_1212 = pv_hour_1212.rename(columns={'user_id':'pv_hour_1212'})
pv_hour_1212
?
?
# 計(jì)算每小時(shí)的UV
uv_hour_1212= data_user_1212.groupby('hour')['user_id'].apply(lambda x:len(x.unique()))
uv_hour_1212 = uv_hour_1212.reset_index()
uv_hour_1212 = uv_hour_1212.rename(columns={'user_id':'uv_hour_1212'})
uv_hour_1212
none,pv_1212 = plt.subplots(2,1,sharex=True)
pv_hour_1212.plot(x='hour',y='pv_hour_1212',ax=pv_1212[0],c='gray')
pv_hour.plot(x='hour',y='pv_hour',ax=pv_1212[1],c='green')
pv_1212[0].set_title('pv_hour_1212')
pv_1212[1].set_title('pv_hour')
?
# 雙十二PV值和平常的PV相比大體上都差不太多,就是雙十二期間的拐點(diǎn)較多,沒有平常的數(shù)據(jù)平滑。其原因可能是雙十二當(dāng)天有商家會(huì)有優(yōu)惠卷贈(zèng)送活動(dòng),導(dǎo)致用戶的訪問量激增,但是總體上訪問量集中在晚上的20點(diǎn)前后。
none,uv_1212 = plt.subplots(2,1,sharex=True)
uv_hour.plot(x='hour',y='uv_hour',ax=uv_1212[0],c='yellow')
uv_hour_1212.plot(x='hour',y='uv_hour_1212',ax=uv_1212[1],c='blue')
uv_1212[0].set_title('uv_hour')
uv_1212[1].set_title('uv_hour_1212')
# 從這個(gè)對(duì)比圖可以看出 進(jìn)一個(gè)月的PV值(用戶總訪問量)和雙十二趨勢(shì)大體相同,只不過雙十二當(dāng)天的曲線不夠平滑,有很多用戶激增和驟降的拐點(diǎn)。但是最為明顯的還是20點(diǎn),用戶PV值突然上升,可能的原因的是20點(diǎn)這個(gè)時(shí)間段是許多商家開始雙十二秒殺安排的時(shí)間點(diǎn)
# 根據(jù)behavior_type?? ?用戶對(duì)商品的行為類型 和hour 小時(shí) ?進(jìn)行分組。查看在每個(gè)小時(shí)段之內(nèi),進(jìn)行點(diǎn)擊、收藏、加購物車、支付四種行為的次數(shù)
# behavior_type中 點(diǎn)擊、收藏、加購物車、支付四種行為,分別用數(shù)字1、2、3、4表示
pv_behavior = data_user.groupby(['behavior_type','hour'])['user_id'].count()
pv_behavior = pv_behavior.reset_index()
pv_behavior = pv_behavior.rename(columns={'user_id':'pv_behavior'})
pv_behavior
?# 根據(jù)上面得出來點(diǎn)擊、收藏、加購物車、支付四種行為關(guān)于每個(gè)小時(shí)的數(shù)據(jù),畫出可視圖
import seaborn as sns
sns.lineplot(x='hour',y='pv_behavior',hue='behavior_type',data=pv_behavior)
# 但是出圖后發(fā)現(xiàn)用戶對(duì)點(diǎn)擊的數(shù)量已經(jīng)超過后三者,導(dǎo)致其他三項(xiàng)數(shù)據(jù)沒有很直觀的表現(xiàn)出來,所以把點(diǎn)擊量去除,看剩下三項(xiàng)指標(biāo)的變化
sns.lineplot(x='hour',y='pv_behavior',hue='behavior_type',data=pv_behavior[pv_behavior.behavior_type!=1])
#出圖后可以看出四條曲線的總體變化基本一致,平常都是在20點(diǎn)前后出現(xiàn)最高峰,在3點(diǎn)左右各個(gè)數(shù)據(jù)到達(dá)最低值,由此可以看出,晚上20點(diǎn)這個(gè)時(shí)間段用戶的無論是收藏,加購物車,支付的數(shù)量都明顯增加,可能是因?yàn)?0點(diǎn)商家也會(huì)發(fā)優(yōu)惠劵來吸引用戶購買商品
?
雙十二當(dāng)天用戶肯定較多,所有對(duì)雙十二當(dāng)天的用戶對(duì)淘寶的各個(gè)行為數(shù)量的PV值進(jìn)行統(tǒng)計(jì)。
pv_behavior_1212 = data_user_1212.groupby(['behavior_type','hour'])['user_id'].count()
pv_behavior_1212 = pv_behavior_1212.reset_index()
pv_behavior_1212 = pv_behavior_1212.rename(columns={'user_id':'pv_behavior_1212'})
pv_behavior_1212
?
sns.lineplot(x='hour',y='pv_behavior_1212',hue='behavior_type',data=pv_behavior_1212)
sns.lineplot(x='hour',y='pv_behavior_1212',hue='behavior_type',data=pv_behavior_1212[pv_behavior_1212.behavior_type!=1])
? ? # 除去點(diǎn)擊量的可視圖可以很明顯的感受到和平常的淘寶的購物視圖有些許不同。
? ? # 1.大約在17點(diǎn)之前,三條曲線的分布是 收藏 < 支付 < 加購物車。而除開雙十二的平常數(shù)據(jù)中卻發(fā)現(xiàn)三條曲線是 支付 < 收藏 < 加購物車。雙十二當(dāng)天居然用戶的支付數(shù)量超過了收藏?cái)?shù),這一數(shù)據(jù)的突變的原因可能是雙十二有力度非常大的打折促銷活動(dòng)和秒殺活動(dòng),其很多商品價(jià)格要比平常便宜很多,并且很多雙十二的商品都是限時(shí)搶購,許多用戶顧不上收藏,只會(huì)先加入到購物車,來方便在限時(shí)的時(shí)間里買下更多的打折商品。但是支付的數(shù)量卻沒有高于20點(diǎn)之后的數(shù)量,可能是因?yàn)樵S多打工人還沒有到下班的時(shí)間,其次,商家也是在為晚上的雙十二的大活動(dòng)做提前預(yù)熱。
? ? # 2.在17點(diǎn)到20點(diǎn)期間 支付 < 收藏。其原因可能是在進(jìn)行一波雙十二活動(dòng)預(yù)熱之后,許多用戶開始進(jìn)入淘寶瀏覽自己喜歡的商品,因?yàn)檫€未到商家的整點(diǎn)促銷,所以大部分用戶是先看好喜愛的商品,并且先加入到購物車和收藏,等到了晚上整點(diǎn)促銷活動(dòng)開始之后再進(jìn)行消費(fèi)。
? ? # 3.到了20點(diǎn)之后,數(shù)據(jù)再一次呈現(xiàn) 支付 < 收藏的情況。此時(shí)可能淘寶里的各個(gè)商家已經(jīng)開始大促銷的活動(dòng)了,這時(shí)的用戶大多都集中在將自己的喜歡的商品進(jìn)行搶購,從而導(dǎo)致支付量大幅上升的情況。
5.漏斗模型
# 對(duì)轉(zhuǎn)換率進(jìn)行分析“瀏覽-收藏/加購-購買”鏈路的轉(zhuǎn)化漏斗模型,可以幫助我們更好的了解各個(gè)環(huán)節(jié)的轉(zhuǎn)化鏈路
behavior_type = data_user.groupby(['behavior_type'])['user_id'].count()
behavior_type
clike_num,collect_num,add_num,pay_num = behavior_type[1],behavior_type[2],behavior_type[3],behavior_type[4]
# 因?yàn)榧淤徍褪詹貨]有必然聯(lián)系,因此我們把這兩類合并在一起做分析
col_add_num = collect_num + add_num
print('瀏覽轉(zhuǎn)化為加購/收藏的轉(zhuǎn)化率:',col_add_num/clike_num*100)
print('瀏覽轉(zhuǎn)化為購買的轉(zhuǎn)化率:',pay_num/clike_num*100)
print('加購/收藏轉(zhuǎn)化為購買的轉(zhuǎn)化率:',pay_num/col_add_num*100)
# 瀏覽轉(zhuǎn)化率相對(duì)于加購或收藏后夠買該商品的轉(zhuǎn)化率要低的很多,所以顧客更多還是對(duì)自己喜歡的商品進(jìn)行購買,而不是心血來潮。
?
# 在查看雙十二當(dāng)天,各個(gè)數(shù)值之間的轉(zhuǎn)化率有什么變化?
behavior_type_1212 = data_user_1212.groupby(['behavior_type'])['user_id'].count()
behavior_type_1212
?
clike_1212_num,collect_1212_num,add_1212_num,pay_1212_num = behavior_type_1212[1],behavior_type_1212[2],behavior_type_1212[3],behavior_type_1212[4]
col_add_1212_num = collect_1212_num + add_1212_num
print('瀏覽轉(zhuǎn)化為加購/收藏的轉(zhuǎn)化率:',col_add_1212_num/clike_1212_num*100)
print('瀏覽轉(zhuǎn)化為購買的轉(zhuǎn)化率:',pay_1212_num/clike_1212_num*100)
print('加購/收藏轉(zhuǎn)化為購買的轉(zhuǎn)化率:',pay_1212_num/col_add_1212_num*100)
# 雙十二期間 加購/收藏轉(zhuǎn)化為購買的轉(zhuǎn)化率是平常的兩倍,可以看出大促銷對(duì)用戶的購買力起到了關(guān)鍵性的促進(jìn)作用。
# 因此,做為商家來說,利用特定的節(jié)日做促銷活動(dòng)是一種非常好的營銷手段。
6.用戶購買商品的頻次分析。
雖然說,用戶的點(diǎn)擊量和瀏覽量遠(yuǎn)遠(yuǎn)超過收藏,加購和支付,但是商家更看重的是用戶是否在店鋪消費(fèi),因此,令人關(guān)心的問題是:用戶的購買頻次大概分布在什么階段。
data_user_buy = data_user[data_user.behavior_type == 4].groupby('user_id')['behavior_type'].count()
data_user_buy
data_user_buy.plot(x='user_id',y='behavior_type')
圖中可以看出大部分用戶的購買數(shù)量都在50以下。除開雙十二高峰購物的時(shí)段,還是有用戶購買次數(shù)超過200次,更有甚者購買次數(shù)達(dá)到了800次,購買次數(shù)200次以上的都可以被商家稱作重點(diǎn)客戶。
7.ARPPU(average revenue per paying user)
? ? ARPU(Average Revenue Per User) 表示每日的收益在所有活躍用戶中的轉(zhuǎn)化。詳細(xì)的描述為,每日的所有收益與每日的活躍的用戶數(shù)量有關(guān),因此可以通過ARPU來計(jì)算,每日活躍用戶對(duì)每日收益的轉(zhuǎn)化效率。
? ? 該數(shù)據(jù)集中沒有對(duì)金額的體現(xiàn)。那我們可以對(duì)ARPU這個(gè)指標(biāo)做一些修改,改為度量平臺(tái)活躍用戶每日平均消費(fèi)次數(shù)。
? ? 計(jì)算公式為: ARPU = 每日消費(fèi)總次數(shù) / 每日活躍用戶數(shù)
? ? 給數(shù)據(jù)集中每一個(gè)用戶賦值一個(gè)1,表示有登錄操作
data_user['action'] = 1
# 得到 date, user_id, behavior_type和計(jì)算用戶每日的登錄次數(shù)
data_user_arpu = data_user.groupby(['data','user_id','behavior_type'])['action'].count()
data_user_arpu = data_user_arpu.reset_index()
data_user_arpu.head(20)
?ARPU = 每日消費(fèi)總次數(shù) / 每日活躍用戶數(shù)
ARPU = data_user_arpu.groupby('data').apply(lambda x:x[x['behavior_type']==4]['action'].sum()/len(x['user_id'].unique()))
ARPU
ARPU.plot()
plt.title('ARTU')
?
? ? ARPU 出圖后可以看到,活躍用戶每天平均消費(fèi)次數(shù)在0.5次左右,雙十二期間達(dá)到最高值接近2,是平時(shí)的4倍左右,表明用戶在雙十二的時(shí)候會(huì)集中購買自己的商品。(ARPU的公式:ARPU = 每日消費(fèi)總次數(shù) / 每日活躍用戶數(shù))
? ? ARPPU(average revenue per paying user)是指從每位付費(fèi)用戶中獲得的收益,它反映的是整個(gè)平臺(tái)的用戶消費(fèi)的均值。
? ? 它的計(jì)算方式為:ARPPU = 總收入/活躍用戶付費(fèi)數(shù)量。但是在該數(shù)據(jù)集中沒有收益金額,因此我們可以對(duì)計(jì)算方式做一點(diǎn)轉(zhuǎn)化,將總收入轉(zhuǎn)化為總的購買行為次數(shù)。
? ? 定義如下:ARPPU = 當(dāng)日總消費(fèi)次數(shù)/當(dāng)日活躍用戶付費(fèi)數(shù)量 , 可以看出和ARPU唯一的區(qū)別是分母,ARPU的分母是活躍用戶數(shù)(包含4種行為類型),ARPPU的墳?zāi)故腔钴S付費(fèi)用戶數(shù),因此ARPPU的計(jì)算會(huì)更簡單:
? ? 對(duì)比一下ARPU和ARPPU的關(guān)系
? ? ARPU = 每日消費(fèi)總次數(shù) / 每日活躍用戶數(shù)
? ? ARPPU = 當(dāng)日總消費(fèi)次數(shù)/當(dāng)日活躍用戶付費(fèi)數(shù)量
data_user_arppu = data_user[data_user.behavior_type==4].groupby(['data','user_id'])['behavior_type'].count()
data_user_arppu = data_user_arppu.reset_index().rename(columns={'behavior_type':'buy_count'})
data_user_arppu.head(100)
?計(jì)算 ARPPU
data_user_arppu = data_user_arppu.groupby('data').apply(lambda x:x['buy_count'].sum() / x['user_id'].count())
data_user_arppu
?ARPPU出圖
data_user_arppu.plot()
plt.title('ARPPU')
? ? ARPPU 圖中可以看出在整個(gè)12月份整體的值都維持在2-3之間,只是在雙十二期間ARPPU的值直線飆升,一度達(dá)到4.0,是平常的兩倍。讓我再回顧一下ARPPU的公式:ARPPU = 當(dāng)日總消費(fèi)次數(shù)/當(dāng)日活躍用戶付費(fèi)數(shù)量。說明ARPPU說的值越大,它的分子就越大,而分子是當(dāng)日消費(fèi)的次數(shù),說明,雙十二這天用戶的消費(fèi)次數(shù)是大大超過平常,其原因可能是大家都會(huì)把商品先放到購物車或者收藏,到了雙十二當(dāng)天再進(jìn)行大量的消費(fèi)。
? ? 其次,我對(duì)上述中活躍用戶的定義是:只要在這個(gè)月有在淘寶消費(fèi)并且購買過商品的用戶都算活躍用戶,如果這個(gè)月用戶僅僅是干了除了支付以外的事情,那就不計(jì)入在內(nèi)(畢竟人嘛,都是想到金子流入自己的口袋。。)
8.復(fù)購情況分析
? ? ? 一般來說,復(fù)購是指對(duì)產(chǎn)品的重復(fù)購買行為。但是這個(gè)定義在商業(yè)上是不精確的,假若一個(gè)用戶在一天內(nèi)多次在淘寶購買商品,不能說明這件用戶對(duì)淘寶的依賴(有可能是某位用戶只是第一次用,但是買的量大)。因此商業(yè)分析過程中,對(duì)于復(fù)購行為進(jìn)行明確的定義。這里的復(fù)購是指:兩天以上都在該平臺(tái)產(chǎn)生了購買行為,需要指出一天多次的購買不算是復(fù)購。
? ? ? 因此復(fù)購率的計(jì)算方式為:復(fù)購率 = 復(fù)購用戶數(shù)量 / 有購買行為的用戶數(shù)量?;谶@個(gè)公式,我們先計(jì)算用戶在數(shù)據(jù)集中的購買頻次:
? ? ? 我對(duì)這句話的理解就是:復(fù)購就是我在這家店(注意是這家店)買過這個(gè)商品,我覺得不錯(cuò),我還想再次進(jìn)行購買,這就是我理解的復(fù)購行為。但是這其中有一個(gè)特例,就是我不知道抽了什么風(fēng),或者說我非常喜歡這個(gè)商品,我一下子買了200個(gè),雖然說買的數(shù)量相對(duì)于普通人來說非常大,但是我沒有進(jìn)行二次購買的行為,這就不算復(fù)購。所以,商業(yè)上對(duì)“復(fù)購”這個(gè)次重新做了定義,兩天以上都是在這家店購買了商品,并且不是一天購買多次,這就是復(fù)購(可能有點(diǎn)暈,我也好不到哪里去。。)
計(jì)算用戶購買頻次
data_user_pay = data_user[data_user.behavior_type == 4]
data_user_pay = data_user_pay.groupby('user_id')['data'].apply(lambda x:len(x.unique()))
data_user_pay
# 復(fù)購率 = 復(fù)購用戶數(shù)量 / 有購買行為的用戶數(shù)量
replace_pay = data_user_pay[data_user_pay > 1].count() / data_user_pay.count()
replace_pay
復(fù)購周期分析
? ? ? ?想要知道用戶多久復(fù)購一次。這個(gè)數(shù)據(jù)有助于淘寶產(chǎn)品宣傳在這個(gè)時(shí)間間隔內(nèi)采取策略(例如復(fù)購期間發(fā)放優(yōu)惠卷。),增加用戶的復(fù)購意向,最終轉(zhuǎn)化為實(shí)際收益。
data_user['action'] = 1 # 對(duì)每一行的行為記為1次,通過對(duì)行為次數(shù)的相加,從而計(jì)算頻次
data_user_buy = data_user[data_user.behavior_type == 4]
data_user_buy = data_user_buy.groupby(['user_id','data'])['action'].count()
data_user_buy = data_user_buy.reset_index()
data_user_buy.head(30)
?
data_user_pay.value_counts().plot(kind='line')
plt.xlabel('replace_day')
plt.ylabel('count')
文章來源:http://www.zghlxwxcb.cn/news/detail-484007.html
總結(jié)
? ? ? ? ? ?以上就是淘寶用戶分析的內(nèi)容,本文多次使用到了numpy,pandas,matplotlib.pyplot這些數(shù)據(jù)庫,因?yàn)殡p十二是電商的購物節(jié)(比較特殊),所以將雙十二期間的用戶對(duì)淘寶的使用情況逐一作出了分析,然后相對(duì)比平常的用戶購買情況,從商家的利益出發(fā),是否應(yīng)該多進(jìn)行促銷策略。文章來源地址http://www.zghlxwxcb.cn/news/detail-484007.html
到了這里,關(guān)于【TIANCHI】天池大數(shù)據(jù)競(jìng)賽(學(xué)習(xí)賽)--- 淘寶用戶購物行為數(shù)據(jù)可視化分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!