数据处理以及Hive数据分析

article/2025/10/13 3:30:23

数据处理以及Hive数据分析

  • 一、pandas进行数据预处理
    • 【1】待处理的一部分数据
    • 【2】原始数据文件的格式说明
    • 【3】数据预处理要求
    • 【4】 处理完成的数据字段说明
    • 【5】 实验方法
        • 使用pandas进行数据预处理
    • 【6】解析题意
    • 【7】代码展示
      • (1)读取文件
      • (2) 删除指定字段:
      • (3)为索引加名为id:
      • (4)修改时间字段:
      • (5)添加省份字段:
      • (6)导出文件
  • 二、Hive数据分析
    • 注意:
        • 1、文章里的表名、路径、主机名、表名、数据库名都是我自己环境里的,需要根据自己的环境进行改写。
        • 2、所有都是不出错的情况下进行,在实际执行过程中难免会遇到各种各样的问题,可以在这里评论如果我理解的我会解答,不知道的话我也会和大家一起找解决办法。
        • 3、因为数据预处理阶省份是随机插入的,所以如果是做了数据预处理之后拿来的数据做关于省份的分析语句出来的结果也会不一样的。
    • 【一】将处理完成的数据上传至HDFS保存
        • 1、打开虚拟机,利用VMtools、xshell或xftp等工具把处理完的数据上传到虚拟机上;
        • 2、启动Hadoop:==进入/etc/sbin/下用start-all.sh==
        • 3、将数据上传至HDFS;
        • 4、查看是否上传成功:
    • 【二】根据上传至HDFS的文件构建数据仓库Hive
        • 1、进入Hive:用==hive==命令
        • 2、构建数据仓库hive,把数据从hdfs上传至Hive:
    • 【三】Hive数据分析
        • 1、根据user_id查询不重复的数据有多少行。
        • 2、查询不重复的数据有多少行。
        • 3、统计时间在2014-12-11和2014-12-12这两天商品售出总和。
        • 4、以月的第n天为统计单位,依次显示第n天网站卖出去的商品的个数。
        • 5、取给定时间和给定地点,我们可以求当天发出到该地点的货物的数量。(如查看2014-12-12发货到江西的数量。)
          • (1)查看发到所有地方的货物数量。
          • (2)查看发到江西省的货物数量。
        • 6、统计出2014-12-11的购买数、浏览数,分析购买率。
        • 7、在2014-12-12这天,用户10001082的所有点击行为数、所有用户的点击行为数、并获取用户10001082的所有点击行为数占所有用户的点击行为数的比例。
        • 8、查询取时间为2014-12-12每个地区当天的浏览数。
        • 9、从时间维度统计商品售出明细。

一、pandas进行数据预处理

【1】待处理的一部分数据

// 以下为待处理数据的一部分,仅供参考
user_id    item_id    behavior_type  user_geohash  item_category time
10001082   285259775  1              97lk14c       4076          2014-12-08 18
10001082   53616768   4                            9762          2014-12-02 15
100029775  128989040  2              9t4qcbq       5232          2014-12-17 17
100029775  222229697  3                            3628          2014-12-12 15

【2】原始数据文件的格式说明

字段说明
user_id用户ID
item_id商品ID
behavior_type1.浏览 2.收藏 3.加购物车 4.购买
user_geohash购买地址
item_category品类ID(商品所属的品类)
time购买时间

【3】数据预处理要求

(1)删除文件第一行字段
(2)删除读取的文件的第四个字段
(3)增加id字段,从1开始顺序递增
(3)保留完整的时间格式,2014-12-12,删除每行时间末尾的空格和18。
(4)读取的文件每行随机增加省份字段。
(5)生成新文件:small_user_out.csv,查看文件编码
(6)转换预处理生成文件small_user_out.csv的文件编码为utf-8,保证在hive数据仓库里可以中文显示。

【4】 处理完成的数据字段说明

字段说明
user_id用户ID
item_id商品ID
behavior_type1.浏览 2.收藏 3.加购物车 4.购买
user_geohash购买地址
item_category品类ID(商品所属的品类)
time处理过的购买时间
province省份(随机生成)

【5】 实验方法

使用pandas进行数据预处理

【6】解析题意

要想得到所需,删除第一行可以在导出文件的时候不包含头部就可以解决。此外,原始数据文件说明有6个字段,实际还有两个空字段为Unnamed: 6Unnamed: 7字段,如图所示

// 实际查看到的数据
user_id    item_id    behavior_type  user_geohash  item_category time            Unnamed: 6  Unnamed: 7
10001082   285259775  1              97lk14c       4076          2014-12-08 18
10001082   53616768   4                            9762          2014-12-02 15
100029775  128989040  2              9t4qcbq       5232          2014-12-17 17
100029775  222229697  3                            3628          2014-12-12 15

