pyhive入门介绍和实例分析(探索票价与景点评分之间是否存在相关性)

本文主要是介绍pyhive入门介绍和实例分析(探索票价与景点评分之间是否存在相关性),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

PyHive 是一组 Python DB-API 和 SQLAlchemy 接口,可用于 Presto 和 Hive。它为 Python 提供了一个与 Presto 和 Hive 进行交互的平台,使得数据分析师和工程师可以更方便地进行数据处理和分析。

以下是使用 PyHive 进行数据分析时需要注意的几点:

  1. 安装和配置: 在开始之前,确保已经安装了以下软件:

    • Pip
    • Python 建议使用anaconda方便管理
    • JDK 注意兼容性
    • HivePresto
    • 版本兼容性: 确保 PyHive 版本与 Hive 或 Presto 版本兼容。不同版本之间可能会有一些差异,需注意兼容性。
      安装 PyHive 可以使用以下命令:
    pip install pyhive [hive]
    

    如果你想安装 Presto 驱动器,请使用以下命令:

    pip install pyhive [presto]
    
  2. 连接 Hive 数据库: 使用 PyHive 连接 Hive 数据库非常简单。你需要传递正确的连接参数,例如:

    from pyhive import hive
    connection = hive.Connection(host='localhost', port=10000, database='mydatabase')
    
  3. 执行查询: 使用 PyHive 执行查询也很容易,只需使用游标对象来执行查询:

    cursor = connection.cursor()
    cursor.execute('SELECT * FROM mytable')
    result = cursor.fetchall()
    for row in result:print(row)
    
  4. 使用 Pandas 进行数据分析: 如果你更喜欢使用 Pandas 进行数据分析,可以将查询结果转换为 Pandas DataFrame

    import pandas as pd
    df = pd.read_sql('SELECT * FROM mytable', connection)
    print(df)
    

代码示例

from pyhive import hive# 设置连接参数
host = 'your_host'
port = 10000
username = 'your_username'
password = 'your_password'
database = 'your_database'# 建立连接
conn = hive.Connection(host=host, port=port, username=username, password=password, database=database)# 创建 Cursor 对象
cursor = conn.cursor()# 执行查询
query = "SELECT * FROM your_table LIMIT 10"
cursor.execute(query)# 获取查询结果
results = cursor.fetchall()# 处理结果
for row in results:print(row)# 关闭连接
cursor.close()
conn.close()

分析实例

现有两个hive表,表结构大约为:

image.png
image.png

需要实现需求:

票价与评分的关系: 探索票价与景点评分之间是否存在相关性。分析不同票价档次下景点的评分分布情况,以确定价格对游客评价的影响程度。

首先 找到所有非空的景区,

在xiecheng表中找到所有averagescore不为null的数据,在qvna表中找到所有price不为null的数据。

联合查询:
将两表所需数据放在一起。

将查询到的数据放到新的表中以方便后续查找和使用:

分类查找并计算平均值:

代码:


# Author: 冷月半明
# Date: 2023/12/6
# Description: This script does XYZ.from pyhive import hivedef creatConnection():conn = hive.Connection(host='******', port=10000, username='root')return conn# 连接到 Hive
conn = creatConnection()
cursor = conn.cursor()# 进入数据库
query = "use cjw_data"
cursor.execute(query)
# 查询去哪价格非空的景区
# query = "SELECT id,price FROM qvna WHERE price IS NOT NULL"
# 查询携程平均分非空的景区
# query = "SELECT id,averagescore FROM xiecheng WHERE averagescore IS NOT NULL"
# 将查询到的id,title,价格,平均分等数据存储到新的表中
# query = "CREATE TABLE priceAndCore AS " \
#         "SELECT qvna_clean.id,title,price,averagescore "\
# "FROM "\
# "    (SELECT id ,title,price FROM qvna WHERE price IS NOT NULL) AS qvna_clean "\
# "JOIN "\
# "    (SELECT id,averagescore FROM xiecheng WHERE averagescore IS NOT NULL) AS xiecheng_clean "\
# "ON qvna_clean.id = xiecheng_clean.id " \
#         # " LIMIT 5"\# 计算各个区间票价景点之间的平均评价分
query = "SELECT "\" CASE "\"     WHEN price <= 50 THEN '低' "\" WHEN price <= 100 THEN '中' "\"  ELSE '高' "\"  END AS price_level, "\"AVG(averagescore) AS average_score "\
"FROM "\
"    priceAndCore "\
"GROUP BY "\
"    CASE "\
"        WHEN price <= 50 THEN '低' "\
"        WHEN price <= 100 THEN '中' "\
"        ELSE '高' "\
"    END"\# " LIMIT 5"\cursor.execute(query)
tables = cursor.fetchall()
print('行数',len(tables))# 打印数据库列表
for tables in tables:print(tables)# 关闭连接
cursor.close()
conn.close()

这篇关于pyhive入门介绍和实例分析(探索票价与景点评分之间是否存在相关性)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/851688

相关文章

C++ Sort函数使用场景分析

《C++Sort函数使用场景分析》sort函数是algorithm库下的一个函数,sort函数是不稳定的,即大小相同的元素在排序后相对顺序可能发生改变,如果某些场景需要保持相同元素间的相对顺序,可使... 目录C++ Sort函数详解一、sort函数调用的两种方式二、sort函数使用场景三、sort函数排序

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

C# WinForms存储过程操作数据库的实例讲解

《C#WinForms存储过程操作数据库的实例讲解》:本文主要介绍C#WinForms存储过程操作数据库的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、存储过程基础二、C# 调用流程1. 数据库连接配置2. 执行存储过程(增删改)3. 查询数据三、事务处

springboot security验证码的登录实例

《springbootsecurity验证码的登录实例》:本文主要介绍springbootsecurity验证码的登录实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录前言代码示例引入依赖定义验证码生成器定义获取验证码及认证接口测试获取验证码登录总结前言在spring

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE