淘寶用戶行為分析實戰


 
一、數據來源及說明
來源:天池數據—淘寶用戶的行為數據  https://tianchi.aliyun.com/dataset/dataDetail?dataId=46
該數據下載后包含12256906條數據,6個字段。
數據列字段介紹:
column description
user_id 用戶身份,脫敏
item_id 商品id,脫敏
behavior_type 用戶行為類型
(包括點擊,收藏,加購物車和付款四種行為,相應的值分別為1,2,3和4。)
user_geohash 地理位置
item_category 品類ID(商品所屬的品類)
time 用戶行為發生的時間

二、提出問題(目標)
1、基礎數據統計
總PV、總UV、有購買行為的用戶數量、復購率、跳失率
 
2、用戶行為轉化漏斗
點擊--收藏--加購物車--支付各環節轉化率如何?
 
3、購買次數占前80%的品類有多少?
 
4、從時間維度了解用戶的行為習慣
每天的PV、UV
 
三、數據探索及預處理
1、數據抽取
首先,由於數據較為龐大,進行抽樣處理--隨機抽樣
抽取100萬條數據
import pandas as pd
data=pd.read_csv(r'K:\siren\data_taobao\tianchi_mobile_recommend_train_user.csv')
data.head()
data.info()  

#隨機、可放回抽樣
data=data.sample(n=10000,replace=True,axis=0) 
data.to_csv(r"K:\siren\data_taobao\user.csv")
2、數據清洗
 
數據一致化處理
time字段的時間包含年-月-日和小時,為方便分析,將該字段分為2個字段:一個日期列,一個小時列
用Excel實現 將該字段的小時列刪除,將數據名字保存為user_
格式處理
#將數據處理為時間格式
data=pd.read_csv(r'K:\siren\data_taobao\user_.csv')  
data['time']=pd.to_datetime(data['time'])
缺失值處理
user_geohash地理位置列,多數為NULL,且信息被加密處理,后面便不做地理位置的研究。
 
數據處理,將行為提取
#將behavior_type的四種行為類型分別用1,2,3,4代表,為方便查看現將數字轉為pv,collect,cart,buy
data.ix[data['behavior_type']==1,'behavior_type']='pv'
data.ix[data['behavior_type']==2,'behavior_type']='collect'
data.ix[data['behavior_type']==3,'behavior_type']='cart'
data.ix[data['behavior_type']==4,'behavior_type']='buy'
data.groupby(['behavior_type']).count()
四、 整體用戶購物情況
1、基礎數據統計
1) pv(總訪問量)為:942396     PV即Page View, 即頁面瀏覽量或 點擊量,用戶每次刷新即被計算一次。
代碼實現如下:
data.groupby(['behavior_type']).count()
 
2) UV(用戶總數):9869    UV(獨立訪客):即Unique Visitor,訪問您網站的一台電腦客戶端為一個訪客。00:00-24:00內相同的客戶端只被計算一次。
data.drop_duplicates('user_id').count()

3)有購買行為的用戶數:3595

data2=data[data['behavior_type']=='buy']
data2.drop_duplicates('user_id').count()

4)復購率:65.7%    復購率=購買2次或以上的用戶/購買用戶總數   

data3=data[data['behavior_type']=='buy']
df=data3.groupby('user_id').count()
df[df['behavior_type']>=2].count()
2362/3595

2、從時間維度來了解用戶行為習慣
1)每周的用戶行為數量變化趨勢

可以看到,周一到周二的用戶行為逐漸增加,周二-周四達到一個穩定值,周四到-周六用戶行為明顯減少,周六為一周最低,周六后開始逐漸增加。

data['time1']=[i.weekday() for i in data['time']]
df1=data.groupby('time1').count()
df1.index=[1,2,3,4,5,6,7]

import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import matplotlib.dates as mdate
fig=plt.figure(figsize=(20,6))
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif']=['SimHei']  #顯示中文標簽
plt.xticks(df1.index)
ax=fig.add_subplot(111)
ax.plot(df1.index,df1['user_id'])

 2)日pv量

結論:在12月份開始,用戶行為逐漸有增多趨勢,尤其在12月9日開始,用戶行為明顯高於其他時期,這幾天用戶行為增多是因為淘寶的“雙十二”活動。
 
代碼實現:
data1=data[data['behavior_type']=='pv']
day_pv=data1.groupby(['time']).count()
day_pv

#可視化
import matplotlib.pyplot as plt
%matplotlib inline
import numpy as np
import matplotlib.dates as mdate

data1=data[data['behavior_type']=='pv']
day_pv=data1.groupby(['time']).count()
day_pv

fig=plt.figure(figsize=(20,6))
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif']=['SimHei']  #顯示中文標簽
plt.title(u'每天PV圖')
ax=fig.add_subplot(111)
ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))
plt.xticks(pd.date_range(day_pv.index[0],day_pv.index[-1],freq='D'),rotation=45)
  #用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus']=False