我们在删除字段时需要把这两个字段也删除掉。修改时间格式为用分割字符串的方式来修改数据。我们知道用DataFrame会产生索引,我们为索引添加一个名字为id,再把其加1就可以符合题意了。读取的文件每行随机增加省份字段,我这里用的方法是自己建一个包含各省的列表,获取原始数据的行数,再建一个新的空列表,随机选择一个省份插入该空列表,进行和行数相同的次数后根据此时的列表生成新字段。最后数据处理完成,导出文件。

【7】代码展示

(1)读取文件

# 读取文件
inpath = ("原始数据文件地址")
df = pd.read_csv(inpath,low_memory=False)

pandas在读取的时候可能把同一列数据中相同的数值识别为不同的类型,因此可能会报错mixed types,所以我们在这里设置low_memory的参数为False或者直接定义每一列的数据类型可以避免这个问题,在这里将low_memory的参数设置为False。使用low_memory=False是因为:pandas会一次将所有数据读取完,只对数据类型进行一次猜测 ,但是这种方法如果文件过大可能会造成内存溢出。

(2) 删除指定字段:

# 删除第四个字段和后两个字段
df = df.drop(['user_geohash','Unnamed: 6','Unnamed: 7'],axis=1)

这里axis=1,指定删除列。

(3)为索引加名为id:

#为索引添加名字,并完成加1操作
df.index.name='id'
df.index+=1

这里我们为索引添加一个名字为id,再把其加1就可以了。

(4)修改时间字段:

# 修改、分割时间字段
df['time'] = df['time'].str.split(' ',expand=True)[0]

添加参数expand=True,将列表分为两列,右边的[0]选定生成两列里的第一列。

(5)添加省份字段:

#随机添加省份
df['province']=-1
city_list=['河北省','山西省','辽宁省','吉林省','黑龙江省','江苏省','浙江省','安徽省','福建省','江西省','山东省','河南省','湖北省','湖南省','广东省','海南省','四川省','贵州省','云南省','陕西省','甘肃省','青海省','台湾省']
print(df.shape[0])
xu = []
for i in range(df.shape[0]):city = random.choice(city_list)xu.extend([city])
df['province']=xu

这里也没什么可说的。

(6)导出文件

outpath = ('导出路径')
df.to_csv(outpath,header = 0,encoding="utf-8-sig")

header=0表明不输出表头,==encoding=“utf-8”==表明输出的编码格式。

二、Hive数据分析

注意:

1、文章里的表名、路径、主机名、表名、数据库名都是我自己环境里的,需要根据自己的环境进行改写。

2、所有都是不出错的情况下进行,在实际执行过程中难免会遇到各种各样的问题,可以在这里评论如果我理解的我会解答,不知道的话我也会和大家一起找解决办法。

3、因为数据预处理阶省份是随机插入的,所以如果是做了数据预处理之后拿来的数据做关于省份的分析语句出来的结果也会不一样的。

【一】将处理完成的数据上传至HDFS保存

1、打开虚拟机,利用VMtools、xshell或xftp等工具把处理完的数据上传到虚拟机上;

2、启动Hadoop:进入/etc/sbin/下用start-all.sh

3、将数据上传至HDFS;

hdfs dfs -put /本地的路径 /hdfs的路径

4、查看是否上传成功:

hdfs dfs -ls /hdfs上传的路径

【二】根据上传至HDFS的文件构建数据仓库Hive

1、进入Hive:用hive命令

2、构建数据仓库hive,把数据从hdfs上传至Hive:

# 查看数据库
hive>show databases;# 构建数据库
hive>create database hive;# 使用hive数据库
hive>use hive;# 创建表(我这里用,隔开,可以自定义分隔符)
hive>create table bigdata_user (id int,user_id string,item_id string,behavior_type int,item_category int,time date,province string) row format delimited fields terminated by ',';#上传数据
hive>load data inpath ‘/hive/data/small_user_out.csv’ into table bigdata_user;

【三】Hive数据分析

1、根据user_id查询不重复的数据有多少行。

hive>select count(distinct user_id) >from bigdata_user;

在这里插入图片描述

2、查询不重复的数据有多少行。

hive>select count(*) >from (select user_id,item_id,behavior_type,item_category,time,province from bigdata_user group by user_id,item_id,behavior_type,item_category,time,province having count(*)=1)a;

在这里插入图片描述

3、统计时间在2014-12-11和2014-12-12这两天商品售出总和。

hive>select count(*)>from bigdata_user>where time='2014-12-11' and time='2014-12-12' and behavior_type=4;

在这里插入图片描述

4、以月的第n天为统计单位,依次显示第n天网站卖出去的商品的个数。

