淘宝用户行为分析项目报告

一、项目分析背景

淘宝是阿里巴巴集团旗下的一款移动商务平台产品,是中国深受欢迎的网购零售平台,拥有近5亿的注册用户数,每天有超过6000万的固定访客,同时每天的在线商品数已经超过了8亿件,平均每分钟售出4.8万件商品。庞大的用户量和销售量决定了淘宝拥有非常丰富的用户行为数据,在这个数字经济的时代下,拥有数据且有效运用数据是推动产品运营效果提升的关键要素。

此次项目的数据集来源于2014年11月18日至12月18日期间阿里巴巴移动商务平台上真实的用户商品行为数据,希望通过对行业的关键指标进行多维度分析,从而探索淘宝用户的行为模式,致力于为产品的运营和营销提供数据决策基础。

二、项目分析目标

通过研究分析淘宝APP下的多项重要指标来了解用户行为模式,其中需完成的关键性指标分析内容包括:

  • DAU分析
  • 付费率分析
  • 复购率分析

三、项目分析内容

1、数据基本概况

# 导入需使用的第三方库
import pandas as pd
import numpy as np
# 导入数据集
data=pd.read_csv('E:/淘宝用户行为分析/tianchi_mobile_recommend_train_user.csv')
(1)数据类型概况
data.info()

在这里插入图片描述

  • 通过上述观察可知,数据集共含有12256906条数据样本,以及6个字段,其中user_id、item_id、behavior_type及item_category四个字段为数值型数据,user_geohash和time两个字段为字符型数据。
(2)数据含义解析
data.head(10)

在这里插入图片描述
通过对数据集内容和结构的呈现可知,整体的数据集维度并不大且存在三个脱敏数据字段,具体的字段含义解析如下所示:

  • user_id:用户ID编号,属于脱敏数据,一个用户ID下的所有数据代表一个用户的全部行为信息。
  • item_id:商品ID编号,属于脱敏数据,不同的商品ID编号表示不同的商品。
  • behavior_type:用户行为类别,由数字1-4分别表示点击、收藏加入购物车以及付款四种用户行为。
  • user_geohash:用户行为产生时所处地理位置,可为空值。
  • item_category:商品类别编号,属于脱敏数据,可理解为商品ID 编号的上一级数据维度。
  • time:用户行为产生的时间,表示的是用户行为产生时最近的小时数。用户行为产生的时间,表示的是用户行为产生时最近的小时数。

2、数据预处理

(1)缺失值处理
# 缺失值判断
m=pd.isnull(data).sum()
pd.DataFrame(m,columns=['the number of null'])

在这里插入图片描述

  • 通过观察数据集的空值情况可知,除user_geohash字段以外,其他字段均无缺失值,而user_geohash的缺失值占总样本的半数以上且该字段所表示的是地理位置信息,不具有分析意义,为此将对整列数据删除。
# 删除含有大量缺失值字段
data.drop(columns=['user_geohash'],inplace=True)
m=pd.isnull(data).sum()
pd.DataFrame(m,columns=['the number of null'])

在这里插入图片描述

(2)数据类型转换
1)behavior_type字段类型转换
# 数值型转换为字符型
data.behavior_type.apply(lambda x:'click' if x==1 else 'collect' 
                         if x==2 else 'add_to_cart' if x==3 else 'payment')

在这里插入图片描述

  • 将behavior_type字段由原先的1-4数值型数据转化为字符型,为了增强后续分析过程中的数据可读性
2)time字段类型转换
# 字符型转换为日期型
date=[i.split(' ')[0] for i in list(data['time'].values)]
hour=[int(i.split(' ')[1]) for i in list(data['time'].values)]
data['date']=date
data['date']=pd.to_datetime(data['date'],format='%Y-%m-%d')
data['hour']=hour
data.drop(columns=['time'],inplace=True)

在这里插入图片描述

  • 将time字段转化为日期型数据,并将日期和时间(小时)数据拆分,从而起到增加后续分析维度的效用

3. 关键指标分析

(1)用户日活跃情况分析
1)DAU(日活跃用户数量)基本概况
date=data.groupby('date').count().index.tolist()
dau_y=[]
for i in date:
    num=(data.loc[data['date']==i,:].groupby('user_id').count()['date']).count()
    dau_y.append(num)
dau_x=date
t=(data.groupby('user_id').count()['date']).count()
dm=['{}%'.format(round((i/t)*100,1)) for i in dau_y]
avg=round(sum(dau_y)/len(dau_y),0)
# DAU变化趋势
import plotly.graph_objects as go
x_ax=[str(i) for i in pd.date_range(start='2014-11-18',
                                    end='2014-12-18',freq='3D').tolist()]
