淘宝用户行为分析

前言

现在越来越多的线下转型到了线上经营,线下体验店线上购物将成为日后消费的大趋势。分析用户行为,走好转型之路,掌握先机快人一步。

文章目录

  • 前言
  • 一、背景
    • Ⅰ 数据来源
    • Ⅱ 数据背景
    • Ⅲ 分析目的
  • 二、探索性分析
    • Ⅰ 导入数据
    • Ⅱ 数据处理
      • 1、缺失值处理
      • 2、异常值处理
      • 3、重复值处理
  • 三、数据分析
    • Ⅰ 整体消费情况
      • 总访问量(PV)
      • 日均访问量
      • 用户总数(UV)
      • 购买用户数量及占总访问比
      • 用户购物行为
      • 复购率
    • Ⅱ 用户行为转化漏斗
    • Ⅲ 用户画像
      • 购买率高的用户特征画像
      • 购买率低的用户特征画像
    • Ⅳ 用户的行为习惯
      • 一天用户活跃分布
      • 一周中用户活跃时段分布
  • 四、结论

一、背景

Ⅰ 数据来源

数据来源于阿里池公共数据集,搜索userbehavior就可出来。

Ⅱ 数据背景

本次数据分析从数据集中选取包含了2014年11月18日至2014年12月18日之间,10000名随机用户共12256906条行为数据,数据集的每一行表示一条用户行为,共6列。
列字段包含以下:
user_id:用户身份
item_id:商品ID
behavior_type:用户行为类型(包含点击、收藏、加购物车、购买四种行为,分别用数字1、2、3、4表示)
user_geohash:地理位置(有空值)
item_category:品类ID(商品所属的品类)
time:用户行为发生的时间
PS:我在建表的时候根据自己的使用习惯设置了列名。

Ⅲ 分析目的

1

二、探索性分析

Ⅰ 导入数据

1、创建数据表

CREATE TABLE `tb` (`userid` VARCHAR(30) DEFAULT NULL,`itemid` VARCHAR(30) DEFAULT NULL,`type` VARCHAR(30) DEFAULT NULL,`address` VARCHAR(30) DEFAULT NULL,`categoryid` VARCHAR(30) DEFAULT NULL,`time` VARCHAR(30) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8;

2、插入数据

LOAD DATA INFILE 'D:/user.csv'  
INTO TABLE tb  
CHARACTER SET  utf8  
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'  
LINES TERMINATED BY '\n'
IGNORE 1 LINES 
; 

3、数据一致化处理
1)时间数据

-- 增加一个时间类在categoryid后面
ALTER TABLE tb ADD DATE VARCHAR(30) NOT NULL AFTER categoryid;
-- 复制time列数据到date列里
UPDATE tb SET DATE=TIME;
-- 截取日期
UPDATE tb SET DATE=REPLACE(DATE,DATE,SUBSTRING_INDEX(DATE,' ',1));
-- 截取时间
UPDATE tb SET TIME=REPLACE(TIME,TIME,SUBSTRING_INDEX(TIME,' ',-1));
-- 由于创建时date是varchar型,所以需要更改
alter table tb modify date date;

2)行为类型数字更改为指定字符

update tb set type =replace(type,1,'pv');
update tb set type =replace(type,2,'fav');
update tb set type =replace(type,3,'cart');
update tb set type =replace(type,4,'buy');

Ⅱ 数据处理

1、缺失值处理

address列表示地理位置信息,由于数据存在大量空值,且位置信息被加密处理,因此不对该列进行分析。

2、异常值处理

选取的时间段为2014年11月18日至2014年12月18日之间,看是否有不在该范围的数据。如果有则删除不在该范围的数据:DELETE FROM tb WHERE date BETWEEN '2014-11-18' AND '2014-12-18 '

SELECT MIN(date),MAX(date) FROM tb;

1

3、重复值处理

在此次分析中,没有主键存在,所以列可存在重复值,不需要进行重复值处理

三、数据分析

Ⅰ 整体消费情况

总访问量(PV)

SELECT COUNT(TYPE)AS 总访问量 FROM tb WHERE TYPE='pv';

1

日均访问量