ax.plot(day_pv.index,day_pv['user_id'])

3)每天的UV

結論:用戶總數變化趨勢與PV量變化趨勢類似,周末的數量逐漸增加,到工作日又逐漸降低。在雙十二期間,用戶總數明顯上升,活動過后,人數明顯下降至平穩狀態。
代碼實現:
day_uv=data.groupby('time')['user_id'].nunique()
day_uv

fig=plt.figure(figsize=(20,6))
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif']=['SimHei']
plt.title(u'每天UV量')
ax=fig.add_subplot(111)
ax.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d'))
plt.xticks(pd.date_range(day_uv.index[0],day_uv.index[-1],freq='D'),rotation=45)
  #用來正常顯示中文標簽
plt.rcParams['axes.unicode_minus']=False
ax.plot(day_uv.index,day_uv)

4)一天當中不同時段,用戶行為的數量

結論:可以看到,從22:00點-凌晨5點,用戶數量逐漸降低,降為一天之中最低,因為此段時間大多數人處於休息之中。
從早上6點開始,用戶行為數量逐漸增多,直至上午10點。
10點-18:00用戶行為數量一直保持一個平穩的狀態,因為此段時間,大部分人在工作或者處理事情,用戶行為數量很穩定。
而18:00過后,很多人已經下班,有閑暇時間,用戶行為數量逐漸增加,直至一天之中的最高值。如果運營人員采取活動,可以參考用戶比較活躍的時間段。
data['day']=data['time'].dt.day
data['hour']=data['time'].dt.hour

df=data.groupby('hour')['user_id'].count()

import matplotlib.pyplot as plt
%matplotlib inline
import matplotlib.dates as mdate
fig=plt.figure(figsize=(20,6))
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['font.sans-serif']=['SimHei']  #顯示中文標簽
plt.xticks(np.arange(24),rotation=45)
ax=fig.add_subplot(111)
ax.plot(df.index,df['user_id'])

3、購買轉化率:1.06%   用戶行為轉化漏斗

 

 

 

結論:用戶點擊后,收藏或者加購物車的概率在5%左右,而最后真正的購買率在1%,已經收藏或者加購物車到最終購買的轉化率為21.03%,購買轉化率很低,后面可以采取活動提高購買轉化率。
代碼實現:
pv_count=data[data['behavior_type']=='pv'].count()
buy_count=data[data['behavior_type']=='buy'].count()
pv_to_buy=buy_count/pv_count
pv_to_buy

pv_num=data[data['behavior_type']=='pv']['user_id'].count()
collect_num=data[data['behavior_type']=='collect']['user_id'].count()
cart_num=data[data['behavior_type']=='cart']['user_id'].count()
buy_num=data[data['behavior_type']=='buy']['user_id'].count()
far_num=collect_num+cart_num


data1={'環節':['pv','far','buy'],
      '人數':[pv_num,far_num,buy_num]}
frame=pd.DataFrame(data1)
frame

#計算單環節轉化率
temp1=np.array(frame['人數'][1:])
temp2=np.array(frame['人數'][0:-1])
temp1,temp2
single_convs=temp1/temp2
single_convs=list(single_convs)
single_convs.insert(0,1)
single_convs=[round(x,4) for x in single_convs]
frame['單一環節轉化率']=single_convs

#求總體轉化率
temp3=np.array(frame['人數'])
temp4=np.ones(len(frame['人數']))*frame['人數'][0]
total_convs=list(temp3/temp4)
total_convs=[round(x,4) for x in total_convs]
frame['總體轉化率']=total_convs
frame

#繪制漏斗圖
from pyecharts import Funnel
attrs=frame['環節'].tolist()
attr_value=(np.array(frame['總體轉化率']*100)).tolist()

funnel1=Funnel("總體轉化漏斗圖",width=400,height=200,title_pos='center')
funnel1.add(name='商品交易環節',
            attr=attrs,
            value=attr_value,
            is_label_show=True,
            label_formatter='{d}%',
            label_pos="inside",
            legend_orient='vertical',
            legend_pos='left',                 
            is_legend_show=True) 
funnel1.render('文件路徑')

4、銷售次數前十的品類:6344

df=data[data['behavior_type']=='buy']
df.groupby('item_category').count().sort_values('user_id',ascending=False)

 

結論:購買次數最多的品類是6344,購買次數為162.
 
 
五、結論:
1、大部分用戶的主要活躍時間段為9:00-22:00,其中18:00-22:00開始逐漸增加,達到一天之中的頂峰。每周的主要活躍時間為周二至周四,運營人員可根據活躍時間進行相關的活動。
2、收藏或者加購物車的概率在5%左右,而最后真正的購買率在1%,購買轉化率與行業的標准進行比較,后面可以采取活動(用戶細分,轉化路徑細查)提高購買轉化率。
3、針對不同品類的購買轉化率采取不同的策略,提高已購品類的轉化率,一方面,對未被購買的品類進行分析,找出原因,促成購買。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM