淘寶用戶的行為數據python

一、數據來源

來源:天池數據—淘寶用戶的行為數據

數據列字段介紹:

column description

user_id 用戶身份

item_id 商品id

behavior_type 用戶行為類型

    (包括點擊,收藏,加購物車和付款四種行為,相應的值分別為1,2,3和4。)

user_geohash 地理位置

item_category 品類ID(商品所b屬的品類)

二、分析目標

  1. 總PV、總UV、PV與UV的關系、

  2. 復購率、下次購買周期

  3. 每周的用戶行為情況

  4. 每日的活躍時間情況

  5. 點擊--收藏&加購物車--支付各環(huán)節(jié)轉化率如何?

  6. 購買次數前10的品類

  7. 如何劃分不同客戶群體

三、數據處理

1、數據抽取
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.dates as mdate
import seaborn as sns
import plotly as py
import plotly.graph_objs as go
sns.set(style='darkgrid',font_scale=1.5)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
import os
os.chdir(r'E:\Users\Sen\Desktop\Da\user_behavior_data')
data=pd.read_csv('tianchi_mobile_recommend_train_user.csv',dtype=str)
data.info()
data.head()
2、數據清洗
#將數據處理為時間格式
data['time']=pd.to_datetime(data['time'])
data.dropna(subset=['time'],how='any',inplace=True)
data['date']=data['time'].dt.date
data['hour']=data['time'].dt.hour.astype('int')
data.sort_values(by='time',ascending=True,inplace=True)
data.reset_index(drop=True,inplace=True)
#將behavior_type的四種行為類型分別用1,2,3,4代表,
#為方便查看現(xiàn)將數字轉為pv,collect,cart,buy

def behavior_type_change(x):
    if x=='1':
        return 'pv'
    elif x=='2':
        return 'collect'
    elif x=='3':
        return 'cart'
    elif x=='4':
        return  'buy'
    else :
        return x
    
data['behavior_type']=data['behavior_type'].apply(behavior_type_change)

data.groupby(['behavior_type']).count()

四、數據分析

1)PV(總訪問量 )&UV(用戶總數)

PV即Page View, 即頁面瀏覽量或點擊量,用戶每次刷新即被計算一次。

UV即Unique Visitor,訪問您網站的一臺電腦客戶端為一個訪客。 00:00-24:00內相同的客戶端只被計算一次。

pv_date=data[data['behavior_type']=='pv'].groupby('date').count()['user_id']
uv_date=data.groupby('date').nunique()['user_id']
pv_uv_date=pd.concat([pv_date,uv_date],axis=1)
pv_uv_date.columns = ['pv','uv']
pv_uv_date.corr(method='pearson')
pv_uv_date.corr(method='spearman')

通過觀察,pv,uv相關性強

pv_uv_date.index
plt.figure(figsize=(16,9))
plt.subplot(211)
plt.plot(pv_date,color='red')
plt.title('每天訪問量')

plt.subplot(212)
plt.plot(uv_date,color='green')
plt.title('每天訪問人數')

plt.suptitle('uv和pv每日變化趨勢',fontsize='30')
plt.show()
pvuv.png

在12月份開始,用戶行為逐漸有增多趨勢,尤其在12月9日開始,用戶行為明顯高于其他時期,這幾天用戶行為增多是因為淘寶的“雙十二”活動。

  1. 復購率=購買2次或以上的用戶/購買用戶總數
user_buy_num=data[data['behavior_type']=='buy'].groupby('user_id').count()['behavior_type']
user_rebuy=user_buy_num[user_buy_num>=2].count()
user_buy=user_buy_num[user_buy_num>=1].count()

user_rebuy/user_buy

3)下次購買天數

data_day_buy=data[data.behavior_type=='buy'].groupby('user_id')
data_day_buy=data_day_buy.date.apply(lambda x:x.sort_values().diff(1).dropna())
data_day_buy=data_day_buy.map(lambda x:x.days)
data_day_buy.describe()
  1. 每周的用戶行為數量變化趨勢
data['weekday']=[x.weekday() for x in data['time']]
data_weekday=data.groupby('weekday').count().user_id
data_weekday.index=[1,2,3,4,5,6,7]
fig=plt.figure(figsize=(20,6))
plt.title('每周的用戶行為數量變化趨勢',fontsize='xx-large')
plt.xticks([1,2,3,4,5,6,7])
ax=fig.add_subplot(111)
ax.plot(data_weekday.index,data_weekday)
weekday.png

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

結論:用戶總數變化趨勢與PV量變化趨勢類似,周末的數量逐漸增加,到工作日又逐漸降低。在雙十二期間,用戶總數明顯上升,活動過后,人數明顯下降至平穩(wěn)狀態(tài)。

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