plt=go.Scatter(x=dau_x,y=dau_y,mode='lines+markers+text',
               name='Whole',
               marker=dict(color='#717175',size=5),
               text=dm,textposition='top center',textfont=dict(size=7.5)
               )
mark_h=go.Scatter(x=[dau_x[dau_y.index(max(dau_y))]],y=[max(dau_y)],
                  name='The highest',
                  mode='markers',
                  marker=dict(color='#9F212C')
                  )
mark_l=go.Scatter(x=[dau_x[dau_y.index(min(dau_y))]],y=[min(dau_y)],
                  name='The lowest',
                  mode='markers',
                  marker=dict(color='#106B1D')
                  )
line=go.Scatter(x=dau_x,y=[avg]*len(dau_x),mode='lines',
                line=dict(color='#9F212C',width=1.8,dash='dot'),
                name='Avg of DAU'
                )
fig=go.Figure([plt,line,mark_l,mark_h])
fig.update_layout(width=1000,
                  plot_bgcolor='#FEFEFE',
                  xaxis=dict(title='日期',gridcolor='#F3F4F3',
                             tickmode='array',tickvals=x_ax,tickformat='%m/%d'),
                  yaxis=dict(title='日活人数',gridcolor='#F3F4F3')
                 )
fig.show()

日活跃用户数量变化趋势图

在这里插入图片描述
注:上述图像中的红色虚线表示日活跃用户数量的月平均值,每个数据点上的标识为DAU/MAU。

  • 通过观察上述DAU在11月18日至12月18日之间的变化趋势可知,淘宝平台的日活跃用户数量呈现出一定的波动性,在平台未开展双12活动前,每日的活跃用户数量基本维持在6200到6600之间,上下浮动范围不超过400人次,基本处于正常波动范围。在双12购物狂欢节活动期间,DAU由12月9日的6520人逐渐上升至12月12日的7720人,平台的活动运营很大程度上提升了用户在当日的活跃数量。
  • 通过观察整个变化趋势图可知,在未发生12月12日的日活跃用户量大幅度提升之前,淘宝平台的DAU基本都处于统计区间内日活跃用户量的平均值之下,而后期日活跃用户数量的大幅度提升,直接拉动了平均日活跃用户的增加,说明12月12日的平台活动对用户起到了很大程度的吸引,达到了促活的效果。
2)DAU的日环比变化情况
# 数据准备
dau_y_n=dau_y[1:]
dau_y_o=dau_y[:-1]
rate=[]
for i in range(len(dau_y_o)):
    rate.append(round(((dau_y_n[i]-dau_y_o[i])/dau_y_o[i])*100,1))
x_ax_=[str(i) for i in pd.date_range(start='2014-11-19',
                                     end='2014-12-18',freq='3D').tolist()]    
# 绘图
plt_=go.Scatter(x=dau_x[1:],y=rate,mode='lines+markers+text',
               name='Ratio',
               marker=dict(color='#717175',size=6),
               text=['{}%'.format(i) for i in rate],
               textposition='top center',textfont=dict(size=7.5)
               )
line_=go.Scatter(x=dau_x[1:],y=[0]*len(dau_x[1:]),mode='lines',
                line=dict(color='#9F212C',width=1.5,dash='dot'),
                name='zeroline'
                )
fig_=go.Figure([plt_,line_])
fig_.update_layout(width=1000,
                  plot_bgcolor='#FEFEFE',
                  xaxis=dict(title='日期',gridcolor='#F3F4F3',
                             tickmode='array',tickvals=x_ax_,tickformat='%m/%d'),
                  yaxis=dict(title='DAU日环比',gridcolor='#F3F4F3')
                 )
fig_.show()

日活跃用户数量环比变化趋势图
在这里插入图片描述

  • 通过观察上述环比变化趋势图可知,在整个统计区间内,DAU的日环比变化率基本维持在正负3%的波动范围内,且近半数的DAU日环比变化率可以保持为正数,为此基本判定淘宝平台的日活跃用户数量不存在异常变化。
  • 需要特别关注的是,12月12日和12月13日的日环比变化率出现非常明显的上升和下降,从12月9日开始,DAU的日环比变化率一直保持正向增长且速率逐渐提升,尤其是12月12日的DAU环比增长率达到了12%之高,当双12购物节的活动结束后,12月13日的日活跃用户数直降至原先水平。
  • 综上所述,淘宝平台目前对于用户的拉新以及用户忠诚度的维系已经处于较成熟的阶段,DAU基本保持在稳定的水平,更多的用户只有当有所需求时,才会在平台上呈现出活跃度。当淘宝平台开展大型的优惠活动时,用户会由好奇心所引导或者被活动多渠道宣传氛围所带动,而产生进入产品点击商品链接的行为,从而促使平台的日活跃用户数量提升。
