首页 > 数据库 >SQL数据分析 | 经验分享淘宝用户分析!

SQL数据分析 | 经验分享淘宝用户分析!

时间:2023-09-22 11:32:07浏览次数:42  
标签:数据分析 购买率 行为 SQL 用户 购物车 购买 淘宝 数据

SQL也能做分析?当然!

常见的数据清洗,预处理,数据分类,数据筛选,分类汇总,以及数据透视等操作,用SQL一样可以实现(除了可视化,需要放到Excel里呈现)。SQL不仅可以从数据库中读取数据,还能通过不同的SQL函数语句直接返回所需要的结果,从而大大提高了自己在客户端应用程序中计算的效率。


但是,这个过程需要很熟练掌握SQL!


本文就利用提取MySQL的数据,通过写SQL的数据处理方式,来对一份淘宝数据进行用户分析。


01

数据来源及说明



本文从数据集中选取2014年11月18日至12月18日之间,8477名随机用户共1048575条行为数据(感兴趣的小伙伴们可以拿近几年的数据练手),数据集的每一行表示一条用户行为,共6列。


列字段包含以下:



user_id:用户身份
item_id:商品ID
behavior_type:用户行为类型(包含点击、收藏、加购物车、购买四种行为,分别用数字1、2、3、4表示)
user_geohash:地理位置(有空值)
item_category:品类ID(商品所属的品类)
time:用户行为发生的时间


02

提出问题



1. 整体用户的购物情况

pv(总访问量)、日均访问量、uv(用户总数)、有购买行为的用户数量、用户的购物情况、复购率分别是多少?

2. 用户行为转化漏斗

点击— 加购物车— 收藏— 购买各环节转化率如何?购物车遗弃率是多少,如何提高?

3. 购买率高和购买率为 0 的人群有什么特征

4. 基于时间维度了解用户的行为习惯

5. 基于RFM模型的用户分析


03

数据清洗



1. 导入数据

由于数据量有100多万,通过数据库管理工具 Navicat 将数据集导入 MySQL 数据库会表较慢,我这里使用ETL工具kettle进行导数,能够提高导数效率,也方便后续实现报表自动化处理,数据库的表名为user。


SQL数据分析 | 经验分享淘宝用户分析!_SQL


2. 缺失值处理

item_category 列表示地理位置信息,由于数据存在大量空值,且位置信息被加密处理,难以研究,因此后续不对item_category列进行分析。


SQL数据分析 | 经验分享淘宝用户分析!_数据_02


3. 数据一致化处理

由于 time 字段的时间包含(年-月-日)和小时,为了方便分析,将该字段分成 2 个字段,一个日期列(date)和一个小时列(time)。


{!-- PGC_COLUMN --}


SQL数据分析 | 经验分享淘宝用户分析!_数据_03


由于 behavior_type 列的四种行为类型分别用 1,2,3,4 表示点击、收藏、加购物车、购买四种行为,为了方便查看数据,将1,2,3,4替换为 ‘pv'、’fav‘,’cart',‘buy' 。


SQL数据分析 | 经验分享淘宝用户分析!_数据_04


通过查询表结构,可以看到 date 列日期列不是日期类型:

SQL数据分析 | 经验分享淘宝用户分析!_SQL_05


将date 列改成 date 类型:

SQL数据分析 | 经验分享淘宝用户分析!_SQL_06


04

构建模型和分析问题



1. 总体用户购物情况

  • pv(总访问量)
  • SQL数据分析 | 经验分享淘宝用户分析!_SQL_07

  • 日均访问量
  • SQL数据分析 | 经验分享淘宝用户分析!_SQL_08

  • uv(用户总数)
  • SQL数据分析 | 经验分享淘宝用户分析!_数据_09

  • 有购买行为的用户数量
  • SQL数据分析 | 经验分享淘宝用户分析!_数据集_10

  • 用户的购物情况
  • SQL数据分析 | 经验分享淘宝用户分析!_SQL_11

  • 复购率:产生两次或两次以上购买的用户占购买用户的比例
  • SQL数据分析 | 经验分享淘宝用户分析!_数据_12

