淘宝平台用户行为分析

淘宝平台用户行为分析

一、项目背景

随着电子商务的迅速发展,淘宝、京东等电商平台的用户基数也是在迅速扩大,同时用户的交易也是越来越频繁,这使得交易平台上每时每刻都会产生海量的数据,而挖掘这些数据背后的价值,分析数据中隐含的规律,为商家提供针对性的建议,帮助商家扩大销售、提高利润,是一个数据分析师必要的职责。本文通过SQL对淘宝平台用户的行为数据进行数据分析,以期发现淘宝平台用户的一些消费规律,为商家提出可行性的建议。

二、提出问题

本文通过产品、用户行为、用户价值三个维度提出研究问题:

(1)哪些品类产品更受用户偏爱,用户的偏好性是否一致,如果不一致是什么原因导致的;

(2)用户的活跃程度有什么特征,用户不同行为间的转化率如何;

(3)根据用户消费行为确定用户价值

三、分析思路及内容

本文分析内容主要分为三个部分:

(1)利用MySQL数据库工具,选取浏览量前十和购买量前十的产品品类,分析用户对哪些产品品类更为喜爱,同时假设检验法来检验用户对产品品类的偏好是否一致,即高浏览量品类和高购买量品类是否相同。

(2)利用时间序列分析法去分析用户行为在不同时间类型中的特点,同时通过构建漏斗转化模型分析用户不同行为间的转化率。

(3)依据用户消费行为分析,构建RFM用户价值模型,对用户进行分类。

四、数据说明

本文数据来自阿里天池,User Behavior Data on Taobao App数据集,数据集记录了不同用户在2017年11月25日至2017年12月3日之间的消费行为,其中数据集各字段含义如下:

用户ID(user_id):序列化后的用户ID,整数类型

商品ID(item_id):序列化后的商品ID,整数类型

商品品类ID(category_id):序列化后的商品所属类目ID,整数类型

行为类型(behavior_id):字符串,包括四种类型,分别是‘‘pv’’(商品详情页浏览行为)、‘‘fav’’(收藏商品行为)、‘‘cart’’(加入购物车行为)、‘‘buy’’(商品购买行为)

时间戳:行为发生的时间戳,整数类型

整个数据集中,用户数量有接近100万个(987,994),商品数量约有416万(4162,024),商品类目数量接近1万种(9,439),全部用户行为数据超过1亿条(100,150,807)。

五、数据处理

原数据集中数据量过大,受限于性能,因此截取前100万条数据作为分析样本导入MySQL数据库中,并将样本数据表命名为sample_ub。

5.1检查是否有缺失项

利用SQL查询语言:

SELECT

       COUNT( user_id ),

       COUNT( item_id ),

       COUNT( category_id ),

       COUNT( behavior_id ),

       COUNT( `timestamp` )

FROM

       sample_ub;

检查各字段是否有缺失值,查询结果如下:

可以看出各字段中没有缺失值。

5.2检查是否有重复项

利用SQL查询语言:

SELECT *

FROM sample_ub

GROUP BY user_id,,item_id,,`timestamp`

HAVING COUNT( user_id )>1

将user_id,item_id,timestamp三个字段组合起来,查询数据集中是否存在重复值。


可以看出原数据集中不存在重复值。

5.3转换时间数据

原数据集中时间数据是以时间戳形式保存的,本文通过SQL中的FROM_UNIXTIME函数进行数据格式转化,SQL查询语言如下:

UPDATE sample_ub

SET date=FROM_UNIXTIME(`timestamp`,'%Y-%m-%d'),

time=FROM_UNIXTIME(`timestamp`,'%k:%i:%s'),

weekday=FROM_UNIXTIME(`timestamp`,'%a')

原数据表更新为:

5.4查询异常值

根据原数据集的介绍,数据时间范围是2017年11月25日至2017年12月3日之间,在这个时间段之外的数据都应该视为异常数据,进行删除。

通过如下SQL查询语言:

SELECT

       COUNT(*)

FROM

       sample_ub

WHERE

       date < '2017-11-25' ORdate > '2017-12-03'