SELECT DATE,COUNT(TYPE)AS 日访问量 FROM tb WHERE TYPE='pv' GROUP BY DATE;

1

用户总数(UV)

SELECT COUNT(DISTINCT userid) AS 用户总数 FROM tb ;

1

购买用户数量及占总访问比

SELECT COUNT(DISTINCT userid)AS 购买人数 FROM tb WHERE TYPE='buy';SELECT (SELECT COUNT(DISTINCT userid)AS 购买人数 FROM tb WHERE TYPE='buy')/(SELECT COUNT(TYPE)AS 总访问量 FROM tb WHERE TYPE='pv')*100 AS 购买占比 FROM tb;

1
1

用户购物行为

CREATE VIEW user_behavior AS
SELECT userid,COUNT(TYPE),
SUM(CASE WHEN TYPE='pv' THEN 1 ELSE 0 END) AS "点击次数",
SUM(CASE WHEN TYPE='fav' THEN 1 ELSE 0 END) AS "收藏次数",
SUM(CASE WHEN TYPE='cart' THEN 1 ELSE 0 END) AS "加购数",
SUM(CASE WHEN TYPE='buy' THEN 1 ELSE 0 END) AS "购买数"
FROM tb GROUP BY userid ORDER BY COUNT(TYPE);
SELECT *FROM user_behavior;

1

复购率

SELECT SUM(CASE WHEN 购买数>1 THEN 1 ELSE 0 END)AS 购买数大于一次,
SUM(CASE WHEN 购买数>0 THEN 1 ELSE 0 END)AS 总购买数,
CONCAT(ROUND(SUM(CASE WHEN 购买数>1 THEN 1 ELSE 0 END)/SUM(CASE WHEN 购买数>0 THEN 1 ELSE 0 END)*100,2),'%')AS 复购率
FROM user_behavior;

1

Ⅱ 用户行为转化漏斗

在实际购物过程中,收藏与加入购物车没有先后之分,所以将两个行为视作一个行为分析。

SELECT SUM(点击次数)AS 总点击次数,SUM(收藏次数)AS 总收藏次数,SUM(加购数)AS 总加购数,SUM(购买数)AS 总购买数 FROM user_behavior;SELECT CONCAT(ROUND(SUM(点击次数)/SUM(点击次数)*100,2),'%')点击,CONCAT(ROUND(SUM(收藏次数)+SUM(加购数)/SUM(点击次数)*100,2),'%')点击到收藏加购,
CONCAT(ROUND(SUM(购买数)/SUM(点击次数)*100,2),'%')点击到购买 FROM user_behavior;

1
1
不同行业转化率不同,据12年研究表明,整个互联网行业范围内,平均转化率为2.13%,本次转化率才1.04%,离平均转化率还存在较大差异,因此还存在很大的增长空间。

Ⅲ 用户画像

购买率高的用户特征画像

SELECT userid,点击次数,收藏次数,加购数,购买数,ROUND(购买数/点击次数*100,2)购买率 FROM user_behavior GROUP BY userid ORDER BY 购买率 DESC;SELECT userid,点击次数,收藏次数,加购数,购买数,ROUND(购买数/点击次数*100,2)购买率 FROM user_behavior GROUP BY userid ORDER BY 购买数 DESC;

1
1
对比分析可看出购买率高的用户点击率反而不是最多的,收藏与加购数也很少,由此可得出这部分用户目的性很强,基本上不会被广告或促销吸引,属于理智型用户。

购买率低的用户特征画像

SELECT userid,点击次数,收藏次数,加购数,购买数,ROUND(购买数/点击次数*100,2)购买率 FROM user_behavior GROUP BY userid ORDER BY 购买数;

1
由以上结果可以看出,购买率为低用户分为两类:
第一类是点击次数少的,一方面的原因是这类用户可能是不太会购物或者不喜欢上网的用户,可以加以引导,另一方面是从商品的角度考虑,是否商品定价过高或设计不合理;
第二类用户是点击率高、收藏或加购物车也多的用户,此类用户可能正为商家的促销活动做准备,下单欲望较少且自制力较强,思虑多或者不会支付,购物难度较大。