2. 用户行为转化漏斗

在购物环节中收藏和加入购物车两个环节没有先后之分,所以将这两个环节可以放在一起作为购物环节的一步。最终得到用户购物行为各环节转化率,如下:


SQL数据分析 | 经验分享淘宝用户分析!_数据_13

SQL数据分析 | 经验分享淘宝用户分析!_数据_14

SQL数据分析 | 经验分享淘宝用户分析!_数据_15

不同的行业转化率会有差异,据2012年的一项研究表明,在整个互联网范围内,平均转化率为2.13%(数据来源于《精益数据分析》),图中所示购买行为的转化率为1.04%,与行业平均值存在较大差异,淘宝移动端用户行为的转化率还有很大的增长空间。


3. 购买率高和购买率为低的人群有什么特征

购买率高用户特征:


SQL数据分析 | 经验分享淘宝用户分析!_SQL_16

SQL数据分析 | 经验分享淘宝用户分析!_数据集_17

由以上结果可以看出,购买率高的用户点击率反而不是最多的,这些用户收藏数和加购物车的次数也很少,一般不点击超过5次就直接购买,由此可以推断出这些用户为理智型消费者,有明确的购物目标,属于缺啥买啥型,很少会被店家广告或促销吸引。


购买率为低用户特征:

SQL数据分析 | 经验分享淘宝用户分析!_数据集_18


由以上结果可以看出,购买率为低用户分为两类,

第一类是点击次数少的,一方面的原因是这类用户可能是不太会购物或者不喜欢上网的用户,可以加以引导,另一方面是从商品的角度考虑,是否商品定价过高或设计不合理;


第二类用户是点击率高、收藏或加购物车也多的用户,此类用户可能正为商家的促销活动做准备,下单欲望较少且自制力较强,思虑多或者不会支付,购物难度较大。


4. 基于时间维度了解用户的行为习惯

(1)一天中用户的活跃时段分布


SQL数据分析 | 经验分享淘宝用户分析!_数据_19

SQL数据分析 | 经验分享淘宝用户分析!_数据集_20


可以看出,每日0点到5点用户活跃度快速降低,降到一天中的活跃量最低值,6点到10点用户活跃度快速上升,10点到18点用户活跃度较平稳,17点到23点用户活跃度快速上升,达到一天中的最高值。


(2)一周中用户活跃时段分布

由于第一周和第五周的数据不全,因此这两周的数据不考虑到此次数据分析中。


SQL数据分析 | 经验分享淘宝用户分析!_SQL_21

SQL数据分析 | 经验分享淘宝用户分析!_数据集_22


由以上结果可以看出,每周用户活跃度较稳定,每周五活跃度会有小幅降低,但是周末会慢慢回升。其中周五用户活跃度突增,这是由双十二电商大促销活动引起。


5. 基于 RFM 模型找出有价值的用户


RFM模型是衡量客户价值和客户创利能力的重要工具和手段,其中由3个要素构成了数据分析最好的指标,分别是:


  • R-Recency(最近一次购买时间)
  • F-Frequency(消费频率)
  • M-Money(消费金额)


由于数据源没有相关的金额数据,暂且通过 R 和 F 的数据对客户价值进行打分。


(1)计算R-Recency

由于数据集包含的时间是从2014年11月18日至2014年12月18日,这里选取2014年12月19日作为计算日期,统计客户最近发生购买行为的日期距离2014年12月19日间隔几天,再对间隔时间进行排名,间隔天数越少,客户价值越大,排名越靠前。


SQL数据分析 | 经验分享淘宝用户分析!_SQL_23


(2)计算F-Frequency

