ToB企服应用市场:ToB评测及商务社交产业平台

标题: 毕设成品 大数据电商用户举动分析及可视化(源码+论文) [打印本页]

作者: 伤心客    时间: 2024-9-7 06:21
标题: 毕设成品 大数据电商用户举动分析及可视化(源码+论文)

0 简介

今天学长向大家介绍一个机器视觉的毕设项目,大数据电商用户举动分析及可视化(源码+论文)
项目运行效果:

     结业设计 基于大数据淘宝用户举动分析
  
项目获取:
https://gitee.com/assistant-a/project-sharing
1. 数据集说明

这是一份来自淘宝的用户举动数据,时间区间为 2017-11-25 到 2017-12-03,总计 100,150,807 条记录,大小为 3.5 G,包含 5 个字段。
2. 数据处理

2.1 数据导入

将数据加载到 hive, 然后通过 hive 对数据进行数据处理。
  1. -- 建表
  2. drop table if exists user_behavior;
  3. create table user_behavior (
  4. `user_id` string comment '用户ID',
  5. `item_id` string comment '商品ID',
  6. `category_id` string comment '商品类目ID',
  7. `behavior_type` string  comment '行为类型,枚举类型,包括(pv, buy, cart, fav)',
  8. `timestamp` int comment '行为时间戳',
  9. `datetime` string comment '行为时间')
  10. row format delimited
  11. fields terminated by ','
  12. lines terminated by '\n';
  13. -- 加载数据
  14. LOAD DATA LOCAL INPATH '/home/getway/UserBehavior.csv'
  15. OVERWRITE INTO TABLE user_behavior ;
复制代码
2.2 数据洗濯

数据处理重要包罗:删除重复值,时间戳格式化,删除异常值。
  1. --数据清洗,去掉完全重复的数据
  2. insert overwrite table user_behavior
  3. select user_id, item_id, category_id, behavior_type, timestamp, datetime
  4. from user_behavior
  5. group by user_id, item_id, category_id, behavior_type, timestamp, datetime;
  6. --数据清洗,时间戳格式化成 datetime
  7. insert overwrite table user_behavior
  8. select user_id, item_id, category_id, behavior_type, timestamp, from_unixtime(timestamp, 'yyyy-MM-dd HH:mm:ss')
  9. from user_behavior;
  10. --查看时间是否有异常值
  11. select date(datetime) as day from user_behavior group by date(datetime) order by day;
  12. --数据清洗,去掉时间异常的数据
  13. insert overwrite table user_behavior
  14. select user_id, item_id, category_id, behavior_type, timestamp, datetime
  15. from user_behavior
  16. where cast(datetime as date) between '2017-11-25' and '2017-12-03';
  17. --查看 behavior_type 是否有异常值
  18. select behavior_type from user_behavior group by behavior_type;
复制代码
3.数据分析可视化

3.1 用户流量及购物环境

  1. --总访问量PV,总用户量UV
  2. select sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,
  3.        count(distinct user_id) as uv
  4. from user_behavior;
复制代码

  1. --日均访问量,日均用户量
  2. select cast(datetime as date) as day,
  3.        sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,
  4.        count(distinct user_id) as uv
  5. from user_behavior
  6. group by cast(datetime as date)
  7. order by day;
复制代码


  1. --每个用户的购物情况,加工到 user_behavior_count
  2. create table user_behavior_count as
  3. select user_id,
  4.        sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,   --点击数
  5.        sum(case when behavior_type = 'fav' then 1 else 0 end) as fav,  --收藏数
  6.        sum(case when behavior_type = 'cart' then 1 else 0 end) as cart,  --加购物车数
  7.        sum(case when behavior_type = 'buy' then 1 else 0 end) as buy  --购买数
  8. from user_behavior
  9. group by user_id;
  10. --复购率:产生两次或两次以上购买的用户占购买用户的比例
  11. select sum(case when buy > 1 then 1 else 0 end) / sum(case when buy > 0 then 1 else 0 end)
  12. from user_behavior_count;
复制代码


3.2 用户举动转换率

  1. --点击/(加购物车+收藏)/购买 , 各环节转化率
  2. select a.pv,
  3.        a.fav,
  4.        a.cart,
  5.        a.fav + a.cart as `fav+cart`,
  6.        a.buy,
  7.        round((a.fav + a.cart) / a.pv, 4) as pv2favcart,
  8.        round(a.buy / (a.fav + a.cart), 4) as favcart2buy,
  9.        round(a.buy / a.pv, 4) as pv2buy
  10. from(
  11. select sum(pv) as pv,   --点击数
  12.        sum(fav) as fav,  --收藏数
  13.        sum(cart) as cart,  --加购物车数
  14.        sum(buy) as buy  --购买数
  15. from user_behavior_count
  16. ) as a;
复制代码



