当前位置:   article > 正文

【大数据分析】对网站用户购物行为进行数据分析_用户习惯和购买倾向分析大数据

用户习惯和购买倾向分析大数据

【大数据分析】对网站用户购物行为进行数据分析

对网站用户购物行为进行数据分析

1、考查题目要求

  1. 设计内容:
    对网站用户购物行为进行数据分析,使用Elipse编写Java程序操作HBase数据库,描述分析结果,对分析结果进行可视化。
    作业采用的数据集为user.zip,包含了一个大规模数据集raw_user.csv(包含2000万条记录),和一个小数据集small_user.csv(只包含30万条记录)。数据包含以下字段:
    字段名称 字段含义 例子
    user_id 用户id 10001082;
    item_id 商品id 4368907
    behaviour_type 行为记录类型(包括浏览、收藏、加购物车、购买,对应取值分别为1,2,3,4) 1
    user_geohash 用户地理位置哈希值(可没有这个字段值)971k14c
    item_categeory 商品分类 5503
    time 记录发生时间 2014-12-02 18
    在这里插入图片描述

2、需求分析

数据获取与处理:需要明确通过什么方式获取数据,数据的种类包括用户信息、购买记录、浏览记录、搜索记录等。同时需要考虑数据的清洗和预处理,保证数据质量和可用性。
HBase数据库搭建和使用:需要明确HBase数据库的搭建、配置和使用,包括表结构的设计、HBase客户端的编写等。
掌握大数据处理技术,Linux操作系统、大数据处理架构Hadoop的关键技术及其基本原理、列族数据库HBase概念及其原理、数据仓库概念与原理、关系型数据库概念与原理等。

3、详细设计

3.1 下载数据集

需要把user.zip进行解压缩,我们需要首先建立一个用于运行本案例的目录bigdatacase
  • 1

在这里插入图片描述

可以看出,每行记录都包含5个字段,数据集中的字段及其含义如下:
user_id(用户id)
item_id(商品id)
behaviour_type(包括浏览、收藏、加购物车、购买,对应取值分别是1、2、3、4)
user_geohash(用户地理位置哈希值,有些记录中没有这个字段值,所以后面我们会用脚本做数据预处理时把这个字段全部删除)
item_category(商品分类)
time(该记录产生时间)

3.2 数据集的预处理

1)删除文件第一行记录,即字段名称
raw_user和small_user中的第一行都是字段名称,我们在文件中的数据导入到数据仓库Hive中时,不需要第一行字段名称,因此,这里在做数据预处理时,删除第一行
在这里插入图片描述

2)对字段进行预处理
下面对数据集进行一些预处理,包括为每行记录增加一个id字段(让记录具有唯一性)、增加一个省份字段(用来后续进行可视化分析),并且丢弃user_geohash字段(后面分析不需要这个字段)。

在这里插入图片描述
在这里插入图片描述

在上面的pre_deal.sh代码的处理逻辑部分,srand()用于生成随机数的种子,id是我们为数据集新增的一个字段,它是一个自增类型,每条记录增加1,这样可以保证每条记录具有唯一性。我们会为数据集新增一个省份字段,用来进行后面的数据可视化分析,为了给每条记录增加一个省份字段的值,这里,我们首先用Province[]数组用来保存全国各个省份信息,然后,在遍历数据集raw_user.csv的时候,每当遍历到其中一条记录,使用value=int(rand()*34)语句随机生成一个0-33的整数,作为Province省份值,然后从Province[]数组当中获取省份名称,增加到该条记录中。
substr($6,1,10)这个语句是为了截取时间字段time的年月日,方便后续存储为date格式。awk每次遍历到一条记录时,每条记录包含了6个字段,其中,第6个字段是时间字段,substr($6,1,10)语句就表示获取第6个字段的值,截取前10个字符,第6个字段是类似"2014-12-08 18"这样的字符串(也就是表示2014年12月8日18时),substr($6,1,10)截取后,就丢弃了小时,只保留了年月日。
在这里插入图片描述

3)将文件上传至HDFS文件系统中,路径为:“/usr/local/bigdatacase/datase/user_table.txt”
在这里插入图片描述

4)把HDFS中的“/bigdatacase/dataset”目录下的数据加载到了数据仓库Hive中。
在这里插入图片描述

上面已经成功把HDFS中的“/bigdatacase/dataset”目录下的数据加载到了数据仓库Hive中,我们现在可以使用下面命令查询一下:
在这里插入图片描述
在这里插入图片描述

3.3使用hive对数据进行分析:

  1. 查询前20位用户购买商品时的时间和商品的种类。
    在这里插入图片描述

  2. 查询不重复的数据有多少条。
    在这里插入图片描述
    在这里插入图片描述

  3. 查询2014-12-12号当天所有的购买行为。
    在这里插入图片描述

  4. 统计2014年12月10日到2014年12月13日有多少人浏览了商品。