(2)用户转化行为分析

淘宝网的用户行为主要有四个阶段,分别为点击,收藏、加入购物车以及购买,接下来将分析每一个阶段的用户行为转化率,从而获知淘宝网的用户行为基本转化状况。

1)用户行为产生次数间转化基本情况
# 数据准备
def fun(i):
    num=len(data.loc[data['behavior_type']==i,'user_id'].tolist())
    return num
# 返回每一类用户行为所对应的次数
num=[]
for i in list(data.behavior_type.unique()):
    n=len(data.loc[data['behavior_type']==i,'item_id'].unique().tolist())
    num.append(round(n/1000,1))
# 绘图
funnel=go.Funnel(x=num,y=data.behavior_type.unique().tolist(),
                 textinfo='value+percent initial',
                 textfont=dict(size=13,color='#616263',family='Lato'),
                 marker=dict(color=['#D3D3D4','#d5d6d7','#E7E8ED','#F2F3F6'])
                 )
fig_f=go.Figure(funnel)
fig_f.update_layout(plot_bgcolor='#FEFEFE',
                    width=800,
                    height=480,
                    yaxis=dict(tickfont=dict(size=15,family='Lato')))
fig_f.show()

用户行为产生次数间转化率漏斗图
在这里插入图片描述

  • 通过观察上述漏斗图可以清晰的发现,淘宝网用户对于商品链接的点击量非常高,在一个月内的总点击量可以达到近2.9千万次,但是其后续行为的转化率就相对低许多,由点击商品链接到加入购物车以及点击商品链接到收藏的转化率分别只达到了9%和7%,而由点击商品链接到付费行为间的转化率仅达到3%,淘宝网在一个月内共产生了2.87千万次点击,却仅产生了9.3万次的付费行为。

通过上述的转化率基本概况分析可知,淘宝平台用户的点击行为与后续行为间的转化率较低,为此将进一步分析当用户产生了加入购物车以及收藏行为后,对付费行为的影响,从而找出提升付费转化率的切入点。

① 用户加入购物车行为与付费行为间的转化率分析
# 数据准备
user=data.loc[data['behavior_type']=='add_to_cart',:].user_id.tolist()
num_add=len(user)
add_user=data[data.user_id.isin(user)]
num_pay=add_user.loc[add_user['behavior_type']=='payment',:].count()['user_id']
funnel_a=[num_add,num_pay]
# 绘图
funnel_ap=go.Funnel(x=funnel_a,y=['add_to_cart','payment'],
                 textinfo='value+percent initial',
                 textfont=dict(size=13,color='#616263',family='Lato'),
                 marker=dict(color=['#D3D3D4','#d5d6d7','#E7E8ED','#F2F3F6'])
                 )
fig_ap=go.Figure(funnel_ap)
fig_ap.update_layout(plot_bgcolor='#FEFEFE',
                    width=590,
                    height=350,
                    yaxis=dict(tickfont=dict(size=15,family='Lato'))
                   )
fig_ap.show()

用户行为转化情况漏斗图
在这里插入图片描述

  • 通过分析所有产生过加入购物车行为用户的付费转化率,可以得出其转化率相较于仅发生点击行为的转化率提升了近10倍,由原先3%的付费转化率增加至34%,为此,淘宝平台的店铺可以通过一定的手段来激励用户将商品添加至购物车,从而可以很大程度提升用户的付费行为发生次数。
② 用户收藏行为与付费行为间的转化率分析
# 数据准备
user_=data.loc[data['behavior_type']=='collect',:].user_id.tolist()
num_col=len(user_)
add_user=data[data.user_id.isin(user_)]
num_pay=add_user.loc[add_user['behavior_type']=='payment',:].count()['user_id']
funnel_c=[num_col,num_pay]
# 绘图
funnel_cp=go.Funnel(x=funnel_c,y=['collect','payment'],
                 textinfo='value+percent initial',
                 textfont=dict(size=13,color='#616263',family='Lato'),
                 marker=dict(color=['#D3D3D4','#d5d6d7','#E7E8ED','#F2F3F6'])
                 )
