数据分析_DA_01 淘宝用户行为分析
【特别说明】文章仅用于个人学习记录!
目录
【特别说明】文章仅用于个人学习记录!
一、数据分析
1、数据来源
淘宝用户行为。本数据集共有104万条左右数据,数据为淘宝APP2014年11月18日至2014年12月18日的用户行为数据,共计6列字段。
2、字段说明
- user_id:用户身份,脱敏
- item_id:商品ID,脱敏
- behavior_type:用户行为类型(包含点击、收藏、加购物车、支付四种行为,分别用数字1、2、3、4表示)
- user_geohash:地理位置
- item_category:品类ID(商品所属的品类)
- time:用户行为发生的时间
二、分析框架
1、流量指标诊断:PV、UV;
2、用户购买情况分析:成交量、付费率、人均购买次数 、复购率;
3、用户行为漏斗转化率 :点击-支付、点击-收藏、点击-购物车、收藏/购物车-支付;
4、用户群体分层:RFM模型分析;
三、数据预处理
1、导入库
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
#导入数据
data=pd.read_csv('/home/kesci/input/dataset1855/淘宝用户行为.csv')
2、重复值处理
# 查看重复值数量
print(data.duplicated().sum())
# 删除重复值
print(data.drop_duplicates(inplace=True))
3、缺失值处理
# 查看缺失值数量
print(data.isnull().sum())
# 缺失值集中在用户地理信息列,故删去
del data['user_geohash']

4、数据格式转化
# 把time列拆分成date和hour后,删除time列
data['date']=data.time.str.split(' ').str[0]
data['hour']=data.time.str.split(' ').str[1]
del data['time']
# 转换数据格式
for i in data.columns[:2]:
data[i]=data[i].astype('str')
data['date']=pd.to_datetime(data.date)
data['hour']=data.hour.astype('int')
# 按时间排序
data=data.sort_values(by=['date','hour'])
data=data.reset_index(drop=True)
四、 分析过程
1、流量指标分析
#日流量指标
pv_daily=data[data.behavior_type==1].groupby('date').count()['user_id'].reset_index().rename(columns={'user_id':'pv'})
uv_daily=data.groupby('date').nunique()['user_id'].reset_index().rename(columns={'user_id':'uv'})
fig,axes=plt.subplots(2,1,figsize=(12,8),sharex=True)
pv_daily.plot(x='date',y='pv',ax=axes[0])
uv_daily.plot(x='date',y='uv',ax=axes[1])
axes[0].set_title('pv_daily')
axes[1].set_title('uv_daily')

结果说明:在该月内,访问量和用户量整体缓慢攀升,并在双十二期间达到峰值,可见双十二的活动效果明显。
#时段流量指标
pv_hour=data[data.behavior_type==1].groupby('hour').count()['user_id'].reset_index(drop=True).rename(columns={'user_id':'pv'})
uv_hour=data.groupby('hour').nunique()['user_id'].reset_index(drop=True).rename(columns={'user_id':'uv'})
fig,axes=plt.subplots(2,1,figsize=(12,8),sharex=True)
pv_hour.plot(ax=axes[0])
uv_hour.plot(ax=axes[1])
axes[0].set_title('pv_hour')
axes[1].set_title('uv_hour')
axes[0].xaxis.set_minor_locator(ticker.MultipleLocator(1))
axes[1].xaxis.set_minor_locator(ticker.MultipleLocator(1))

结果说明:23点到次日5点的访问量和用户量都在下降,5点到18点回升到相对稳定的水平;18点到22点访问量有比较明显的提升,并在21点和22点达到峰值,而用户量的趋势类似,但相对不那么明显。
小结:18-22点为用户活跃时段,5-18点为用户一般活跃时段,23-5点为用户非活跃时段。
2、用户购买情况分析
#日成交量和付费率分析
# 日成交量
buy_daily=data[data.behavior_type==4].groupby('date').count()['behavior_type']
# 付费率=消费人数/活跃用户数
paying_user=data[data.behavior_type==4].groupby('date').nunique()['user_id']
active_user=data.groupby('date').nunique()['user_id']
paying_rate=paying_user/active_user
plt.figure(figsize=(12,8))
axes[0]=plt.subplot(211)
axes[0].set_title('buy_daily')
axes[0].set_ylabel('buy')
plt.plot(buy_daily)
axes[1]=plt.subplot(212)
axes[1].set_title('paying_rate_daily')
axes[1].set_ylabel('paying_rate')
plt.plot(paying_rate)