`hive>select count(*) from bigdata_user where behavior_type='1' and visit_date<'2014-12-13' and visit_date>'2014-12-10';
  • 1

`在这里插入图片描述

  1. 2014-12-12号当天的商品购买与浏览比例。
    购买比例:
select 100* (buy / click) from (select count(*) as buy from bigdata_user where visit_date='2014-12-11'and behavior_type='4')t1, (select count(*) as click from bigdata_user where visit_date ='2014-12-11')t2;
  • 1

在这里插入图片描述
在这里插入图片描述

浏览比例:

select 100* (see /click) from (select count(*) as see from bigdata_user where visit_date='2014-12-11'and behavior_type='1')t1, (select count(*) as click from bigdata_user where visit_date ='2014-12-11')t2;
  • 1

在这里插入图片描述
在这里插入图片描述

  1. 2014-12-12号当天广东购买商品数。
select count(*) from bigdata_user where province='广东' and visit_date='2014-12-12' and behavior_type='4';
  • 1

在这里插入图片描述

  1. 2014-12-12号当天购买4件商品以上的用户。
select uid from bigdata_user where behavior_type='4' and visit_date='2014-12-12' group by uid having count(behavior_type='4')>4;
  • 1

在这里插入图片描述
在这里插入图片描述

  1. 用户10001082在2014-12-12号当天活跃度:用户点击行为占该天所有点击行为的比例
select 100* (click / all_click) from (select count(*) as click from bigdata_user where visit_date='2014-12-12'and uid=10001082)t1, (select count(*) as all_click from bigdata_user where visit_date ='2014-12-12')t2;
  • 1

在这里插入图片描述
在这里插入图片描述

3.4 Hive、MySQL、HBase数据互导

1.预操作

1)创建临时表user_action
在这里插入图片描述

2)新建一个终端,执行命令查看一下,确认这个数据文件在HDFS中确实被创建了
在这里插入图片描述
在这里插入图片描述

3)把dblab.bigdata_user数据插入到dblab.user_action表中
在这里插入图片描述

4)执行下面命令查询上面的插入命令是否成功执行
在这里插入图片描述

2.使用Sqoop将数据从Hive导入MySQL

1)创建数据库
在这里插入图片描述

2)使用下面命令查看数据库的编码(正确)
在这里插入图片描述

3)在MySQL的数据库dblab中创建一个新表user_action,并设置其编码为utf-8
在这里插入图片描述

  1. 导入数据
./bin/sqoop export --connect jdbc:mysql://localhost:3306/dblab --username root --password 123456 --table user_action --export-dir '/user/hive/warehouse/dblab.db/user_action' --fields-terminated-by '\t';
  • 1

在这里插入图片描述
在这里插入图片描述

  1. 查看MySQL中user_action表数据
select * from user_action limit 10;
  • 1

在这里插入图片描述

3.使用Sqoop将数据从MySQL导入HBase

cd /usr/local/hbase
./bin/start-hbase.sh
cd /usr/local/hbase
./bin/hbase shell
  • 1
  • 2
  • 3
  • 4

1)创建表user_action
create ‘user_action’, { NAME => ‘f1’, VERSIONS => 5}
在这里插入图片描述

  1. 导入数据
cd /usr/local/sqoop
./bin/sqoop  import  --connect jdbc:mysql://localhost:3306/dblab --username root --password 123456 --table user_action --hbase-table user_action --column-family f1 --hbase-row-key id --hbase-create-table -m 1
  • 1
  • 2

在这里插入图片描述
在这里插入图片描述

  1. 查看HBase中user_action表数据
scan 'user_action',{LIMIT=>10}
  • 1

在这里插入图片描述

4、R语言可视化结果测试与分析

1)分析消费者对商品的行为

library(RMySQL)
conn <- dbConnect(MySQL(),dbname='dblab',username='root',password='123456',host="127.0.0.1",port=3306)
user_action <- dbGetQuery(conn,'select * from user_action')
  • 1
  • 2
  • 3

在这里插入图片描述

summary(user_action$behavior_type)
  • 1

summary() 函数可以得到样本数据类型和长度,如果样本是数值型,我们还能得到样本数据的最小值、最大值、四分位数以及均值信息。

summary(as.numeric(user_action$behavior_type))
  • 1

在这里插入图片描述

柱状图

library(ggplot2)
ggplot(user_action,aes(as.numeric(behavior_type)))+geom_histogram()
  • 1
  • 2

在使用ggplot2库的时候,需要使用library导入库。ggplot()绘制时,创建绘图对象,即第一个图层,包含两个参数(数据与变量名称映射).变量名称需要被包含aes函数里面。ggplot2的图层与图层之间用“+”进行连接。ggplot2包中的geom_histogram()可以很方便的实现直方图的绘制。
在这里插入图片描述

