1、项目简介
- 数据来源:
- 数据来源于天池数据集,数据为淘宝APP2014年11月18日至2014年12月18日的用户行为数据。
- 字段说明:
- user_id:用户身份,脱敏
- item_id:商品ID,脱敏
- behavior_type:用户行为类型(包含点击、收藏、加购物车、支付四种行为,对应数字1、2、3、4)
- user_geohash:地理位置
- item_category:品类ID(商品所属的品类)
- time:用户行为发生的时间
- 分析需求
- 监测行业流量指标:日PV、日UV,时段PV、时段UV
- 用户购买情况分析
- 用户行为漏斗分析
- 构建RFM模型,对用户群体分层
2、分析结论
2.1、流量指标:
- 平台用户流量指标整体稳步增长,双十二活动引流促销效果明显,
- 可双十二营销活动进行复盘总结,后续可结合更多节假日时机复制双十二活动,制造流量热点。
2.2、用户购买情况:
- 淘宝的付费用户忠诚度较高,有着较高的复购率和人均购买次数,但平台平时的成交量和付费率水平基本维持在24%左右。
- 18点到22点访问量有提升明显,并在21点和22点达到峰值,可在该时段对用户进行活动推送,提高商品曝光度,增加销量。
2.3、用户行为漏斗分析:
- 用户的点击转化率总体偏低,而收藏和加购转化率相对较高。
- 针对点击转化率的问题,一方面可以多举办限时促销活动,促使用户尽快下单,另一方面拓展站外流量来源,增加点击量;
- 在功能设计上,引导用户收藏和加购商品的功能,并在收藏和购物车页面配合提醒功能,以增加购买转化率。
2.4、RFM模型—用户群体分类:
- 重点价值用户是最重要的用户群体,但数量较少,只有464人。
- 其余类型的用户群体数量相当,均有2000人以上的规模。
需针对用户群体特点针对性采取运营措施。
重要价值用户:
- 重点关注,既要保持其粘性,又要继续引导消费,可为这类用户提供vip服务;
- 同时这类用户数量不多,需要对其他次要用户群体持续运营和挖掘才能增加重要价值用户的数量,增加平台营收;
重要发展用户:
- 通过加大促销活动提醒和优惠卷活动等提高其消费次数;
重要保持用户:
- 重新唤醒,通过app消息推送,以及站外广告营销吸引其注意力,促进复购;
重要挽留用户:
- 若不加以挽留,会有流失的可能;
- 一方面需要保持曝光量,持续推送活动和优惠信息;
- 另一方面需要进一步研究其兴趣和需求,才能采取有效的运营策略;
3、分析过程
3.1数据清洗
# 加载库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
import pyecharts as draw
import warnings
warnings.filterwarnings('ignore')
# 载入数据
data = pd.read_csv('淘宝用户行为.csv')
data.head()
# 查看数据基本信息
data.info()
# 删除重复值
data.drop_duplicates(inplace=True)
# 再次查看数据信息
data.info()
# 统计缺失值情况
data.isnull().sum()
只有用户地理信息有缺失值,且本次分析需求不涉及地区维度,故删除user_geohash
# 删除user_geohash
del data['user_geohash']
# 将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.reset_index(drop=True,inplace=True)
3.2、流量指标
1)、计算日均PV、日均UV计算
pv_daily=data[data.behavior_type==1].groupby('date').count()['user_id'].reset_index().rename