淘宝用户行为分析

联想到如今互联网保险发展的如火如荼,有别于传统的个险系列,互联网保险在产品结构,用户获取和营销转化上呈现了非常大的不同,传统个险经验管理的KPI体系已经不适用于互联网保险,遂将互联网保险看作是电商这个大领域,学习了一下电商领域的KPI体系
电商KPI
正好也看到天池上有一个淘宝APP的用户行为数据,要求预测用户下一天的商品购买行为,遂拿来学习一下用户的行为分析并尝试进行建模预测,这一部分进行用户行为,目标:

  1. 分析用户从浏览到购买整个过程中,确定各个环节的流失率,确定问题环节
  2. 在研究的时间段里找出用户活跃规律,了解用户的行为时间模式
  3. 找到用户对不同种类商品的偏好,找到针对不同商品的营销策略
  4. 找出最具有价值的核心付费用户群,并且统计出这些用户购买的产品以及类目
    (可以针对性推送相应产品的销售折扣)

认识数据

数据为淘宝APP的用户行为,日期为2014年11月18日至2014年12月18日之间,数据链接:https://tianchi.aliyun.com/dataset/dataDetail?dataId=46,有两个数据集,一个用户数据集,一个商品数据集

先来看看字段意思
用户数据集
商品数据集
本来是用python做的,后来的觉得这部分研究可视化比较多就改为了Tableau
以下部分python研究的代码

# -*- coding:utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from pylab import *
from matplotlib.font_manager import _rebuild
mpl.rcParams['font.family'] = ['Arial Unicode MS']
mpl.rcParams['axes.unicode_minus'] = False
pd.set_option('display.max_columns', 200)
pd.set_option('display.max_rows', 1000)
data = pd.read_csv(
    '/Users/shaling/Documents/GitHub/淘宝用户行为分析/tianchi_mobile_recommend_train_user.csv')
# 查看数据大致情况
print(data.shape)
print(data.info())
print(data.head())
print(data.isnull().any())
print(data.isnull().sum())
print(data.isnull().sum() / data.shape[0])  # 地址位置缺失严重,放弃分析地理位置
# 将时间拆为日期和小时
data['date'] = pd.to_datetime(data.time.apply(lambda x: x.split(' ')[0]))
data['hour'] = data.time.apply(lambda x: x.split(' ')[1])
# 删除time列和地理位置列
data.drop(['user_geohash', 'time'], axis=1, inplace=True)
print(data.info())
print(data.groupby(['behavior_type']).count())
print(data.drop_duplicates(['user_id', 'date']).count())
buy_user = data[data['behavior_type'] == 4]['user_id']  # 购买者
# 复购率
twbuy_user = buy_user[buy_user.duplicated()]  # 两次以上购买者
print('复购率为:', len(set(twbuy_user)) / len(set(buy_user)))

# 周PV
data['day'] = data.date.apply(lambda x: x.weekday()) + 1
import matplotlib.pyplot as plt
df = data.groupby(['day']).count()
fig = plt.figure(figsize=(20, 10))
plt.plot(df.index, df['user_id'])
plt.xlabel('星期')
plt.ylabel('访问次数')
# 日PV
import matplotlib.dates as mdate
df1 = data.groupby(['date']).count()
fig = plt.figure(figsize=(30, 15))
ax1 = plt.subplot(111)
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y%m%d'))
plt.plot(df1.index, df1.user_id, axes=ax1)
plt.xticks(pd.date_range(
    df1.index[0], df1.index[-1], freq='D'), rotation=45, fontsize=15)
plt.yticks(fontsize=15)
# 日UV
df2 = data.groupby(['date'])['user_id'].nunique()
fig = plt.figure(figsize=(20, 10))
ax1 = plt.subplot(111)
ax1.xaxis.set_major_formatter(mdate.DateFormatter('%Y%m%d'))
plt.plot(df2.index, df2, axes=ax1)
plt.xticks(pd.date_range(
    df2.index[0], df2.index[-1], freq='D'), rotation=45, fontsize=15)
plt.yticks(fontsize=16)
plt.title('日UV')
# 一天内PV
df3 = data.groupby(['hour']).count()
fig = plt.figure(figsize=(20, 15))
plt.plot(df3.index, df3.user_id)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)

# 转化率
pv_count = data[data['behavior_type'] == 1]['user_id'].count()
collect_count = data[data['behavior_type'] == 2]['user_id'].count()
cart_count = data[data['behavior_type'] == 3]['user_id'].count()
buy_count = data[data['behavior_type'] == 4]['user_id'].count()
cc_count = collect_count + cart_count
df_behavior = pd.DataFrame({'环节': ['Pv', 'CC', 'Buy'], '人数': [
                           pv_count, cc_count, buy_count]})
print(df_behavior)


def divide_single(s):
    lst = []
    for i in range(len(s)):
        if i == 0:
            num = 1
            lst.append(num)
        else:
            num = s[i] / s[i - 1]
            lst.append(num)
    return lst


df_behavior['单环节转化率'] = divide_single(df_behavior['人数'])