发现异常数据470条。


通过SQL查询语句删除:

DELETE

FROM sample_ub

WHERE date < '2017-11-25' OR date > '2017-12-03'

5.6查看数据情况

通过如下SQL语句查询各字段样本数量:

SELECT

       COUNT( DISTINCT user_id )AS用户数,

       COUNT( DISTINCT item_id )AS商品数量,

       COUNT( DISTINCT category_id) AS商品品类数量,

       SUM( CASE WHEN behavior_id= 'pv' THEN 1 ELSE 0 END ) AS浏览次数,

       SUM( CASE WHEN behavior_id= 'fav' THEN 1 ELSE 0 END ) AS收藏次数,

       SUM( CASE WHEN behavior_id= 'cart' THEN 1 ELSE 0 END ) AS加入购物车次数,

       SUM( CASE WHEN behavior_id= 'buy' THEN 1 ELSE 0 END ) AS购买次数,

       COUNT(*) AS数据总量

FROM

       sample_ub

查询结果如下:

六、产品维度数据分析

在产品维度分析中,我们先分别选出浏览量前十和购买量前十的商品品类,之后再验证用户偏好是否一致。

6.1高浏览量商品品类

通过如下SQL语句查询浏览量前十的商品品类:


SELECT

       category_id,

       behavior_id,

       COUNT(*)

FROM

       sample_ub

WHERE

       behavior_id = 'pv'

GROUP BY

       category_id

ORDER BY

       COUNT(*) DESC

       LIMIT 10


从图表中可以看出用户浏览次数前十的商品品类分别为:4756105、4145813、2355072、3607361、982926、2520377、4801426、1320293、2465336、3002561。

6.2购买量前十的商品品类

通过如下SQL语句查询购买量前十的商品品类:

SELECT

       category_id,

       behavior_id,

       COUNT(*)

FROM

       sample_ub

WHERE

       behavior_id = 'buy'

GROUP BY

       category_id

ORDER BY

       COUNT(*) DESC

       LIMIT 10


从查询结果中可以看出,购买量排在前十的商品品类分别为:2735466、1464116、4145813、2885642、4801426、4756105、982926、1320293、2640118、3002561。

6.3检验用户偏好一致性

本文假设用户偏好是一致的,即浏览量高的商品品类与购买量高的商品品类应该一致。然而通过对比浏览量前十和购买量前十的商品品类,我们发现两者之间并不是非常一致,浏览量前十的商品品类只有6类排在购买量前十的名单里,其中排在浏览量名单第3、4、6、9的2355072、3607361、2520377、24653364类商品并没有排在购买量前十的名单中。另一方面,在浏览量排名前三位的商品品类4756105、4145813、2355072,在购买量前十排名中分别排在第6、3名,而2355072类商品的购买量没有排进前十,这进一步说明用户对商品的偏好不一致。

造成用户偏好出现分歧的主要原因可能是因为淘宝平台的商品推送机制不合理导致的。淘宝平台首页推送的大量商品吸引了大量的用户点击浏览,形成了巨大的商品浏览量,但是商品并不是用户满意的,因此很难转化成购买量。

七、用户行为分析

通过日期、星期、小时三种时间段分析用户行为的时间特征,同时构建用户漏斗转化模型分析用户不同行为间的转化率。

7.1用户行为的时间特征分析

通过SQL语句查询不同日期的用户活跃情况:

SELECT behavior_id,,date,,COUNT(*)

FROM sample_ub

GROUP BY date,,behavior_id

ORDER BY behavior_id,,date

注:由于浏览量数据和其他三个用户行为数据相差较大,因此把浏览量数据放入次级坐标轴

从图中可以看出浏览次数和加入购物车次数的变化趋势十分相似,在2017年11月25日到2017年12月3日间呈现下降-持平-上升的趋势,而加入收藏夹次数和购买次数则呈现出先持平,再上升的趋势。这可能是因为在此之前淘宝平台已经举办了“11.11”全平台性质的促销活动,用户的消费热情和消费需求得到了极大地释放,因此用户的浏览次数、加入购物车次数以及加入收藏夹次数均有不同程度地下降,用户的购物次数也处于一个持平的阶段,而进入12月之后,淘宝平台以及各个商家开始积极筹备“12.12”、圣诞节、元旦节等大型促销活动,前期的一些预热活动开始重新激发了用户的消费兴趣,因此用户的不同行为在12月1日之后均有了不同幅度的提升。

