SQL也能做分析?当然!
常见的数据清洗,预处理,数据分类,数据筛选,分类汇总,以及数据透视等操作,用SQL一样可以实现(除了可视化,需要放到Excel里呈现)。SQL不仅可以从数据库中读取数据,还能通过不同的SQL函数语句直接返回所需要的结果,从而大大提高了自己在客户端应用程序中计算的效率。
但是,这个过程需要很熟练掌握SQL!
本文就利用提取MySQL的数据,通过写SQL的数据处理方式,来对一份淘宝数据进行用户分析。
01
数据来源及说明(现在我们调用数据基本上以API接口的形式去获取封装的)
本文从数据集中选取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。
2. 缺失值处理
item_category 列表示地理位置信息,由于数据存在大量空值,且位置信息被加密处理,难以研究,因此后续不对item_category列进行分析。
3. 数据一致化处理
由于 time 字段的时间包含(年-月-日)和小时,为了方便分析,将该字段分成 2 个字段,一个日期列(date)和一个小时列&#