Ⅳ 用户的行为习惯

一天用户活跃分布

SELECT TIME,COUNT(TYPE)用户行为总数,
SUM(CASE WHEN TYPE='pv' THEN 1 ELSE 0 END) AS "点击次数",
SUM(CASE WHEN TYPE='fav' THEN 1 ELSE 0 END) AS "收藏次数",
SUM(CASE WHEN TYPE='cart' THEN 1 ELSE 0 END) AS "加购数",
SUM(CASE WHEN TYPE='buy' THEN 1 ELSE 0 END) AS "购买数"
FROM tb GROUP BY TIME ORDER BY TIME;

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

一周中用户活跃时段分布

由于选取的时间段中有些不是完整的一周所以在分析的时候人为去掉那些不成整周的数据。

SELECT DATE_FORMAT(DATE,'%W')星期,COUNT(TYPE)用户行为总数,
SUM(CASE WHEN TYPE='pv' THEN 1 ELSE 0 END) AS "点击次数",
SUM(CASE WHEN TYPE='fav' THEN 1 ELSE 0 END) AS "收藏次数",
SUM(CASE WHEN TYPE='cart' THEN 1 ELSE 0 END) AS "加购数",
SUM(CASE WHEN TYPE='buy' THEN 1 ELSE 0 END) AS "购买数"
FROM tb 
WHERE DATE BETWEEN '2014-11-23' AND '2014-12-13'
GROUP BY 星期 ORDER BY DATE_FORMAT(DATE,'%W');

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

四、结论

  1. 总体转化率只有 1%,用户点击后收藏和加购物车的转化率在 5% ,需要提高用户的购买意愿,可通过活动促销、精准营销等方式。
  2. 购买率高且点击量少的用户属于理智型购物者,有明确购物目标,受促销和广告影响少;而购买率低的用户可以认为是等待型或克制型用户群体,下单欲望较少且自制力较强,购物难度较大。
  3. 大部分用户的主要活跃时间在10点到23点,在19点到23点达到一天的顶峰。每周五的活跃度有所下降,但周末开始回升。可以根据用户的活跃时间段精准推送商家的折扣优惠或促销活动,提高购买率。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/474932.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 第 198 场周赛(434/5778,前7.51%)

文章目录1. 比赛结果2. 题目1. LeetCode 5464. 换酒问题 easy2. LeetCode 5465. 子树中标签相同的节点数 medium3. LeetCode 5466. 最多的不重叠子字符串 medium4. LeetCode 5467. 找到最接近目标值的函数值 hard1. 比赛结果 第二题图的边给的不一定按顺序的,我按有…

LeetCode MySQL 619. 只出现一次的最大数字

文章目录1. 题目2. 解题1. 题目 表 my_numbers 的 num 字段包含很多数字,其中包括很多重复的数字。 你能写一个 SQL 查询语句,找到只出现过一次的数字中,最大的一个数字吗? --- |num| --- | 8 | | 8 | | 3 | | 3 | | 1 | | 4 |…

幸福感数据分析与预测

文章目录分析目的一、数据采集1、 数据来源2、 数据说明二、数据传输三、数据处理1、查看数据2、缺失值处理3、合并数据集4、时间数据处理5、分组及One-hot编码处理四、数据分析1、描述性统计2、探索性分析1 是否与所在地是城市or农村有关2 是否与性别有关3 是否与年龄有关4 是…

LeetCode MySQL 1142. 过去30天的用户活动 II

文章目录1. 题目2. 解题1. 题目 Table: Activity ------------------------ | Column Name | Type | ------------------------ | user_id | int | | session_id | int | | activity_date | date | | activity_type | enum | ------------------…

MYSQL练习题

MYSQL练习题 数据表建立代码及题目解答 提取码:e6lk

LeetCode MySQL 1280. 学生们参加各科测试的次数

文章目录1. 题目2. 解题1. 题目 学生表: Students ------------------------ | Column Name | Type | ------------------------ | student_id | int | | student_name | varchar | ------------------------主键为 student_id(学生ID)&a…

LeetCode MySQL 597. 好友申请 I :总体通过率