hive>select count(distinct user_id), day(time) >from bigdata_user >where behavior_type='4' group by day(time);

在这里插入图片描述

5、取给定时间和给定地点,我们可以求当天发出到该地点的货物的数量。(如查看2014-12-12发货到江西的数量。)

(1)查看发到所有地方的货物数量。
hive>select time,province,count(*)>from bigdata_user>where behavior_type=4>group by time,province;
(2)查看发到江西省的货物数量。
hive>select count(*) >from bigdata_user >where province='江西省' and time='2014-12-12' and behavior_type='4';

在这里插入图片描述

6、统计出2014-12-11的购买数、浏览数,分析购买率。

hive>select count(if(behavior_type='4',1,null)),count(if(behavior_type<>'4',1,null)), count(if(behavior_type='4',1,null))/count(if(behavior_type<>'4',1,null))*100 >from bigdata_user >where time ='2014-12-11';

在这里插入图片描述

7、在2014-12-12这天,用户10001082的所有点击行为数、所有用户的点击行为数、并获取用户10001082的所有点击行为数占所有用户的点击行为数的比例。

hive>select count(if(user_id='10001082',1,null)),count(user_id),count(if(user_id='10001082',1,null))/count(user_id)*100 >from bigdata_user >where behavior_type='1' and time ='2014-12-12';

在这里插入图片描述

8、查询取时间为2014-12-12每个地区当天的浏览数。

hive>select province, count(behavior_type) >from bigdata_user >where behavior_type='1' and time ='2014-12-12' group by province;

在这里插入图片描述

9、从时间维度统计商品售出明细。

hive>select time,item_id,count(province),collect_set(province) 		>from bigdata_user >group by time,item_id order by time;

在这里插入图片描述


http://chatgpt.dhexx.cn/article/DUkyxF2l.shtml

相关文章

Python交互式数据分析报告框架~Dash介绍

原文作者&#xff1a;Plotly,Chris Pamer 原文链接&#xff1a; https://link.jianshu.com/?thttps%3A%2F%2Fmedium.com%2F%40plotlygraphs%2Fintroducing-dash-5ecf7191b503 译者序&#xff1a;原文于2017年6月21日发布&#xff0c;时过半载&#xff0c;将这篇既不是教程…

CESI: Canonicalizing Open Knowledge Bases using Embeddings and Side Information

开放性知识库的规范化&#xff08;个人理解&#xff1a;这里的规范化实际上就是将相同语义的实体或关系聚集在一起&#xff0c;从而表示一个实体或关系&#xff09;&#xff0c;主要是OPENie提取的过程中没有进行区分&#xff0c;最近的研究发现&#xff0c;开放KBS的规范化实际…

计算机一级仿宋gb2312,仿宋gb2312字体

一般情况下&#xff0c;这款软件在试用的过程可能还有点小问题&#xff0c;但是正所谓瑕不掩瑜&#xff0c;相信用不了多久&#xff0c;只要程序猿给力点&#xff0c;这种小小的反馈不爽就可以解决。 仿宋gb2312字体字体简介 仿宋_GB2312字体是印刷字体的一种 &#xff0c;仿照…

Supervisor部署(离线部署需要提前下载部署包)

1.软件准备 下载tar包&#xff1a;wget https://pypi.python.org/packages/source/s/supervisor/supervisor-3.1.3.tar.gz 解压&#xff1a;tar -xvf supervisor-3.1.3.tar.gz 进入解压包&#xff1a;cd supervisor-3.1.3 开始安装&#xff1a;python setup.py install 下载me…

Docker 学习之 Docker 容器数据卷

容器数据卷 什么是容器数据卷 docker 理念回顾 将应用和环境打包成一个镜像&#xff01; 问题&#xff1a;数据&#xff1f;如果数据都在容器中&#xff0c;那么我们删除容器&#xff0c;数据就会丢失&#xff01;需求&#xff1a;数据可以持久化&#xff01; 容器之前可以…

Supervisor 安装与配置

文章目录 Supervisor 安装与配置一、介绍二、名词释义三、Supervisor 安装三、Supervisor 配置四、启动控制终端五、注册为系统服务六、管理界面1、管理界面的弊端 Supervisor 安装与配置 一、介绍 ​ Supervisor 是用Python开发的一个 client/server 服务&#xff0c;是Linu…

使用Cesi+Supervisor实现进程管理

使用CesiSupervisor实现进程管理 相信很多的运维小伙伴都是饱受进程丢失的痛苦&#xff0c;最怕半夜被手机吵醒&#xff0c;那一定是经理想你 不管进程是前台运行还是后台静默运行&#xff0c;我们都需要能监控其进程状态。 原因有三&#xff1a; 一&#xff0c;在意外结束时…

echarts学习笔记1

