【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

这篇具有很好参考价值的文章主要介绍了【Hive+MySQL+Python】淘宝用户购物行为数据分析项目。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数据集介绍

user_data.csv是一份用户行为数据,时间区间为2017-11-25到2017-12-03,总计29132493条记录,大小为1.0G,包含5个字段。数据集的每一行表示一条用户行为,由用户ID、商品ID、商品类目ID、行为类型和时间戳组成,并以逗号分隔。关于数据集中每一列的详细描述如下:
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
用户行为类型共有四种,它们分别是:
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

二、数据处理

1. 数据导入

将数据加载到hive,然后通过hive对数据进行处理。
(1)上传new_data.csv文件至虚拟机
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
(2)创建user_db数据库
create database user_db;
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
(3)创建user_data表

create table user_data(
user_id string,
item_id string,
category_id string,
behavior_type string,
create_time int)
row format delimited fields terminated by ','
lines terminated by '\n';

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
(4)将new_data.csv文件中的数据导入到user_data表中

load data local inpath '/root/hive/user_data.csv' into table user_data;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

2. 数据清洗

数据处理主要包括:删除重复值,时间戳格式化,删除异常值。

  1. 创建user_data_new表,为其添加时间字符串字段
  2. 数据清洗,去掉完全重复的数据
  3. 数据清洗,时间戳格式化成datetime。要用到from_unixtime函数。
  4. 查看时间是否有异常值
  5. 数据清洗,去掉时间异常的数据
  6. 查看 behavior_type 是否有异常值
    (1)查看数据量
select count(1) from user_data;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
(2)数据去重

insert overwrite table user_data
select user_id,item_id,category_id,behavior_type,create_time
from user_data
group by user_id,item_id,category_id,behavior_type,create_time;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目可以看到有11条重复数据,已经去除。
(3)创建user_data_new表,为其添加时间字符串字段

create table user_data_new(
user_id string,
item_id string,
category_id string,
behavior_type string,
datetime string
)row format delimited fields terminated by ','
lines terminated by '\n';

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目(4)时间格式转换

insert overwrite table user_data_new
select user_id,item_id,category_id,behavior_type,from_unixtime(create_time,'yyyy-MM-dd HH:mm:ss')
from user_data;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

(5)查看时间异常值

select date(datetime) as day from user_data_new group by date(datetime) order by day;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
(6)去除时间异常值

insert overwrite table user_data_new
select user_id,item_id,category_id,behavior_type,datetime
from user_data_new
where cast(datetime as date) between '2017-11-25' and '2017-12-03';

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目(9)查看behavior_type是否有异常值

select behavior_type from user_data_new group by behavior_type;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

三、数据分析可视化

1. 用户流量及购物情况

(1)总访问量PV,总用户量UV

select sum(case when behavior_type='pv' then 1 else 0 end) as pv,
count(distinct user_id) as uv
from user_data_new;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

(2)日均访问量,日均用户量

① 统计日均访问量,日均用户量,并加工到day_pv_uv表中

create table day_pv_uv as
select cast(datetime as date) as day,
sum(case when behavior_type='pv' then 1 else 0 end) as pv,
count(distinct user_id) as uv
from user_data_new
group by cast(datetime as date)
order by day;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
② 将得到的数据通过sqoop迁移至mysql

  • 在mysql中创建数据库和表
    【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
create table day_pv_uv (day date,pv int(20),uv int(20));

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

  • sqoop数据迁移
bin/sqoop export \
--connect jdbc:mysql://hadoop01:3306/user_db \
--username root \
--password Guo_2001 \
--table day_pv_uv \
--fields-terminated-by '\001' \
--export-dir '/user/hive/warehouse/user_db.db/day_pv_uv' \
--num-mappers 1 

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

  • 查看迁移后的数据
    【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
    ③ 利用python读取mysql数据并可视化
  • pymysql读取数据
import pymysql
# 读取mysql数据
daylist = []
pvlist = []
uvlist = []
conn = pymysql.connect(host='192.168.20.128',
               port=3306,
               user='root',
               password='Guo_2001',
               db='user_db',
               charset='utf8')
cursor = conn.cursor()
try:

    sql_name = """ SELECT day FROM day_pv_uv """
    cursor.execute(sql_name)
    days = cursor.fetchall()
    for i in range(0,len(days)):
        daylist.append(days[i][0])
    # print(daylist)
    sql_num = """ SELECT pv FROM day_pv_uv """
    cursor.execute(sql_num)
    pvs = cursor.fetchall()
    for i in range(0,len(pvs)):
        pvlist.append(pvs[i][0])
    # print(pvlist)
    sql_num = """ SELECT uv FROM day_pv_uv """
    cursor.execute(sql_num)
    uvs = cursor.fetchall()
    for i in range(0,len(uvs)):
        uvlist.append(uvs[i][0])
    # print(uvlist)