data['hour']=data['time'].dt.hour
pv_hour=data[data['behavior_type']=='buy'].groupby('hour').user_id.count().sort_index(ascending=True)
uv_hour=data.groupby('hour').user_id.nunique().sort_index(ascending=True)
pv_uv_hour=pd.concat([pv_hour,uv_hour],axis=1)
pv_uv_hour.columns = ['pv','uv']
plt.figure(figsize=(16,9))
pv_uv_hour['pv'].plot(color='steelblue',label='每個小時訪問量')
plt.ylabel('訪問量')
plt.legend(loc='upper left')
pv_uv_hour['uv'].plot(color='red',label='每個小時用戶量',secondary_y=True)
plt.ylabel('用戶量')

plt.xticks(range(24),pv_uv_hour.index)
plt.legend(loc='upper center')
plt.grid(True)
plt.show()

hours.png

一天當中不同時段中,22:00-5:00用戶行為逐步進入低谷,因為此段時間大多數人處于休息之中。

6:00-11:00用戶行為逐漸提升,用戶開始活躍

12:00-18:00用戶行為較為穩(wěn)定,因為此段時間,大部分人在工作或者處理事情

17:00-19:00 UV有所下降,因為這段時間大部分下班,吃晚飯,或者還要處理其他事情

而19:00-22:00用戶行為達到高潮,這段時間大部分人才有了自己的空余時間

6)購買轉化率:用戶行為轉化漏斗

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
trace = go.Funnel(
    y = ['pv','far','buy'],
    x = [pv_num,far_num,buy_num],
    textinfo = "label+text+percent previous+percent initial+value",
    marker=dict(color=[ "lightsalmon", "tan", "teal"]),
  #  connector = {"line": {"color": "royalblue", "dash": "solid", "width": 10}}
)   
fig_data =[trace]
fig = go.Figure(fig_data)

fig.show()
newplot1.png

結論:用戶點擊后,收藏或者加購物車的概率在5%左右,而最后真正的購買率在1%,已經收藏或者加購物車到最終購買的轉化率為20%,購買轉化率很低,后面可以采取活動提高購買轉化率。

  1. 銷售次數前十的品類
sale_top=data[data['behavior_type']=='buy'].groupby('item_category').count()
sale_top=sale_top.sort_values('user_id',ascending=False)
sale_top[:100]
  1. RFM分析
#因缺少Money字段,故只做RF分析
recent_buy_time=data[data['behavior_type']=='buy'].groupby('user_id')['date']
recent_buy_time
recent_buy_time=recent_buy_time.apply(lambda x:pd.to_datetime('2014-12-20').date()-x.sort_values().iloc[-1])
recent_buy_time=recent_buy_time.reset_index().rename(columns={'date':'recent'})
recent_buy_time.recent=recent_buy_time.recent.apply(lambda x:x.days)
recent_buy_time
buy_freq=data[data['behavior_type']=='buy'].groupby('user_id')['date'].count()
buy_freq=buy_freq.reset_index().rename(columns={'date':'freq'})
rfm=pd.merge(recent_buy_time,buy_freq,left_on='user_id',right_on='user_id')
rfm['recent_value']=pd.qcut(rfm.recent,2,labels=['1','0'])
rfm['freq_value']=pd.qcut(rfm.freq,2,labels=['0','1'])
rfm['rfm_value']=rfm['recent_value'].str.cat(rfm['freq_value'])
def kehu(x):
    if x=='11':
        return '價值客戶'
    elif x=='01':
        return '保持客戶'
    elif x=='10':
        return '發(fā)展客戶'
    else :
        return '一般客戶'

rfm['kehu']=rfm['rfm_value'].apply(kehu)
rfm.groupby('kehu')['user_id'].count()

總結:可對不同客戶進行精準運營,降低成本,提高運營效果

五、結論

1.pv與uv呈強相關性,受雙十二活動影響,12月9日開始,pv,uv開始暴漲,12月13日迅速回落,說明活動效果顯著
2.復購率高達52%,平均下次購買周期為4.6天,說明用戶購買頻次高
3.每周當中的用戶行為,周二至周四最高,而周六至周一最低
4.每日的活躍時間段為9:00-22:00,其中18:00-22:00開始逐漸增加,達到一天之中的頂峰。
5.漏斗分析模型中收藏或者加購物車的轉化率在5%左右,而購買購買轉化率在20%,需要進一步提高
6.RFM分析模型中將用戶劃分為不同客戶群體,可對其進行精準運營,降低成本,提高運營效果

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容