先统计每位用户的购买频率,再对购买频率进行排名,频率越大,客户价值越大,排名越靠前。

SQL数据分析 | 经验分享淘宝用户分析!_数据_24


(3)对用户进行评分

对4330名有购买行为的用户按照排名进行分组,共划分为四组,对排在前四分之一的用户打4分,排在前四分之一到四分之二(即二分之一)的用户打3分,排在前四分之二到前四分之三的用户打2分,剩余的用户打1分,按照这个规则分别对用户时间间隔排名打分和购买频率排名打分,最后把两个分数合并在一起作为该名用户的最终评分。


计算脚本如下:


'''
SELECT r.user_id,r.recent,r.recent_rank,f.frequency,f.freq_rank,
CONCAT(  --  对客户购买行为的日期排名和频率排名进行打分
CASE WHEN r.recent_rank <= (4330/4) THEN '4'
WHEN r.recent_rank > (4330/4) AND r.recent_rank <= (4330/2) THEN '3'
WHEN r.recent_rank > (4330/2) AND r.recent_rank <= (4330/43) THEN '2'
ELSE '1' END,
CASE WHEN f.freq_rank <= (4330/4) THEN '4'
WHEN f.freq_rank > (4330/4) AND f.freq_rank <= (4330/2) THEN '3'
WHEN f.freq_rank > (4330/2) AND f.freq_rank <= (4330/43) THEN '2'
ELSE '1' END
) AS user_value
FROM
--  对每位用户最近发生购买行为的间隔时间进行排名(间隔天数越少,客户价值越大)
(SELECT a.,(@rank := @rank + 1) AS recent_rank
FROM  --  统计客户最近发生购买行为的日期距离'2014-12-19'间隔几天
(SELECT user_id,DATEDIFF('2014-12-19',MAX(date)) AS recent
FROM user
WHERE behavior_type = 'buy'
GROUP BY user_id
ORDER BY recent) AS a,
(SELECT @rank := 0) AS b)
AS r,
-- 对每位用户的购买频率进行排名(频率越大,客户价值越大)
(SELECT a.,(@rank2 := @rank2 + 1) AS freq_rank
FROM   --  统计每位用户的购买频率
(SELECT user_id,COUNT(behavior_type) AS frequency
FROM user
WHERE behavior_type = 'buy'
GROUP BY user_id
ORDER BY frequency DESC) AS a,
(SELECT @rank2 := 0) AS b)
AS f
WHERE r.user_id = f.user_id;
'''

SQL数据分析 | 经验分享淘宝用户分析!_数据_25


通过打分可以了解每位顾客的特性,从而实现差异化营销。比如对于 user_value = 44 的用户,为重点用户需要关注;对于user_value = 41 这类忠诚度高而购买能力不足的,可以可以适当给点折扣或捆绑销售来增加用户的购买频率。


(4)kettle制作报表自动化


为了实现监测每个月用户的评分变化,推测客户消费的异动状况,结合数据库使用ETL工具kettle实现定时输出评分结果:

SQL数据分析 | 经验分享淘宝用户分析!_数据集_26


这里kettle实现过程不做详细描述。


05

结 论



1. 总体转化率只有 1%,用户点击后收藏和加购物车的转化率在 5% ,需要提高用户的购买意愿,可通过活动促销、精准营销等方式。


2. 购买率高且点击量少的用户属于理智型购物者,有明确购物目标,受促销和广告影响少;而购买率低的用户可以认为是等待型或克制型用户群体,下单欲望较少且自制力较强,购物难度较大。


3. 大部分用户的主要活跃时间在10点到23点,在19点到23点达到一天的顶峰。每周五的活跃度有所下降,但周末开始回升。可以根据用户的活跃时间段精准推送商家的折扣优惠或促销活动,提高购买率。


4. 通过 R 和 F 的数据对用户行为进行打分,对每位用户进行精准化营销,还可以通过对R 和 F 的数据监测,推测客户消费的异动状况,挽回流失客户。


