淘宝用户数据分析
1 分析背景与意义
淘宝网是中国深受欢迎的网购零售平台,拥有近5亿的注册用户数,每天有超过6000万的固定访客,同时每天的在线商品数已经超过了8亿件,平均每分钟售出4.8万件商品。
用户行为分析则是电商平台的重要事务,通过对用户行为的分析,有助于企业根据用户的行为习惯,找出网站、推广渠道等企业营销环境存在的问题,从而让企业的营销更加精准、有效,提升企业的广告收益。
2 分析思路
针对数据集中的用户、商品、商品种类、用户行为、时间等信息,使用Python对数据进行切片分类汇总等多种数据分析手段,从不同角度挖掘蕴含的价值。本次通过以下四个方向探索淘宝用户行为:
3 分析内容
3.1 提出问题
本次通过对淘宝用户行为数据分析,期望解决以下业务问题:
1) 用户从浏览到最终购买整个过程的流失情况,确定夹点位置。
2) 找出用户最活跃的日期以及活跃时间段,了解用户的行为时间模式。
3) 找出最具价值的核心付费用户群。
4) 找出最受用户青睐的产品。
3.2 理解数据
数据集:UserBehavior.csv。本次报告随机采集了在2017年11月25日至2017年12月3日之间,淘宝用户的行为,其中行为包括浏览、加购物车、收藏、购买等。数据集主要包含:用户数量约3万(37,376),商品数量约9万(930,607),商品类目数量7106以及总的淘宝用户行为记录数量为3百万(3,835,329)。
数据来源:https://tianchi.aliyun.com/dataset/dataDetail?dataId=649&userId=1
字段含义:
列名称 | 说明 |
---|---|
User ID | 整数类型,序列化后的用户ID |
Item ID | 整数类型,序列化后的商品ID |
Category ID | 整数类型,序列化后的商品所属类目ID |
Behavior type | 字符串,枚举类型,包括(‘pv’, ‘buy’, ‘cart’, ‘fav’) |
Timestamp | 行为发生的时间戳 |
用户行为类型共有四种,它们分别是:
行为类型 | 说明 |
---|---|
pv | 商品详情页pv,等价于点击 |
buy | 商品购买 |
cart | 将商品加入购物车 |
fav | 收藏商品 |
3.3 数据清洗
3.3.1 数据导入
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
path = './data/UserBehavior.csv'
data_user = pd.read_csv(path)
cols = ['UserID', 'ItemID', 'CatogoryID', 'BehaviorType', 'TimeStamps']
data_user.columns = cols
data_user.head()
3.3.2 缺失值分析
data_user.apply(lambda x: sum(x.isnull()))
仅一条数据含有缺失值,删除即可。
3.3.3 选取时间范围
import time
def get_unixtime(timeStr):
formatStr = "%Y-%m-%d %H:%M:%S"
tmObject = time.strptime(timeStr, formatStr)
tmStamp = time.mktime(tmObject)
return int(tmStamp)
# 数据集描述的时间范围
startTime = get_unixtime("2017-11-25 00:00:00")
endTime = get_unixtime("2017-12-3 23:59:59")
# 筛选出符合时间范围的数据
data_user['TimeStamps'] = data_user['TimeStamps'].astype('int64')
data_user = data_user.loc[(data_user['TimeStamps'] >= startTime) & (data_user['TimeStamps'] <= endTime)]
3.3.4 时间格式处理
#时间处理
data_user['time'] = data_user['TimeStamps'].apply(lambda t: time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(t)))
data_user['date'] = data_user['time'].str[0:10]
data_user['hour'] = data_user['time'].str[11:13].astype(int)
data_user['date'] = pd.to_datetime(data_user['date'])
data_user.head()
3.4 构建模型
3.4.1 用户行为转化(AARRR模型)
跳失率计算:
跳失率 = 只浏览一个页面就离开的访问次数 / 该页面的全部访问次数
结果显示只有点击行为没有收藏、加购物车以及购买行为的总用户数是2196,除以总用户数37376得到跳失率为5.88%。说明用户对商品详情页的关注很大,商品详情页的商品描述,细节等吸引点不足,是流失用户的的重要原因之一。具体造成用户在浏览商品详情页后流失的原因,要根据实际情况分析,建议可以采用在线问卷调查的方式get用户的痛点,针对性调整。
日ARPPU计算:
ARPPU全称为Average Revenue Per Paying User,也就是每付费用户平均收益。这个指标考核的是某时间段内平均每个付费用户为应用创造的收入。在用户数量上,ARPPU只考虑某一时间段内的付费用户,而非该时间段内所有的活跃用户。
对于同一时间的同一应用而言,ARPPU的数值会明显高于ARPU。
ARPPU能够反映付费用户为你的应用带来了多少收益,显示出一个忠诚付费用户实际上愿意支付的金额。同时,这个指标也可以显示用户对一些付费项目的反应。
data_user_buy1 = data_user[data_user.BehaviorType == 'buy'].groupby(['date','UserID']).count()['BehaviorType'].reset_index().rename(columns=