可视化面板介绍 ​ 应对现在数据可视化的趋势&#xff0c;越来越多企业需要在很多场景(营销数据&#xff0c;生产数据&#xff0c;用户数据)下使用&#xff0c;可视化图表来展示体现数据&#xff0c;让数据更加直观&#xff0c;数据特点更加突出。 [外链图片转存失败,源站可能…

supervisor集群管理

1.介绍 Supervisor是一个进程管理工具&#xff0c;就是有一个进程需要每时每刻不断的运行&#xff0c;但是这个进程又有可能由于各种原因有可能停止运行。supervisor官网&#xff1a;http://www.supervisord.org/ 当进程停止运行的时候我们希望能自动重新启动&#xff0c;Super…

UOS桌面操作系统专业版字体

fc-list |sort| awk {print $1 } |uniq| wc -l cesi授权的字体 /usr/share/fonts/fonts-cesi/CESI_FS_GB13000.TTF: CESI仿宋\-GB13000,CESI_FS_GB13000:styleRegular /usr/share/fonts/fonts-cesi/CESI_FS_GB18030.TTF: CESI仿宋\-GB18030,CESI_FS_GB18030:styleRegular /…

罗马仕荣获中国质量认证中心、CESI颁发的全国首批“双新认证”证书

2022年11月25日&#xff0c;2022&#xff08;冬季&#xff09;亚洲户外电源大会于深圳市南山区科兴科学园ECO国际会议中心举办。本次大会由中国电子技术标准化研究院、北京京东世纪贸易有限公司、充电头网、全国电子产品安全标准化技术委员会、工信部锂离子电池及类似产品标准化…

supervisor 的 web 管理工具 cesi

一、supervisor 配置 说明&#xff1a;如果只是使用 supervisor 自带的 web&#xff0c;仅如下配置就可以vim /etc/supervisor/supervisord.conf[inet_http_server] ; inet (TCP) server disabled by default port192.168.5.149:9001 ; ip_address:port specif…

管理ELK进程工具: Supervisor Cesi

一、Supervisor简介 supervisor是一个Linux/Unix系统上的进程监控工具&#xff0c;supervisor是一个Python开发的通用的进程管理程序&#xff0c;可以管理和监控Linux上面的进程&#xff0c;能将一个普通的命令行进程变为后台daemon&#xff0c;并监控进程状态&#xff0c;异常…

CeSi 进程集中管理部署

一&#xff1a;安装环境 CentOs 7环境 sudo yum install -y git epel-releasesudo yum install -y python34 python34-pip 二&#xff1a; 安装CeSi https://github.com/Gamegos/cesi 有详细的安装步骤&#xff0c;需要安装一些工具 ## 安装yarn curl --silent --location http…

Linux 系统进程守护工具 cesi + superviosr

一、安装 Supervisor pip install supervisor 使用 echo_supervisord_conf 命令生成默认配置文件 echo_supervisord_conf > /etc/supervisord.conf 配置文件说明 位置&#xff1a;etc/supervisord.conf内容&#xff1a;# 指定了socket file的位置 [unix_http_server] f…

进程管理工具-Supervisord +CeSi

Supervisor 简介 Supervisor 是一个用 Python 写的进程管理工具&#xff0c;可以很方便的用来在 UNIX-like 系统&#xff08;不支持 Windows&#xff09;下启动、重启&#xff08;自动重启程序&#xff09;、关闭进程&#xff08;不仅仅是 Python 进程&#xff09; Superviso…

通过 CeSi + Supervisor 可视化集中管理服务器节点进程

通过 CeSi Supervisor 可视化集中管理服务器节点进程 简介Supervisor 的安装及基本使用1. 安装2. 基本使用 2.1 启动 supervisor2.2 Supervisor 客户端 supervisorctl安装配置 CeSi1. 简介2. 安装3. 配置4. 启动Supervisor 服务设置开机自启动参考链接 通过 CeSi Supervis…

第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI

第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍安装解压安装依赖修改配置注册为系统服务启动登录一下&#xff0c;发现报错了解决方法 介绍 前一篇我们安装好了supervisor&#xff0c;supervisor自带了一个UI界面&#xff0c;不太好用&#xff…

CeSi 安装与配置

文章目录 CeSi 安装与配置一、介绍二、CeSi 安装三、CeSi 配置四、CeSi 启动五、管理界面 CeSi 安装与配置 一、介绍 ​ CeSi(Centralized Supervisor Interface) 是 Supervisor 官方推荐的集中化管理 Supervisor 实例的 Web UI&#xff0c;该工具是用 Python 编写&#xff0…

iis发布网站时出现根目录文件解决方案

Window server 发布 vs打包的web应用时出现根目录文件 在web.config配置文件中 &#xff0c;modules 节点前加上 runAllManagedModulesForAllRequests“true”