except:
    print("未查询到数据!")
    conn.rollback()
finally:
    conn.close()
  • pyecharts可视化
import pyecharts.options as opts
from pyecharts.charts import Bar, Line

bar = (
    Bar(init_opts=opts.InitOpts(width="1100px", height="600px"))
       .set_global_opts(title_opts=opts.TitleOpts(title="每日访问情况"))
        .add_xaxis(xaxis_data=daylist)
        .add_yaxis(
            series_name="pv",
            y_axis=pvlist,
            label_opts=opts.LabelOpts(is_show=False),
        )
        .add_yaxis(
            series_name="uv",
            y_axis=uvlist,
            label_opts=opts.LabelOpts(is_show=False),
        )
        .set_global_opts(
            tooltip_opts=opts.TooltipOpts(
                is_show=True, trigger="axis", axis_pointer_type="cross"
            ),
            xaxis_opts=opts.AxisOpts(
                name='date',
                name_location='middle',
                name_gap=30,
                name_textstyle_opts=opts.TextStyleOpts(
                    font_family='Times New Roman',
                    font_size=16,  # 标签字体大小
                )),
            yaxis_opts=opts.AxisOpts(
                type_="value",
                axislabel_opts=opts.LabelOpts(formatter="{value}"),
                axistick_opts=opts.AxisTickOpts(is_show=True),
                splitline_opts=opts.SplitLineOpts(is_show=True),
            )
        )
)

bar.render("折线图-柱状图多维展示.html")

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

(3)每个用户的购物情况,加工到 user_behavior_count表中

create table user_behavior_count as
select user_id,
sum(case when behavior_type='pv' then 1 else 0 end) as pv,
sum(case when behavior_type='fav' then 1 else 0 end) as fav,
sum(case when behavior_type='cart' then 1 else 0 end) as cart,
sum(case when behavior_type='buy' then 1 else 0 end) as buy
from user_data_new
group by user_id;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

(4)统计复购率

复购率:产生两次或两次以上购买的用户占购买用户的比例

select sum(case when buy>1 then 1 else 0 end)/sum(case when buy>0 then 1 else 0 end)
from user_behavior_count;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
可以看到复购率为0.65,还是不错的。

2. 用户行为转化率

(1)统计各环节转化率

点击/(加购物车+收藏)/购买,各环节转化率

select a.pv,
a.fav,
a.cart,
a.fav + a.cart as `fav+cart`,
a.buy,
round((a.fav + a.cart) / a.pv, 4) as pv2favcart,
round(a.buy / (a.fav + a.cart), 4) as favcart2buy,
round(a.buy / a.pv, 4) as pv2buy
from(
select sum(pv) as pv,
sum(fav) as fav,
sum(cart) as cart,
sum(buy) as buy
from user_behavior_count
) as a;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

(2)用户行为转化漏斗可视化

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
从漏斗图中可以看到,收藏和加购物车的用户行为是最多的,而购买最少,也符合实际。

3. 用户行为习惯

(1)一天的活跃时段分布

① 统计每天24小时内的行为数据,并加工到hour_behavior表中

create table hour_behavior as
select hour(datetime) as hour,
sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,
sum(case when behavior_type = 'fav' then 1 else 0 end) as fav,
sum(case when behavior_type = 'cart' then 1 else 0 end) as cart,
sum(case when behavior_type = 'buy' then 1 else 0 end) as buy
from user_data_new
group by hour(datetime)
order by hour;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
② 将得到的数据通过sqoop迁移至mysql

  • 在mysql中创建表
create table hour_behavior (
hour int(20),
pv int(20),
fav int(20),
cart int(20),
buy int(20)
);

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

  • sqoop数据迁移
bin/sqoop export \
--connect jdbc:mysql://hadoop01:3306/user_db \
--username root \
--password Guo_2001 \
--table hour_behavior \
--fields-terminated-by '\001' \
--export-dir '/user/hive/warehouse/user_db.db/hour_behavior' \
--num-mappers 1 

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

  • 查看迁移后的数据
    【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
    ③ 利用python读取mysql数据并可视化
  • pymysql读取数据
import pymysql
# 读取mysql数据
hourlist = []
pvlist = []
favlist = []
cartlist = []
buylist = []
conn = pymysql.connect(host='192.168.20.128',
               port=3306,
               user='root',
               password='Guo_2001',
               db='user_db',
               charset='utf8')