通过如下SQL语句查询用户行为在不同星期的特征:

SELECT behavior_id,weekday,COUNT(*)

FROM sample_ub

GROUP BY weekday,behavior_id

ORDER BYbehavior_id,FIELD(weekday,'Mon','Tue','Wed','Thu','Fir','Sat','Sun')


从图中可以看出,周一到周五用户的活跃程度较低,趋势平稳,而周六、周天,用户活跃程度有了巨大地提升,说明淘宝用户的消费行为主要集中在周末休息时间,用户将网上购物当做一种休闲放松的手段。

通过如下SQL语句查询不同时点的用户活跃程度:

SELECT behavior_id,`hour`,COUNT(*)

FROM sample_ub

GROUP BY behavior_id,`hour`

ORDER BY behavior_id,`hour`


从图中可以看出,每天的3点到6点用户活跃程度下降至最低点,从7点之后用户活跃程度开始上升,并维持在一个相对平稳的区间,18点之后用户活跃程度开始上升,在22到23点达到最高点,这基本与人们的作息工作时间相吻合,同时22点到23点用户活跃度达到一天中最高点也说明睡前刷淘宝已经成为用户的一种生活习惯。

7.2用户转化率分析

构建不同情况的用户消费行为模型:

(1)用户只是进行了浏览;

(2)用户浏览之后,添加了收藏夹或添加了购物车,但没有进行下单;

(3)用户浏览之后直接进行了下单;

(4)用户浏览之后,添加了收藏夹或添加了购物车,最后进行了下单


构建用户行为特征:

SELECT

       `sample_ub`.`user_id` AS `user_id`,

       `sample_ub`.`item_id` AS `item_id`,

       sum((CASE WHEN ( `sample_ub`.`behavior_id` = 'pv' ) THEN 1ELSE 0 END )) AS `PV`,

       sum((CASE WHEN ( `sample_ub`.`behavior_id` = 'fav' ) THEN 1ELSE 0 END )) AS `FAV`,

       sum((CASE WHEN ( `sample_ub`.`behavior_id` = 'cart' ) THEN 1ELSE 0 END )) AS`CART`,

       sum((CASE WHEN ( `sample_ub`.`behavior_id` = 'buy' ) THEN 1ELSE 0 END )) AS `BUY`

FROM `sample_ub`

GROUP BY `sample_ub`.`user_id`,`sample_ub`.`item_id`


计算用户行为总次数:

SELECT COUNT( user_id ) AS '用户行为总次数'

FROM user_feature

WHERE PV>0

[if !vml]

[endif]

查询结果表明用户行为总次数为707479次。

计算不同情况消费行为发生次数:

a.用户只进行了浏览

SELECT COUNT( user_id ) AS '只进行了浏览'

FROM user_feature

WHERE PV > 0 AND FAV = 0 AND CART = 0 AND BUY =0


查询结果表明,只进行了浏览的用户行为数为660800;

b.用户浏览之后,添加了收藏夹或添加了购物车,但没有进行下单

SELECT COUNT( user_id ) AS '浏览-添加收藏、购物车-没有下单'

FROM user_feature

WHERE (FAV > 0 OR CART > 0) AND PV>0 AND BUY=0


查询结果表明,进行了浏览,然后添加收藏或购物车,但最后没有下单的行为数有33681次

c.用户浏览之后直接进行了下单

SELECT COUNT( user_id ) AS '浏览-下单'

FROM user_feature

WHERE PV>0 AND FAV=0 AND CART=0 AND BUY>0


查询结果表明,浏览之后直接进行下单的行为数有9313次。

d. 用户浏览之后,添加了收藏夹或添加了购物车,最后进行了下单