fig_cp=go.Figure(funnel_cp)
fig_cp.update_layout(plot_bgcolor='#FEFEFE',
                    width=590,
                    height=350,
                    yaxis=dict(tickfont=dict(size=15,family='Lato'))
                   )
fig_cp.show()

用户行为转化情况漏斗图
在这里插入图片描述

  • 通过分析发生了收藏行为的用户付费转化率可知,当用户产生了收藏行为,其付费转化率将会得到很大程度的提升,由原先的3%提升至40%,有就是说明当用户点击了100次商品链接,可能只会产生3次付费行为,但是当用户产生了100次收藏行为,其中就有可能产生40次付费。为此,淘宝平台的商家应当积极鼓励用户收藏商品链接,以便进而提升其付费转化率。
2)用户付费率的日趋变化情况
# 数据准备
date=data.groupby('date').count()['user_id'].index.tolist()
lis=[]
for i in date:
    new=data.loc[data['date']==i,:]
    v=new.groupby('behavior_type').count()['user_id'].values.tolist()
    lis.append(v)
new_=pd.DataFrame(lis,columns=['add_to_cart','click','collect','payment'])
new_['date']=date
new_['pay_rate']=round((new_.payment/new_.click)*100,2)
r=new_.pay_rate.values.tolist()
p=data.loc[data['behavior_type']=='payment']
p_num=((p.groupby(['date','user_id']).count()['hour']).groupby('date').count()).values.tolist()
# 绘图
plt_r=go.Scatter(x=dau_x,y=r,mode= 'lines+markers+text',
                 text=['{}%'.format(i) for i in r],textposition='top center',
                 textfont=dict(size=7.5),
                 marker=dict(color='#717175',size=5),
                 name='The trend'
                 )
l=go.Scatter(x=dau_x,y=[1]*len(r),mode='lines',
             line=dict(color='#9F212C',width=1.5,dash='dot'),
             name='baseline'
                 )
plt_p=go.Scatter(x=dau_x,y=p_num,mode= 'lines+markers+text',
                 text=['{}'.format(i) for i in p_num],textposition='bottom left',
                 textfont=dict(size=7.5),
                 marker=dict(color='#106B1D',size=3.5),
                 line=dict(color='#106B1D',width=1.5,dash='dot'),
                 name='payment num',
                 yaxis='y2'
                 )
fig_r=go.Figure([plt_r,plt_p,l])
fig_r.update_layout(width=1000,
                    height=540,
                    plot_bgcolor='#FEFEFE',
                    xaxis=dict(title='日期',tickmode='array',
                               tickvals=x_ax,tickformat='%m/%d',
                               gridcolor='#F3F4F3'),
                    yaxis1=dict(title='付费转化率',gridcolor='#F3F4F3'),
                    yaxis2=dict(title='付费行为次数',overlaying='y',side='right'),
                    legend=dict(x=1,y=1.02)
                    )
fig_r.show()

用户付费转化率及付费人数变化趋势图
在这里插入图片描述

  • 通过观察上述用户付费率的日趋变化情况可知,淘宝网每日的用户付费转化率基本保持在1%附近波动,从12月8日开始,用户付费转化率开始逐渐降低,直至12月12日开始直线上升,其转化率达到了平时的两倍之多,甚至超过了2.5%
  • 在双12购物节的前几天(自12月8日起)出现了付费转化率降低,但日活跃用户数量明显上升,其主要原因是用户在双12前期会大量关注想要购买的商品信息,很大程度上提升了DAU值,但是为了获取节日折扣,用户一般会等到12月12日零点才进行抢购,从而使得双12当天的付费转化率达到峰值
  • 通过观察每日付费用户人数的变化情况可知,淘宝平台每日的付费人数基本维持在1300-1600的变动范围内,呈现出较稳定的用户黏性,在双12期间的付费人数达到了近3900,是非活动期间付费人数的两倍之多,由此说明淘宝平台在特殊活动期间的渠道推广效果显著,很大程度上做到了用户促活。
(3)用户复购行为分析
1)用户的复购情况

从用户角度进行两个层面的分析,第一、计算平台复购率,从而了解淘宝平台的产品黏性,第二、分析用户的购买频率,从而为淘宝平台维系高价值用户做出数据决策依据。

① 用户复购率分析
# 数据准备
total=t.count()
re=[round((t[t.values>1].count()/total)*100,2),
    round((t[t.values==1].count()/total)*100,2)]
# 绘图
bar=go.Bar(x=['more than one time','one time'],y=re,
           marker=dict(color='#B6B7B8'),width=0.6,
           text=['{}%'.format(i) for i in re],textposition='outside')
