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

相关文章

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Python中win32包的安装及常见用途介绍

《Python中win32包的安装及常见用途介绍》在Windows环境下,PythonWin32模块通常随Python安装包一起安装,:本文主要介绍Python中win32包的安装及常见用途的相关... 目录前言主要组件安装方法常见用途1. 操作Windows注册表2. 操作Windows服务3. 窗口操作

从入门到精通C++11 <chrono> 库特性

《从入门到精通C++11<chrono>库特性》chrono库是C++11中一个非常强大和实用的库,它为时间处理提供了丰富的功能和类型安全的接口,通过本文的介绍,我们了解了chrono库的基本概念... 目录一、引言1.1 为什么需要<chrono>库1.2<chrono>库的基本概念二、时间段(Durat

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

c++中的set容器介绍及操作大全

《c++中的set容器介绍及操作大全》:本文主要介绍c++中的set容器介绍及操作大全,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录​​一、核心特性​​️ ​​二、基本操作​​​​1. 初始化与赋值​​​​2. 增删查操作​​​​3. 遍历方

java向微信服务号发送消息的完整步骤实例

《java向微信服务号发送消息的完整步骤实例》:本文主要介绍java向微信服务号发送消息的相关资料,包括申请测试号获取appID/appsecret、关注公众号获取openID、配置消息模板及代码... 目录步骤1. 申请测试系统2. 公众号账号信息3. 关注测试号二维码4. 消息模板接口5. Java测试

解析C++11 static_assert及与Boost库的关联从入门到精通

《解析C++11static_assert及与Boost库的关联从入门到精通》static_assert是C++中强大的编译时验证工具,它能够在编译阶段拦截不符合预期的类型或值,增强代码的健壮性,通... 目录一、背景知识:传统断言方法的局限性1.1 assert宏1.2 #error指令1.3 第三方解决

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,

Java Stream的distinct去重原理分析

《JavaStream的distinct去重原理分析》Javastream中的distinct方法用于去除流中的重复元素,它返回一个包含过滤后唯一元素的新流,该方法会根据元素的hashcode和eq... 目录一、distinct 的基础用法与核心特性二、distinct 的底层实现原理1. 顺序流中的去重