SELECT COUNT( user_id ) AS '浏览-添加收藏、购物车-下单'

FROM user_feature

WHERE PV>0 AND (FAV>0 OR CART>0) AND BUY>0


各消费行为转化率如图所示:


可以看出浏览之后的用户流失率高达91.4%,绝大部分用户在进行了浏览之后就流失了,说明平台的商品推送机制仍需加强,应该尽可能地掌握用户的喜好,吸引用户进行下单。另一方面,用户在添加收藏或购物车之后,购买率有了明显地提升,从1.3%上升到9.9%,这说明添加收藏或购物车这一行为可以更好地提高用户的购买转化率,因此商家应该完善关于店铺收藏或者商品加购物车的促销推广活动,提高用户的购买率。

八、用户价值维度分析

8.1根据用户消费行为,构建RFM用户价值模型:


根据RFM模型建立用户分类表:


8.2查询时间间隔和消费频次,并划分价值高低

查询用户购买时间:

SELECT

       `sample_ub`.`user_id` AS`user_id`,

       `sample_ub`.`behavior_id`AS `behavior_id`,(

       to_days( '2017-12-03' ) -to_days( `sample_ub`.`date` )) AS `时间间隔`

FROM

       `sample_ub`

WHERE

       ( `sample_ub`.`behavior_id`= 'buy' )

GROUP BY

       `sample_ub`.`user_id`

ORDER BY

       (

       to_days( '2017-12-03' ) -to_days( `sample_ub`.`date` ))


查询结果表明,用户购买时间间隔最小为0天,最大为8天,根据模型定义,购买时间间隔越小,用户价值越大。因此,我们划分区间:0-4天,高价值用户;5-8天,低价值用户。

查询用户消费频次:

SELECT

       `user_feature`.`user_id` AS`user_id`,

       sum( `user_feature`.`BUY` )AS `消费频次`

FROM

       `user_feature`

WHERE

       ( `user_feature`.`BUY` >0 )

GROUP BY

       `user_feature`.`user_id`

ORDER BY  `消费频次`


查询结果表明,用户消费频次最高为72次,最低为1次,用户消费频次越高,价值越高,,因此我们划分区间:1-3次,低价值用户;3次以上,高价值用户。

8.3对用户进行分类

构建视图,将用户消费时间间隔和消费频次联结在一起:

SELECT

       `a`.`user_id` AS `user_id`,

       `a`.`时间间隔` AS `时间间隔`,

       `b`.`消费频次` AS `消费频次`

FROM

       (

              `recency` `a`

              JOIN `frequency` `b` ON ((

                     `a`.`user_id` =`b`.`user_id`

       )))


在这个视图的基础上,查询不同价值用户的数量:

SELECT A.`用户分类`,COUNT(*)

FROM (SELECT B.user_id,

(CASE WHEN B.R='高' AND B.F='高' THEN '价值用户'

WHEN B.R='高' AND B.F='低' THEN '发展用户'

WHEN B.R='低' AND B.F='高' THEN '保持用户'

WHEN B.R='低' AND B.F='低' THEN '挽留用户'

ELSE NULL

END) AS 用户分类

FROM (select `user_value`.`user_id` AS `user_id`,(case when

(`user_value`.`时间间隔` between 0 and 4) then '高' else '低' end) AS `R`,(case when (`user_value`.`消费频次`

between 1 and 3) then '低' else '高' end) AS `F` from `user_value`) AS B) AS A

GROUP BY A.`用户分类`



查询结构表明,用户主要集中在发展用户和挽留用户上,同时保持用户也占据了一部分比例。

发展用户主要特征是消费时间间隔短,但消费频次低,商家应该想办法提高这部分用户的消费频次,比如发放减免券、优惠券等,吸引用户进行多次消费。

挽留用户消费间隔长,消费频次低,有即将流失的危险,因此商家应该主动联系用户,推出一些老用户回归活动,吸引挽留用户重新消费。

保持用户属于消费频次高,但消费间隔较长的用户,这类用户一般属于忠实用户,商家应该积极利用邮件、短信等方式推送新品信息、促销信息,提高用户复购率。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352