def divide(s):
    lst = []
    for i in range(len(s)):
        num = s[i] / s[0]
        lst.append(num)
    return lst


df_behavior['总体转化率'] = divide(df_behavior['人数'])
print(df_behavior)
# 漏斗图
from pyecharts import Funnel
attrs = df_behavior['环节'].tolist()
attr_value = (np.array(df_behavior['总体转化率'] * 100)).tolist()

funnel1 = Funnel("总体转化漏斗图", width=800, height=600, title_pos='center')
funnel1.add(name='商品交易环节',
            attr=attrs,
            value=attr_value,
            is_label_show=True,
            label_formatter='{d}%',
            label_pos="inside",
            legend_orient='vertical',
            legend_pos='left',
            is_legend_show=True)
funnel1.render()
plt.show()

也不得不说Tableau在可视化方面真是方便的不行

日均PV
很明显12月12日的无论是浏览还是购买都比平日高出不少,自然是因为双十二的大型促销活动导致的(这里有一个困难没有解决,就是浏览数与其他类别差距太大导致度量值不适合反应其他类别,想建立双轴坐标来解决,但是筛选器没法单独对单个轴筛选,各种方法都试过还是不行,在官网查了一下才知道目前没有很好的方法解决对双轴中对单个度量的筛选)
每日PV
日内PV
可以看到一天中从6:00-13:00浏览量是持续上升的,晚上21:00-22:00达到一天中的顶峰之后不开始下降,因此一些要与用户产生互动的营销活动可以考虑这几个活跃的时间段
日内PV
一周的PV
(还是那个问题,无法单独对单个轴进行筛选导致收藏、加购物车、支付不能使用另外一个刻度的轴)可以看到一周中周四是浏览量最高的,猜想是2014年12月12日是周五导致的这一现象,因为活动是零点活动,所以前一天周四会产生大量的浏览,一周中周六浏览量是最低的,周日开始回升
周PV
再贴一张,明显可以看到周四收藏和加购物车达到顶峰,周五支付顶峰,就是双十二的原因
在这里插入图片描述
日UV
可以发现用户数载双十二之前一致都是平稳的,到12月12日才突然升高
日UV
操作单步转化率
因为收藏和加入购物车并没有前后逻辑关系,所以放在一起作为一个环节,可以发现浏览到收藏和购物车的转化率仅有5.1%,而收藏和加购物车到支付转化率为20.5%,不排除有部分用户是直接浏览支付的,但从浏览到加入购物车和收藏环节仍需要提升
漏斗图
再看看用户转化情况,可以看出用户支付转化率达到89%,还是非常高的
用户转化
再看看转化的用户质量,复购率也相当高
复购
下图是订单量及客单数,可以看到订单量和客单数一直是平稳的,维持在4K和2.3单/客左右,在12月12日骤然升高,达到15K单,客单数也上升到4
订单及客单变化
那么我们看看双十二当天的订单量结构,1单的占比34%,2-4单占绝大多数40%

双十二订单结构

购买前十商品
购买前十
加入购物车前十商品
在这里插入图片描述
收藏前十商品
在这里插入图片描述

浏览前十名商品
浏览量第一的商品都没有出现在收藏,购物车或者支付环节的前十中,说明活动推荐的商品并没有很好的转化
在这里插入图片描述
客户价值划分
这里使用RFM模型,等级划分也使用常用的1-5来标记
R=Recency距离最近一次交易的时间:用来代表客户粘性,分5、4、3、2、1,五个等级,5代表最后一次交易距离当前时间进、1代表最后一次交易距离当前时间远
F=Frequency交易频率:用来代表客户忠诚度,分5、4、3、2、1,五个等级,5代表交易次数/频率大客户忠诚度高、1代表交易次数/频率小客户忠诚度低
M=Monetary交易金额:用户代表客户贡献的收入,分5、4、3、2、1,五个等级,5代表交易金额大、1代表交易小

RFM三个维度、每个维度有五个值,本文把客户分为重要、中等、一般三层,每层4种,共划分为12类客户群体,如下:
在这里插入图片描述

等级划分如下:
R=Recency距离最近一次交易的时间
5天:5
10天:4
15天:3
20天:2
其它:1

F=Frequency交易频率/次数
<=1次:1
1<至<=4次:2
4<至<=9次:3
9<至<=15次:4
15次以上:5

由于数据缺少M值,这里仅用RF值作为参考
在这里插入图片描述
过程如下:
1、根据下单建立最近一次购物的时间,然后计算出离12月19日的天数
在这里插入图片描述
在这里插入图片描述

再创建R评分
在这里插入图片描述

F值同理,创建购物次数
在这里插入图片描述
计算F评分
在这里插入图片描述
然后再筛选出RF均为5的客户,共有1952名
在这里插入图片描述
进而可以将此部分用户建立集然后查询一下这部分用户收藏了哪些商品
在这里插入图片描述

RFM模型
建立RF维度
在这里插入图片描述
重要价值客户占比38%,比率还是很高的
在这里插入图片描述

以上为用户行为部分的分析,第二部分再建立特征进行预测。
待续

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值