分析:
如图所示,消费者对商品最多的行为是浏览行为,因此增加商品浏览时的推荐策略:根据用户的浏览行为,结合其他因素(例如购买记录、搜索关键词等),设计更加个性化和精准的推荐策略。
优化商品推荐的频次和方式:根据用户的浏览行为和交互习惯,调整商品推荐的频次和方式,避免过度推送或不合适的推荐信息,提升用户体验和转化率。
深入挖掘浏览行为背后的需求和偏好:通过深入分析用户的浏览行为,了解用户的需求和偏好,为下一步的商品推荐和营销策略提供参考和依据。
加强与用户的互动和反馈:与用户建立互动交流渠道,获取用户的反馈和建议,针对不同用户的特点和需求,进行更加精细化的推荐和定制化服务。
2)分析哪一类商品被购买总量前十和被购买总量
temp <- subset(user_action,as.numeric(behavior_type)==4) # 获取子数据集
count <- sort(table(temp$item_category),decreasing = T) #排序
print(count[1:10]) # 获取第1到10个排序结果
subset()函数,从某一个数据框中选择出符合某条件的数据或是相关的列.table()对应的就是统计学中的列联表,是一种记录频数的方法.sort()进行排序,返回排序后的数值向量。
在这里插入图片描述

散点图

result <- as.data.frame(count[1:10]) #将count矩阵结果转换成数据框
ggplot(result,aes(Var1,Freq,col=factor(Var1)))+geom_point()
  • 1
  • 2

在这里插入图片描述

分析:
由该散点图可看出被购买量前十的商品数,因此根据被购买量前十的商品,进一步进行以下的优化:
推广热门商品:针对被购买量前十的商品,加大它们的推广力度,使更多的用户关注和购买这些商品。
减少滞销商品:对于没有出现在被购买量前十的商品,要及时调整产品定位,改善产品质量和服务质量,降低售价等,尽可能提高销售量,减少库存积压。
优化商品组合:根据被购买量前十的商品种类和属性,优化商品组合,设计更加有吸引力的套餐和捆绑销售,提高销售额和用户满意度。
提高用户购买意愿:通过营销手段和促销策略,提高用户购买意愿,比如赠品、优惠券等活动;同时,注重用户体验和售后服务,增强用户忠诚度和复购率。
3)分析每年的哪个月份购买商品的量最多
从MySQL直接获取的数据中visit_date变量都是2014年份,并没有划分出具体的月份,那么可以在数据集增加一列月份数据。
month <- substr(user_action$visit_date,6,7) # visit_date变量中截取月份
user_action <- cbind(user_action,month) # user_action增加一列月份数据

用柱状图分别表示消费者购买量
ggplot(user_action,aes(as.numeric(behavior_type),col=factor(month)))+geom_histogram()+facet_grid(.~month)
aes()函数中的col属性可以用来设置颜色。factor()函数则是把数值变量转换成分类变量,作用是以不同的颜色表示。如果不使用factor()函数,颜色将以同一种颜色渐变的颜色表现。 facet_grid(.~month)表示柱状图按照不同月份进行分区。
由于MySQL获取的数据中只有11月份和12月份的数据,所以上图只有显示两个表格。
在这里插入图片描述

分析:
由柱状图可得出2014年12月份购买的商品最多,因此进一步进行以下的优化:
备货和供应链调整:针对2014年12月份销售情况,加大备货力度,提前安排生产计划和采购计划,保证商品供应的充足性和稳定性,以防止库存不足等问题的发生。
营销活动的设计和规划:针对2014年12月份销售情况,针对消费者需求的变化和偏好,设计相应促销活动和优惠政策,加强宣传和推广,促进销售增长。
优化商品品质和服务质量:针对2014年12月份销售情况,评估商品的品质和服务质量,及时改善产品和服务不足之处,提高用户满意度和忠诚度。
总之,针对销售数据中的某个重要节点,进行合理调整和规划是企业提高销售业绩和市场占有率的关键因素之一。

5、结论与心得

针对网站用户购物行为进行数据分析,我可以获得以下心得体会:从用户在网站中的行为路径,可以了解用户的兴趣和需求点,进而为网站的优化以及产品服务的优化提供方向和支持。通过对用户在购买过程中的行为偏好进行分析,了解用户的购物需求和偏好,可以提高网站的商品推荐准确率,挖掘更多的用户需求。通过对资 Gold的交易记录和销量进行统计分析,了解每个商品的销量以及用户的购买力度,并据此制定相应营销策略。通过对用户的消费习惯、购买力度等进行分析,可了解不同消费群体的特点和需求,为针对性的服务和营销活动提供支持。综上,通过对网站用户购物行为进行数据分析,可深入了解用户的需求和行为,为网站优化、产品服务优化、销售策略优化提供更多帮助和支持,提高网站的竞争力并实现持续发展。
本次大作业的完成离不开老师的悉心指导与帮助,在大作业完成的过程中,我不仅回顾了本学期所学的知识,还尝试着自己解决了一些问题,例如数据库编码统一,数据互导,R语言库的安装等等,收获满满。学无止境,希望可以继续保持学习热情,不断丰富自身的知识储备。
  • 1
  • 2

参考文献
【1】【期刊论文】电子商务网站用户行为分析与网络营销优化

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号