以上,就是整个淘宝用户分析实操的过程。

标签:数据分析,购买率,行为,SQL,用户,购物车,购买,淘宝,数据
From: https://blog.51cto.com/u_15979955/7563315

相关文章

  • 中国核动力研究设计院使用 DolphinDB 替换 MySQL 实时监控仪表
    随着仪表测点的大幅增多和采样频率的增加,中国核动力研究设计院仪控团队原本基于MySQL搭建的旧系统已经无法满足大量数据并发写入、实时查询和聚合计算的需求。他们在研究DB-Engines时序数据库榜单时了解到国内排名第一的DolphinDB。经过测试,发现其非常符合业务需求,并且在2022......
  • SQL转义字符和通配符
    1.使用  ESCAPE  关键字,定义转义符。在模式中,当转义符置于通配符之前时,该通配符就解释为普通字符。例如,要搜索在任意位置包含字符串  5%  的字符串,请使用:    WHERE  ColumnA  LIKE  '%5/%%'  ESCAPE  '/' 2.ESCAPE  'escape_character'  ......
  • mysql 5.7在线开启/关闭GTID【转】
    一、在线开启gtid步骤步骤1到步骤5在每个mysql节点都执行,不可以单独某个库独立做完所有步骤再去操作其他节点;尤其注意不能先将主库打开gtid,从库任何参数不设置,这样将导致同步中断。1、检查数据库中是否有不支持gtid的操作设置ENFORCE_GTID_CONSISTENCY=WARN,运行一段时间,最好包......
  • MySQL备份与恢复
    数据库备份的分类数据备份的重要性备份的主要目的是灾难恢复在生产环境中,数据的安全性至关重要任何数据的丢失都可能产生严重的后果任何数据丢失的原因程序错误人为操作错误运算错误磁盘故障灾难(如火宅、地震)个盗窃从物理与逻辑的角度,备份可分为物理备份:对......
  • MySQL数据库管理
    目录数据库的基本概念数据库的发展主流的数据库介绍MySQL安装方法操作MySQL查看数据库结构SQL语句创建及删除数据库和表修改表名和表结构数据表高级操作数据库用户管理数据库用户授权数据库的基本概念数据描述事物的符号记录包括数字,文字、图形、图像、声音、档案记录等以......
  • 操作mysql
    importpymysqlimportpandasaspdconnection=pymysql.connect( host='127.0.0.1', #服务器ip地址 port=3306, #mysql默认端口号 user="root", #用户名 password="123456", #密码 charset="utf8",#字符集 db="new_dev......
  • Mysql忘记密码后如何重置密码
    长时间不使用本机的Mysql后把密码忘记了咋整?直接上干货:第一步(Mysql部署的位置,若自己能找到就忽略这一步):任务管理器中也可以找到第二步:修改配置文件在my.ini末尾加上 skip-grant-tables=1(这一句是为了忽略数据库密码)第三步:重启数据库服务并重置数据库密码(先用管理员模式......
  • postgresql主从复制状态检查
    确定主从库方法一ps-ef|grep"wal"|grep-v"grep如果输出walsender…streaming进程说明当前数据库为主库如果输出walreceiverstreaing进程说明当前数据库为备用库方法二select*frompg_stat_replication;在主库上查询pg_stat_replication视图,如果返回记录说明是主库,备库上......
  • MySQL主从原理及常见架构介绍
    主从概述MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群架构的基础。它通过将一台主机的数据复制到其他一台或者多台主机上,并重新应用日志(relaylog)中的SQL语句来实现复制功能。MySQL支持单向、双向、链式级联、异步复制,5.5版本之后加入的半同步复制,5.6版本之后......
  • 关于mysql安装过程中的密码设置问题
    在使用setpassword=password("0000000000");更改密码时出现的ERROR1064(42000):YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear'password("0000000000")......