使用 Python、Parquet 和 DuckDB 构建现代数据分析堆栈

现代数据分析不一定很复杂。了解 Python、Parquet 和 DuckDB 在实践中如何协同工作。

来源:KDnuggets

简介

近年来,数据分析发生了变化。将所有内容加载到关系数据库并运行 SQL 查询的传统方法仍然有效,但对于某些分析工作负载来说通常有些过头了。将数据存储在 Parquet 文件中并直接使用 DuckDB 查询它们更快、更简单、更有效。

在本文中,我将向您展示如何在 Python 中构建数据分析堆栈,该堆栈使用 DuckDB 查询 Parquet 文件中存储的数据。我们将使用示例数据集,探索每个组件的工作原理,并了解为什么这种方法对您的数据科学项目有用。

您可以在 GitHub 上找到代码。

先决条件

在我们开始之前,请确保您拥有:

  • 安装了 Python 3.10 或更高版本
  • 了解 SQL 基础知识和 pandas DataFrame 操作
  • 熟悉数据分析概念
  • 同时安装所需的库:

    pip install duckdb pandas pyarrow numpy faker

    了解推荐的数据分析堆栈

    让我们首先了解每个组件的作用以及它们为何能够很好地协同工作。

    Parquet 是一种最初为 Hadoop 生态系统创建的列式存储格式。与基于行的格式(如 CSV 中每一行都是一个完整的记录)不同,Parquet 按列组织数据。这看起来似乎是一个很小的差异,但它对分析有着巨大的影响。

    当您运行的查询仅需要包含 50 列的表中的三列时,Parquet 允许您仅读取这三列。使用 CSV,您必须完整读取每一行,然后丢弃不需要的 47 列。这使得 Parquet 对于典型的分析查询速度更快。此外,列式存储可以很好地压缩,因为同一列中的值往往相似。

    您可以在 Python 开发环境中使用它。您将数据存储在 Parquet 文件中,pandas 处理数据操作,DuckDB 执行分析查询,整个 Python 生态系统可用于可视化、机器学习和自动化。

    创建示例数据集