结果说明:成交量和付费率总体上维持在一个稳定的水平,在双十二当天均达到峰值。
小结:成交量的走势与pv/uv走势基本一致,印证了用户流量与成交量的正向关系,而付费率在双十二当天骤升近50%则说明了双十二活动对提升用户付费率的效果明显。
#用户购买次数分析
# 用户购买次数分布
user_buy_time=data[data.behavior_type==4].groupby('user_id').count()['item_id']
plt.hist(x=user_buy_time,bins=10,range=[0,100])
plt.xlabel('buy_time')
plt.ylabel('num_of_user')
plt.title('user_buy_time')
# 人均购买次数
total_buy_time=data[data.behavior_type==4].count()['user_id']
total_paying_user=data[data.behavior_type==4].nunique()['user_id']
capita_user_buy_time=total_buy_time/total_paying_user
print(capita_user_buy_time)
#复购率分析
# 复购率=购买次数在2次及以上的人数/有购买行为的人数
user_buy_time=data[data.behavior_type==4].groupby('user_id').count()
user_twice=user_buy_time[user_buy_time['item_id']>2].count()['item_id']
user_buy=data[data.behavior_type==4].nunique()['user_id']
rebuy_rate=user_twice/user_buy
print(rebuy_rate)
结果说明:用户复购率达83%,人均购买次数12次,而从购买次数分布图来看,购买次数20次以内的,尤其是10次以内的用户比例非常大。
小结:从复购率和人均购买次数来看,淘宝的付费用户忠诚度较高,应继续保持;而从用户购买次数分布来看,应重点关注购买次数在20次以内,尤其是10次以内的用户,进一步挖掘其购买力。
3、用户漏斗行为分析
pv=data.groupby('behavior_type').count()['user_id'].iloc[0]
favor=data.groupby('behavior_type').count()['user_id'].iloc[1]
cart=data.groupby('behavior_type').count()['user_id'].iloc[2]
buy=data.groupby('behavior_type').count()['user_id'].iloc[3]
# 点击转化率
pv_favor=favor/pv*100
pv_cart=cart/pv*100
pv_buy=buy/pv*100
print('点击——收藏转化率:','%.2f'%pv_favor,'%')
print('点击——购物车转化率:','%.2f'%pv_cart,'%')
print('点击——支付转化率:','%.2f'%pv_buy,'%')
# 收藏/购物车转化率
favor_cart_buy=buy/(favor+cart)*100
print('收藏——支付转化率:','%.2f'%favor_cart_buy,'%')
结果说明:用户总体转化率较低,其中点击—支付转化率仅有1.48%,而点击—收藏和点击—购物车的转化率相对高一些,但也仅有3%和4%;而收藏或加入购物车的转化率为19.27%,对比点击转化率比较大的提升。
小结:用户的点击转化率总体偏低,而收藏和加购这类表现出商品兴趣的行为转化率会有较大的提升。
建议:1)针对点击转化率的问题,一方面可以多举办限时促销活动,促使用户尽快下单,另一方面拓展站外流量来源,增加点击量;2)在功能设计上,引导用户收藏和加购商品的功能,并在收藏和购物车页面配合提醒功能,以增加购买转化率。
4、使用RFM模型对用户进行分类
# 由于本数据集没有消费金额数据,故只针对RF维度进行分析
# 构造R值
last_time=data[data.behavior_type==4].groupby('user_id').max()['date']
recency=(pd.to_datetime('2014-12-18')-last_time).dt.days.copy() # 这里创建副本是为了防止下面用索引设置R值的时候出现链式赋值警告
recency_avg=recency.mean()
recency[recency<recency_avg]=0
recency[recency>recency_avg]=1
# 构建F值
frequency=data[data.behavior_type==4].groupby('user_id').count()['item_id'].copy()
frq_avg=frequency.mean()
frequency[frequency<frq_avg]=0
frequency[frequency>frq_avg]=1
rfm=pd.merge(recency,frequency,on='user_id',how='inner')
rfm=rfm.reset_index().rename(columns={'date':'r','item_id':'f'})
rfm=rfm[['r','f']].astype('str')
rfm['user_type']=rfm['r']+rfm['f']
rfm.groupby('user_type').count()['r'].sort_index(ascending=False).rename(index={'11':'重要价值用户:','10':'重要发展用户:','01':'重要保持用户:','00':'重要挽留用户:'})
结果说明:重点价值用户是最重要的用户群体,但数量较少,只有464人,而其余类型的用户群体数量相当,均有2000人以上的规模,需针对用户群体特点针对性采取运营措施。
结论:
(1)重要价值用户是最优质的用户群体,应重点关注,既要保持其粘性,又要继续引导消费,可为这类用户提供vip服务;
(2)重要发展用户的特点是近期有消费但频次不高,策略是提高其消费次数,具体措施有促销活动提醒和优惠卷活动等;
(3)重要保持用户的特点是消费频次高但有一段时间没有消费,策略是重新唤醒,通过app消息推送,以及站外广告营销吸引其注意力,促进复购;
(4)重要挽留用户近期没有消费且频次不高,若不加以挽留,会有流失的可能,对于这类用户一方面需要保持曝光量,持续推送活动和优惠信息,另一方面需要进一步研究其兴趣和需求,才能采取有效的运营策略。
五、结论
1、流量指标诊断:平台用户流量指标稳步增长,双十二活动引流促销效果明显。
- 后续可以结合更多节假日时机复制双十二活动,制造流量热点,同时继续优化双十二活动规则提高转化率。
2、户购买情况分析:淘宝的付费用户忠诚度较高,有着较高的复购率和人均购买次数,但平台成交量和付费率水平基本维持。
- 一方面应继续挖掘付费用户的购买力,另一方面应提高转化率,增加付费用户规模,提高成交量。
3、用户行为漏斗分析:用户的点击转化率总体偏低,而收藏和加购转化率相对较高。
- 针对点击转化率的问题,一方面可以多举办限时促销活动,促使用户尽快下单,另一方面拓展站外流量来源,增加点击量;
- 在功能设计上,引导用户收藏和加购商品的功能,并在收藏和购物车页面配合提醒功能,以增加购买转化率。
4、RFM模型—用户群体分层:需针对用户群体特点针对性采取运营措施。
- 重要价值用户是最优质的用户群体,应重点关注,既要保持其粘性,又要继续引导消费,可为这类用户提供vip服务;同时这类用户数量不多,需要对其他次要用户群体持续运营和挖掘才能增加重要价值用户的数量,增加平台营收;
- 重要发展用户的特点是近期有消费但频次不高,策略是提高其消费次数,具体措施有促销活动提醒和优惠卷活动等;
- 重要保持用户的特点是消费频次高但有一段时间没有消费,策略是重新唤醒,通过app消息推送,以及站外广告营销吸引其注意力,促进复购;
- 重要挽留用户近期没有消费且频次不高,若不加以挽留,会有流失的可能,对于这类用户一方面需要保持曝光量,持续推送活动和优惠信息,另一方面需要进一步研究其兴趣和需求,才能采取有效的运营策略。
👏觉得文章对自己有用的宝子可以收藏文章并给小编点个赞!
👏想了解更多统计学、数据分析、数据开发、机器学习算法、深度学习等有关知识的宝子们,可以关注小编,希望以后我们一起成长!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)