cursor = conn.cursor()
try:

    sql_name = """ SELECT hour FROM hour_behavior """
    cursor.execute(sql_name)
    hours = cursor.fetchall()
    for i in range(0,len(hours)):
        hourlist.append(hours[i][0])
    sql_num = """ SELECT pv FROM hour_behavior """
    cursor.execute(sql_num)
    pvs = cursor.fetchall()
    for i in range(0,len(pvs)):
        pvlist.append(pvs[i][0])
    sql_num = """ SELECT fav FROM hour_behavior """
    cursor.execute(sql_num)
    favs = cursor.fetchall()
    for i in range(0,len(favs)):
        favlist.append(favs[i][0])
    sql_num = """ SELECT cart FROM hour_behavior """
    cursor.execute(sql_num)
    carts = cursor.fetchall()
    for i in range(0,len(carts)):
        cartlist.append(carts[i][0])
    sql_num = """ SELECT buy FROM hour_behavior """
    cursor.execute(sql_num)
    buys = cursor.fetchall()
    for i in range(0,len(buys)):
        buylist.append(buys[i][0])
except:
    print("未查询到数据!")
    conn.rollback()
finally:
    conn.close()
  • pyecharts可视化
from pyecharts.charts import Line
# 堆叠柱状图绘制
line=Line()
line.add_xaxis(hourlist)
line.add_yaxis('点赞数',pvlist,stack="stack1",label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis('收藏数',favlist,stack="stack1",label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis('加购物车数',cartlist,stack="stack1",label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis('购买数',buylist,stack="stack1",label_opts=opts.LabelOpts(is_show=False))
line.set_global_opts(title_opts=opts.TitleOpts(title="用户一天24小时的活跃时段分布"))
line.render_notebook()

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
从图中可以看到一天24小时中,13和14时用户处于最活跃的状态,而19-21时用户的活跃次数并不高,当然此时也处于睡觉时间,符合实际情况。

(2)一周用户的活跃分布

① 统计一周七天内的行为数据,并加工到week_behavior表中

create table week_behavior as
select pmod(datediff(datetime, '1920-01-01') - 3, 7) as weekday,
sum(case when behavior_type = 'pv' then 1 else 0 end) as pv,
sum(case when behavior_type = 'fav' then 1 else 0 end) as fav,
sum(case when behavior_type = 'cart' then 1 else 0 end) as cart,
sum(case when behavior_type = 'buy' then 1 else 0 end) as buy
from user_data_new
where date(datetime) between '2017-11-27' and '2017-12-03'
group by pmod(datediff(datetime, '1920-01-01') - 3, 7)
order by weekday;

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
② 将得到的数据通过sqoop迁移至mysql

  • 在mysql中创建表
create table week_behavior (
weekday int(20),
pv int(20),
fav int(20),
cart int(20),
buy int(20)
);

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

  • sqoop数据迁移
bin/sqoop export \
--connect jdbc:mysql://hadoop01:3306/user_db \
--username root \
--password Guo_2001 \
--table week_behavior \
--fields-terminated-by '\001' \
--export-dir '/user/hive/warehouse/user_db.db/week_behavior' \
--num-mappers 1 

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目

  • 查看迁移后的数据
    【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
    ③ 利用python读取mysql数据并可视化
  • pymysql读取数据
import pymysql
# 读取mysql数据
weeklist = []
pvlist = []
favlist = []
cartlist = []
buylist = []
conn = pymysql.connect(host='192.168.20.128',
               port=3306,
               user='root',
               password='Guo_2001',
               db='user_db',
               charset='utf8')
cursor = conn.cursor()
try:

    sql_name = """ SELECT weekday FROM week_behavior """
    cursor.execute(sql_name)
    weeks = cursor.fetchall()
    for i in range(0,len(weeks)):
        weeklist.append(weeks[i][0])
    sql_num = """ SELECT pv FROM week_behavior """
    cursor.execute(sql_num)
    pvs = cursor.fetchall()
    for i in range(0,len(pvs)):
        pvlist.append(pvs[i][0])
    sql_num = """ SELECT fav FROM week_behavior """
    cursor.execute(sql_num)
    favs = cursor.fetchall()
    for i in range(0,len(favs)):
        favlist.append(favs[i][0])
    sql_num = """ SELECT cart FROM week_behavior """
    cursor.execute(sql_num)
    carts = cursor.fetchall()
    for i in range(0,len(carts)):
        cartlist.append(carts[i][0])
    sql_num = """ SELECT buy FROM week_behavior """
    cursor.execute(sql_num)
    buys = cursor.fetchall()
    for i in range(0,len(buys)):
        buylist.append(buys[i][0])
except:
    print("未查询到数据!")
    conn.rollback()
finally:
    conn.close()
  • pyecharts可视化
from pyecharts.charts import Line
# 堆叠这些线图绘制
line=Line()
line.add_xaxis(weeklist)
line.add_yaxis('点赞数',pvlist,stack="stack1",label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis('收藏数',favlist,stack="stack1",label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis('加购物车数',cartlist,stack="stack1",label_opts=opts.LabelOpts(is_show=False))
line.add_yaxis('购买数',buylist,stack="stack1",label_opts=opts.LabelOpts(is_show=False))
line.set_global_opts(title_opts=opts.TitleOpts(title="一周用户的活跃分布"))
line.render_notebook()

【Hive+MySQL+Python】淘宝用户购物行为数据分析项目
从图中可以看到,在一周中,周日是用户最活跃的一天,休息日不管是从点赞量、收藏量、加购物车量还是购买量来看都是处于最高的位置。文章来源地址https://www.toymoban.com/news/detail-470325.html

到了这里,关于【Hive+MySQL+Python】淘宝用户购物行为数据分析项目的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据实战 --- 淘宝用户行为数据分析

    目录 开发环境  数据描述 功能需求 数据准备 数据清洗 用户行为分析 找出有价值的用户 Hadoop+Hive+Spark+HBase 启动Hadoop :start-all.sh 启动zookeeper :zkServer.sh start 启动Hive : nohup hiveserver2 1/dev/null 21 beeline -u jdbc:hive2://192.168.152.192:10000 启动Hbase : start-hbase.sh hbase shell 启动Spark :s

    2023年04月22日
    浏览(58)
  • 大数据毕设分享 flink大数据淘宝用户行为数据实时分析与可视化

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年01月21日
    浏览(56)
  • MySQL实战项目:淘宝母婴购物数据可视化分析

    文章目录 前言 一、数据获取 1.母婴信息表:tianchi_mum_baby.csv 2.购物行为表: tianchi_mum_baby_trade_history.csv 二、数据预处理:  1.修改数据类型 2.检查重复数据: 3.检查空格 4.去异常 三.数据分析 1.流量分析 2.类别分析 3.性别分析 总结 母婴用品是淘宝的热门购物类目,随着国家鼓

    2024年02月04日
    浏览(68)
  • 基于Python的淘宝行为数据可视化分析

    完成如下商业分析任务,通过数据分析和可视化展示,充分挖掘数据的价值,让数据更好地为业务服务: 流量分析 :PV/UV是多少,通过分析PV/UV能发现什么规律? 漏斗分析 :用户“浏览-收藏-加购-购买”的转化率是怎样的? 用户价值分析 :对电商平台什么样的用户是有价值

    2024年02月10日
    浏览(47)
  • SQL SERVER ANALYSIS SERVICES决策树、聚类、关联规则挖掘分析电商购物网站的用户行为数据...

    假如你有一个购物类的网站,那么你如何给你的客户来推荐产品呢? ( 点击文末“阅读原文”获取完整文档、 数据 ) 相关视频 这个功能在很多电商类网站都有,那么,通过SQL Server Analysis Services的数据挖掘功能,你也可以轻松的来构建类似的功能。 将分为三个部分来演示

    2024年02月16日
    浏览(49)
  • 【项目实战】基于Hadoop大数据电商平台用户行为分析与可视化系统Hive、Spark计算机程序开发

    注意:该项目只展示部分功能,如需了解,评论区咨询即可。 在当今数字化时代,电商行业成为全球商业生态系统的关键组成部分,电商平台已经深入各行各业,影响了人们的购物方式和消费习惯。随着互联网技术的不断发展,电商平台产生了大量的用户数据,包括点击、购

    2024年02月04日
    浏览(118)
  • 大数据毕设项目 - 大数据电商用户行为分析 -python 大数据

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月17日
    浏览(48)
  • 基于Python电商用户行为的数据分析、机器学习、可视化研究

    有需要本项目的源码以及全套文档和相关资源,可以私信博主!!! 在数字化和互联网技术飞速发展的推动下,消费者的购买能力和消费观念呈现不断升级和变迁的趋势。用户消费数据的爆炸式增长,为我们提供了寻找潜在价值信息的机会。 本研究使用了阿里巴巴提供的淘

    2024年02月04日
    浏览(46)
  • 基于python淘宝商品数据爬虫分析可视化系统 网络爬虫+Flask框架+MySQL数据库 大数据 毕业设计

    python语言、Flask框架、淘宝商品数据、selenium网络爬虫、MySQL数据库、数据分析、Echarts可视化大数据毕业设计、爬取 Selenium网络爬虫淘宝商品数据可视化系统是一个基于Python和Selenium的Web爬虫应用程序,可以实现对淘宝上特定商品的价格、销量、评价等数据进行自动化抓

    2024年02月16日
    浏览(50)
  • 【Spark+Hadoop+Hive+MySQL+Presto+SpringBoot+Echarts】基于大数据技术的用户日志数据分析及可视化平台搭建项目

    点我获取项目数据集及代码 随着我国科学技术水平的不断发展,计算机网络技术的广泛应用,我国已经步入了大数据时代。在大数据背景下,各种繁杂的数据层出不穷,一时难以掌握其基本特征及一般规律,这也给企业的运营数据分析工作增添了不小的难度。在大数据的背景

    2024年02月10日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包