3.3 用户举动习惯

  1. -- 一天的活跃时段分布
  2. select hour(datetime) as hour,
  3.        sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,   --点击数
  4.        sum(case when behavior_type = 'fav' then 1 else 0 end) as fav,  --收藏数
  5.        sum(case when behavior_type = 'cart' then 1 else 0 end) as cart,  --加购物车数
  6.        sum(case when behavior_type = 'buy' then 1 else 0 end) as buy  --购买数
  7. from user_behavior
  8. group by hour(datetime)
  9. order by hour;
复制代码

  1. --一周用户的活跃分布
  2. select pmod(datediff(datetime, '1920-01-01') - 3, 7) as weekday,
  3.        sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,   --点击数
  4.        sum(case when behavior_type = 'fav' then 1 else 0 end) as fav,  --收藏数
  5.        sum(case when behavior_type = 'cart' then 1 else 0 end) as cart,  --加购物车数
  6.        sum(case when behavior_type = 'buy' then 1 else 0 end) as buy  --购买数
  7. from user_behavior
  8. where date(datetime) between '2017-11-27' and '2017-12-03'
  9. group by pmod(datediff(datetime, '1920-01-01') - 3, 7)
  10. order by weekday;
复制代码



3.4 基于 RFM 模型找出有代价的用户

RFM 模型是衡量客户代价和客户创利本领的紧张工具和手段,此中由3个要素构成了数据分析最好的指标,分别是:

  1. --R-Recency(最近一次购买时间), R值越高,一般说明用户比较活跃
  2. select user_id,
  3.        datediff('2017-12-04', max(datetime)) as R,
  4.        dense_rank() over(order by datediff('2017-12-04', max(datetime))) as R_rank
  5. from user_behavior
  6. where behavior_type = 'buy'
  7. group by user_id
  8. limit 10;
  9. --F-Frequency(消费频率), F值越高,说明用户越忠诚
  10. select user_id,
  11.        count(1) as F,
  12.        dense_rank() over(order by count(1) desc) as F_rank
  13. from user_behavior
  14. where behavior_type = 'buy'
  15. group by user_id
  16. limit 10;
  17. --M-Money(消费金额),数据集无金额,所以就不分析这一项
复制代码
对有购买举动的用户按照排名进行分组,共分别为5组,
前 - 1/5 的用户打5分
前 1/5 - 2/5 的用户打4分
前 2/5 - 3/5 的用户打3分
前 3/5 - 4/5 的用户打2分
前 4/5 - 的用户打1分
按照这个规则分别对用户时间间隔排名打分和购买频率排名打分,最后把两个分数合并在一起作为该名用户的最终评分
  1. with cte as(
  2. select user_id,
  3.        datediff('2017-12-04', max(datetime)) as R,
  4.        dense_rank() over(order by datediff('2017-12-04', max(datetime))) as R_rank,
  5.        count(1) as F,
  6.        dense_rank() over(order by count(1) desc) as F_rank
  7. from user_behavior
  8. where behavior_type = 'buy'
  9. group by user_id)
  10. select user_id, R, R_rank, R_score, F, F_rank, F_score,  R_score + F_score AS score
  11. from(
  12. select *,
  13.        case ntile(5) over(order by R_rank) when 1 then 5
  14.                                            when 2 then 4
  15.                                            when 3 then 3
  16.                                            when 4 then 2
  17.                                            when 5 then 1
  18.        end as R_score,
  19.        case ntile(5) over(order by F_rank) when 1 then 5
  20.                                            when 2 then 4
  21.                                            when 3 then 3
  22.                                            when 4 then 2
  23.                                            when 5 then 1
  24.        end as F_score
  25. from cte
  26. ) as a
  27. order by score desc
  28. limit 20;
复制代码


3.5 商品维度的分析

  1. --销量最高的商品
  2. select item_id ,
  3.        sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,   --点击数
  4.        sum(case when behavior_type = 'fav' then 1 else 0 end) as fav,  --收藏数
  5.        sum(case when behavior_type = 'cart' then 1 else 0 end) as cart,  --加购物车数
  6.        sum(case when behavior_type = 'buy' then 1 else 0 end) as buy  --购买数
  7. from user_behavior
  8. group by item_id
  9. order by buy desc
  10. limit 10;
  11. --销量最高的商品大类
  12. select category_id ,
  13.        sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,   --点击数
  14.        sum(case when behavior_type = 'fav' then 1 else 0 end) as fav,  --收藏数
  15.        sum(case when behavior_type = 'cart' then 1 else 0 end) as cart,  --加购物车数
  16.        sum(case when behavior_type = 'buy' then 1 else 0 end) as buy  --购买数
  17. from user_behavior
  18. group by category_id
  19. order by buy desc
  20. limit 10;
复制代码

项目运行效果:

     结业设计 基于大数据淘宝用户举动分析
  
项目获取:
https://gitee.com/assistant-a/project-sharing
具体分析文档


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4