哪个是更早的时间 date_淘宝用户行为分析(漏斗模型+pv,uv,pv/uv,复购率,用户活跃时间段)...

数据来源https://tianchi.aliyun.com/dataset/dataDetail?dataId=46

用户行为表:用户ID,商品ID,用户行为。用户地点,商品大类ID,时间

需求:该数据为淘宝2014年用户消费行为表,计算各网页的转换率,每日用户活跃时间,寻找提高销量的办法。

成果:

9ac781291035850bf353f0eaa7a0fcf5.png

从该图中,用户浏览到收藏或加购物车的转换率相对较低,只有5%左右,从浏览到购买的转化率只有1%左右,可以优化商品的推荐商品的推荐机制,优化用户搜索效率,提高用户购买的比例。

需求:求页面的pv,uv,pv/uv,复购率

6126ee830c38b07b1bfc8409405dc9bc.png
在双十二那天访问量迅速增加,需要抓住机会

77f442abf4f443d46af2011e6e930a2c.png

8d9b7352bf5fa814f7fef5fdc93a7112.png
日常情况下,每日平均访问次数在6-7次之间,双十二高达9次

需求:找到每天用户哪个时间段活跃

16860757fe9cb5cf34d5449f01bbdfa0.png

ed9c0b222aa479d3b389699a396987ec.png

浏览用户在一天中的行为,用户在0-6点是睡觉时间,6点过后用户量逐渐增多,10点到达顶峰,推测是用户起床时间。这时的浏览量处于一天中较小的时候。

晚上6点过后,用户量迅速上升,成交量也在增加,在晚上10点浏览慢慢下降,推测为用户休息时间。如果要安排促销活动,最好在晚上6-10点这个时间段内,效果最好。

分析过程:

1、导入数据

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use('ggplot')
df=pd.read_csv('tianchi_mobile_recommend_train_user.csv')

2、查看属性

0184c9238fd81f752b193c2a331982a4.png

需要把item_category删去,time分割。

3、去重,去缺失值

#把time除空
df=df[~df['time'].isnull()]
#把time分割
df['date']=df.time.apply(lambda x:x.split(' ')[0])
df['time']=df.time.apply(lambda x:x.split(' ')[1])
#把user_geohash去除
df=df.drop(['user_geohash'],axis=1)
#去重
df=df.drop_duplicates()

4、数据一致化处理

#behavior 列上有1-4,把其对应为浏览,收藏,加购物车,购买
def df_beh(x):
    s={1:'pv',2:'favor',3:'cart',4:'buy'}
    return s[x]
df['behavior_type']=df.behavior_type.apply(df_beh)

5、转化率分析

#漏斗模型分析
df_count=df.behavior_type.value_counts()
print("浏览-收藏+加购物车的转化率:",(df_count.cart+df_count.favor)/df_count.pv)
print('收藏+加购物车-购买的转化率:',df_count.buy/(df_count.cart+df_count.favor))
print('浏览-购买转化率:',df_count.buy/df_count.pv)

6、生成漏斗模型

#生成漏斗
#数据整理为漏斗格式
s=[('pv',df_count.pv),('favor',df_count.favor),('cart',df_count.cart),('buy',df_count.buy)]
#转化成百分比形式
max_count=s[0][1]
s1=[(x,round(y*100/max_count,2))
   for x,y in s]
#导入模块
import pyecharts.options as opts
from pyecharts.charts import Funnel
#建立空漏斗,把数据加到空漏斗里
funnel=Funnel()
funnel.add('用户比例',s1)
#显示
funnel.render_notebook()

7、有过购买行为的用户占比

#有过购买行为的用户量占比
#把购买行为的用户提取,去重
df_buy=df[df['behavior_type']=='buy'].drop_duplicates('user_id').count()
#把全体用户去重,计数
df_user=df.drop_duplicates('user_id').count()
#除
print('有过购买行为的用户占比:',df_buy[0]/df_user[0])

8、复购率

#用户的复购率
#提取购买次数超过1的用户
rebuy_user=df[df['behavior_type']=='buy'].groupby(['user_id']).count()
(rebuy_user[rebuy_user['behavior_type']>=2].count()/df_buy[0])[0]

9、不同时间段用户行为分析

#日均访问量
df_pv=df[df['behavior_type']=='pv'].groupby('date').count().iloc[:,:1].rename(columns={'user_id':'pv_count'})
#uv
df_uv_a=df[df['behavior_type']=='pv'].groupby(['date','user_id']).count().reset_index()
df_uv=df_uv_a.groupby('date').count().iloc[:,:1].rename(columns={'user_id':'uv_count'})
#pv/uv
mean_df=pd.concat([df_pv,df_uv],axis=1)
mean_df['pv/uv']=mean_df['pv_count']/mean_df['uv_count']

10、画图

#画图xticks和rot分别显示横坐标值和调整横坐标显示长度。title显示标题
df_pv.plot(kind='line',xticks=range(0,31),rot=90,title='pv')
df_uv.plot(kind='line',xticks=range(0,31),rot=90,title='uv')
mean_df['pv/uv'].plot(kind='line',xticks=range(0,31),rot=90,title='uv')

11、用户活跃

#用户活跃时间段分析
dpv=df[df['behavior_type']=='pv'].groupby('time').count().iloc[:,:1].rename(columns={'user_id':'pv'})
dfavor=df[df['behavior_type']=='favor'].groupby('time').count().iloc[:,:1].rename(columns={'user_id':'favor'})
dcart=df[df['behavior_type']=='cart'].groupby('time').count().iloc[:,:1].rename(columns={'user_id':'cart'})
dbuy=df[df['behavior_type']=='buy'].groupby('time').count().iloc[:,:1].rename(columns={'user_id':'buy'})
#连接表(pv值太大,单独做图)
daily_df=pd.concat([dfavor,dcart,dbuy],axis=1)
#作图
daily_df.plot(xticks=range(25),rot=90)
dpv.plot(xticks=range(25),rot=90)

参考:淘宝用户行为数据-探索性分析-天池实验室-阿里云天池

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值