fig_b=go.Figure(bar)
fig_b.update_layout(width=400,
                    height=500,
                    plot_bgcolor='#FEFEFE',
                    yaxis=dict(title='人数占比')
                   )
fig_b.show()

复购与单次购买用户占比对比图
在这里插入图片描述

  • 通过对比用户仅购买一次商品及购买两次及以上商品的情况,可以发现网站的复购率可以达到92%左右,对于淘宝这种电商平台类产品,用户大多会产生多次购买的行为,为此从用户角度去分析复购率并不具有明显效用。
② 用户购买频数分析
# 数据准备
c=data.loc[data['behavior_type']=='click',:].groupby('user_id').count()['hour']
p_c=pd.DataFrame(c)
pa=data.loc[data['behavior_type']=='payment',:].groupby('user_id').count()['hour']
p_pa=pd.DataFrame(pa)
m=p_c.merge(p_pa,left_on=p_c.index,right_on=p_pa.index,how='left')
m.columns=['user_id','click','payment']
m.drop(index=m[pd.isnull(m.payment)].index,inplace=True)
m['frequency']=round(m.payment/30,0)
m=m.sort_values('payment',ascending=False)
m_=m.loc[m['payment']>30,:]
m_.index=range(m_.user_id.count())

在这里插入图片描述

  • 通过对用户在整个统计区间(一个月内)全部购买频数的分析,筛选出平均每天至少产生一次消费行为的用户,共有882名用户,大约占产生过付费行为用户总数的10%。淘宝平台可以根据上述分析结果,对这些用户进行高频的PUSH信息推送,进而提升这类忠实用户的购买频数。
2)用户针对商品的重复购买情况

从商品维度分析用户的购买偏好,从而为淘宝平台的系统推荐提供数据依据。

① 商品品类购买频数分析
# 数据准备
item_c=data.loc[data['behavior_type']=='payment',:].groupby('item_category').count()  
       ['date'].sort_values(ascending=False)
li=item_c.values.tolist()
a=0
sum_=[]
li_=[]
while a<len(li):
    li_.append(li[a])
    sum_.append(round((sum(li_)/sum(li))*100,2))
    a+=1
ic=pd.DataFrame(item_c)
ic['per']=sum_
ic.columns=['purchase_freq','percent%']
ic.iloc[:10,:]

在这里插入图片描述

  • 通过对用户重复购买商品所属种类的频数进行分析,可以得出如上排名在前十的商品品类,在整个统计区间用户共购买了4663种类别的商品,前十种商品品类仅占总数量的千分之二,但是其购买频数之和占全部购买频数的比例可以达到近10%,可以将上述筛选出的商品品类用于系统推荐类目优化。

接下来这部分将分析的是:当用户对某类商品品类采取了特定行为后,会对商品品类复购率产生什么影响。

② 加入购物车及收藏的品类复购情况
# 数据准备
col=data.loc[data['behavior_type']=='collect',:]
atc=data.loc[data['behavior_type']=='add_to_cart',:]
col_=data[data.item_category.isin(col['item_category'])]
atc_=data[data.item_category.isin(atc['item_category'])]
rate_=[]
for i in [data,atc_,col_]:
    p=i.loc[i['behavior_type']=='payment',:].groupby('item_category').count()['user_id']
    r=round((p[p.values>1].count()/p.count())*100,2)
    rate_.append(r)
# 绘图
bar=go.Bar(x=['click','add_to_cart','collect'],y=rate_,
           width=0.6,
           text=['{}%'.format(i) for i in rate_],
           textposition='outside',
           textfont=dict(size=10),
           marker=dict(color='#B6B7B8')
           )
fig_b=go.Figure(bar)
fig_b.update_layout(width=400,
                    height=450,
                    plot_bgcolor='#FEFEFE',
                    xaxis_title='用户行为',
                    yaxis_title='复购率'
                   )
fig_b.show()

特定用户行为下的商品品类复购率对比图
在这里插入图片描述

  • 通过观察上述复购率的对比情况可知,当用户对某类商品产生了收藏或加入购物车行为时,其将更易于对该商品进行重复购买,俩种行为下的商品品类复购率分别为84.6%81%,均高于未进行特定行为前的比值,为此,淘宝平台的商家应该重视用户对商品的收藏和加购,例如,可以采用发放店铺优惠券的方式来促进用户产生相应行为。

以上就是此次淘宝用户行为分析项目的全部内容。

  • 5
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值