文章目录1. 题目2. 解题1. 题目 在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。现在给如下两个表: 表: friend_request | sender_id | send_to_id |request_date| |-----------|------------…

贷款利润最大化——利用随机森林和逻辑回归

文章目录分析目的一、数据采集1、数据来源2、数据说明二、数据传输三、数据处理1、查看数据2、清理无用特征值3、标签列分析4、清理只单一值的列5、空值处理6、数据类型转换四、数据挖掘1、构建模型2、导入算法五、总结分析目的 本文针对某信贷网站提供的2007-2011年贷款申请人…

LeetCode MySQL 512. 游戏玩法分析 II

文章目录1. 题目2. 解题1. 题目 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | event_date | date | | games_played | int | ----------------------- (…

机器学习算法优缺点对比及选择

文章目录偏差&方差常见算法优缺点朴素贝叶斯Logistic Regression(逻辑回归)线性回归最近邻算法——KNN决策树ID3、C4.5算法CART分类与回归树AdaboostingSVM支持向量机人工神经网络K-Means聚类EM最大期望算法集成算法(AdaBoost算法&#x…

LeetCode MySQL 1076. 项目员工II

文章目录1. 题目2. 解题1. 题目 Table: Project ---------------------- | Column Name | Type | ---------------------- | project_id | int | | employee_id | int | ---------------------- 主键为 (project_id, employee_id)。 employee_id 是员工表 Employ…

Sklearn.metrics评估方法

文章目录混淆矩阵分类准确率 accuracy精确率Precision召回率 recallF1值Roc曲线、AUC混淆矩阵 混淆矩阵又称误差矩阵,针对预测值和真实值之间的关系,我们可以将样本分为四个部分,分别是: 真正例(True Positive&#x…

LeetCode MySQL 1083. 销售分析 II

文章目录1. 题目2. 解题1. 题目 Table: Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是这张表的主键Tabl…

Jupyter Notebook安装 nbextensions 插件

安装 nbextensions 插件 一、打开Anaconda Prompt窗口,执行第一个命令,用于安装nbextensions: pip install jupyter_contrib_nbextensions 二、再执行第二个命令,用于安装 javascript and css files jupyter contrib nbextens…

LeetCode MySQL 1084. 销售分析III

文章目录1. 题目2. 解题1. 题目 Table: Product ----------------------- | Column Name | Type | ----------------------- | product_id | int | | product_name | varchar | | unit_price | int | ----------------------- product_id 是这个表的主键Tabl…

LeetCode MySQL 1322. 广告效果

文章目录1. 题目2. 解题1. 题目 表: Ads ------------------------ | Column Name | Type | ------------------------ | ad_id | int | | user_id | int | | action | enum | ------------------------ (ad_id, user_id) 是该表的主键…

linux下练习 c++ 容器set、multimset的特性

print.h //print.h#include <iostream>using namespace std;#ifndef print_fun#define print_funtemplate<typename T>///显示序列数据void print(T b,T e,char c ){bool isExitfalse;while (b!e){cout<<*b<<c;isExittrue;}if(isExit) cout<<end…

LeetCode MySQL 1179. 重新格式化部门表

文章目录1. 题目2. 解题1. 题目 部门表 Department&#xff1a; ------------------------ | Column Name | Type | ------------------------ | id | int | | revenue | int | | month | varchar | ------------------------ (id, mo…

消息推送生命周期_一套完整的APP推送体系方案|附思维导图

写这篇文章的初衷是前几天在脉脉上看到一个问题&#xff1a;线上app push故障&#xff0c;该不该给用户发送补救推送信息&#xff1f;联想到自己当初作为实习菜鸟也犯过类似的推送事故&#xff0c;好在补救处理尚可&#xff0c;最终结果不错。这次仔细看了问题下的每一条回答&a…

七、jdk工具之jconsole命令(Java Monitoring and Management Console)

目录 一、jdk工具之jps&#xff08;JVM Process Status Tools&#xff09;命令使用 二、jdk命令之javah命令(C Header and Stub File Generator) 三、jdk工具之jstack(Java Stack Trace) 四、jdk工具之jstat命令(Java Virtual Machine Statistics Monitoring Tool) 四、jdk工具…