1 數據來源說明
數據來源:下載于天池數據集–< User Behavior Data on Taobao App> https://tianchi.aliyun.com/dataset/dataDetail?dataId=46 這份數據是15年天池大賽的比賽數據,內容包括了14年雙十一之后到雙十二結束這段時間內用戶的行為痕跡,共6個指標12256906個用戶,本文將使用PYTHON對整體用戶購物情況進行分析。 數據指標說明如下表:
columndescription user_id 用戶身份,脫敏 item_id 商品id,脫敏 behavior_type 用戶行為類型(包括點擊,收藏,加購物車和付款四種行為,相應的值分別為1,2,3和4。) user_geohash 地理位置 item_category 品類ID(商品所屬的品類) time 用戶行為發生的時間
2 研究目標
3 數據預處理
3.1數據抽樣
導入數據,看看數據的具體情況
import pandas as pd
data=pd.read_csv(r'E:\DATA\tianchi_mobile_recommend_train_user.csv')
print(data.head())
data.info()
print(data.describe())
由于數據較為龐大,進行抽樣處理–隨機抽樣 抽取100萬條數據
#隨機、可放回抽樣
data=data.sample(n=10000,replace=True,axis=0)
data.to_csv(r"E:\DATA\user.csv")
3.2 數據清洗
數據一致化處理 通過查看數據可得知,time字段的時間包含年-月-日和小時,為方便分析,將該字段分為2個字段:一個日期列,一個小時列 用Excel實現 將該字段的小時列刪除,將數據名字保存為user_
#將數據處理為時間格式
data=pd.read_csv(r'E:\DATA\user_.csv')
data['time']=pd.to_datetime(data['time'])
缺失值處理 user_geohash地理位置列,多數為NULL,且信息被加密處理,后面便不做地理位置的研究。
數據處理,將行為提取
#將behavior_type的四種行為類型分別用1,2,3,4代表,為方便查看現將數字轉為pv,collect,cart,buy
data.loc[data['behavior_type']==1,'behavior_type']='pv'
data.loc[data['behavior_type']==2,'behavior_type']='collect'
data.loc[data['behavior_type']==3,'behavior_type']='cart'
data.loc[data['behavior_type']==4,'behavior_type']='buy'
4 整體用戶購物情況
4.1 基礎數據統計
4.1.1 計算PV
pv(總訪問量)為:942396 PV即Page View, 即頁面瀏覽量或點擊量,用戶每次刷新即被計算一次。
print(data.groupby(['behavior_type']).count())
4.1.2 計算UV
UV(用戶總數):9869 UV(獨立訪客):即Unique Visitor,訪問您網站的一臺電腦客戶端為一個訪客。00:00-24:00內相同的客戶端只被計算一次。
print(data.drop_duplicates('user_id').count())
4.1.3計算有購買行為的用戶數
有購買行為的用戶數:3595
data2=data[data['behavior_type']=='buy']
print(data2.drop_duplicates('user_id').count())
4.1.4 計算重復購買率
復購率=65.7% 復購率=購買2次或以上的用戶/購買用戶總數
data3=data[data['behavior_type']=='buy']
df=data3.groupby('user_id').count()
df[df['behavior_type']>=2].count()
print(2362/3595)
4.2 分析用戶行為習慣----時間維度
4.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
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'])
4.2.2 日PV
結論:在12月份開始,用戶行為逐漸有增多趨勢,尤其在12月9日開始,用戶行為明顯高于其他時期,這幾天用戶行為增多是因為淘寶的“雙十二”活動。
data1=data[data['behavior_type']=='pv']
day_pv=data1.groupby(['time']).count()
print(day_pv)
#可視化
import matplotlib.pyplot as plt
import numpy as np
import matplotlib.dates as mdatedata1=data[data['behavior_type']=='pv']
day_pv=data1.groupby(['time']).count()
day_pvfig=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'])
4.2.3 日UV
結論:用戶總數變化趨勢與PV量變化趨勢類似,周末的數量逐漸增加,到工作日又逐漸降低。在雙十二期間,用戶總數明顯上升,活動過后,人數明顯下降至平穩狀態。
day_uv=data.groupby('time')['user_id'].nunique()
day_uvfig=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.2.4 購買轉化率
轉化率=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
print(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_numdata1={'環節':['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='ze8trgl8bvbq%',label_pos="inside",legend_orient='vertical',legend_pos='left', is_legend_show=True)
funnel1.render('文件路徑')
4.2.5 品類銷售次數TOP10
df=data[data['behavior_type']=='buy']
print(df.groupby('item_category').count().sort_values('user_id',ascending=False))
結論:購買次數最多的品類是6344,購買次數為162.
5 總結
大部分用戶的主要活躍時間段為9:00-22:00,其中18:00-22:00開始逐漸增加,達到一天之中的頂峰。每周的主要活躍時間為周二至周四,運營人員可根據活躍時間進行相關的活動。 收藏或者加購物車的概率在5%左右,而最后真正的購買率在1%,購買轉化率與行業的標準進行比較,后面可以采取活動(用戶細分,轉化路徑細查)提高購買轉化率。 針對不同品類的購買轉化率采取不同的策略,提高已購品類的轉化率,一方面,對未被購買的品類進行分析,找出原因,促成購買。
總結
以上是生活随笔 為你收集整理的某宝移动端用户行为分析---PYTHON 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。