(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用

duckdb,python · 浏览次数 : 3

小编点评

本文介绍了DuckDB在Python中的使用方法和相关知识。 1. **DuckDB简介**:本文首先介绍了DuckDB的背景,它是一个高性能的关系型数据库,已经在GitHub上发布了1.0.0版本,具有强大的单机数据分析性能。 2. **Python中对DuckDB的安装和使用**:作者以mamba为例,说明了在Python环境下安装DuckDB和相关的分析工具的方法,包括创建虚拟环境、安装依赖包等步骤。 3. **数据集的导入**:文章详细展示了如何导入不同格式的数据集,包括CSV、parquet、json等,并对比了DuckDB与其他框架(如pandas、polars)在读取这些格式数据时的性能差异。 4. **SQL查询和分析**:介绍了DuckDB支持在Python中通过SQL语句执行常见的分析运算,包括数据筛选、连接等操作的耗时比较。 5. **结果转换和输出**:讲解了DuckDB在Python中如何将计算结果转换成多种格式的文件,包括针对Python对象的直接输出以及导出为常用的数据格式。 总的来说,文章全面介绍了DuckDB在Python中的应用,从安装到数据操作,再到结果转换,涵盖了数据分析过程中可能用到的主要功能。

正文

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes

1 简介

  大家好我是费老师,就在几天前,经过六年多的持续开发迭代,著名的开源高性能分析型数据库DuckDB发布了其1.0.0正式版本。

  DuckDB具有极强的单机数据分析性能表现,功能丰富,具有诸多拓展插件,且除了默认的SQL查询方式外,还非常友好地支持在PythonRJavaNode.js等语言环境下使用,特别是在Python中使用非常的灵活方便,今天的文章,费老师我就将带大家一起快速了解DuckDBPython中的常见使用姿势😎~

2 DuckDB在Python中的使用

  DuckDB的定位是嵌入式关系型数据库,在Python中安装起来非常的方便,以当下最主流的开源Python环境管理工具mamba为例,直接在终端中执行下列命令,我们就一步到位的完成了对应演示虚拟环境的创建,并在环境中完成了python-duckdbjupyterlabpandaspolars等相关分析工具的安装:

mamba create -n duckdb-demo python=3.9 -y && mamba activate duckdb-demo && mamba install python-duckdb jupyterlab pandas polars pyarrow -y

2.1 数据集的导入

2.1.1 直接导入文件

  作为一款数据分析工具,能够方便灵活的导入各种格式的数据非常重要,DuckDB默认可直接导入csvparquetjson等常见格式的文件,我们首先使用下列代码生成具有五百万行记录的简单示例数据,并分别导出为csvparquet格式进行比较:

# 利用pandas生成示例数据文件
import numpy as np
import pandas as pd

generated_df = pd.DataFrame(
    {
        '类别': np.random.choice(list('ABCDEF'), 1000000),
        '数值': np.round(np.random.uniform(0, 1000000, 1000000), 3)
    }
)

# 分别导出为csv、parquet格式
generated_df.to_csv('./demo_data.csv', index=False)
generated_df.to_parquet('./demo_data.parquet')

  针对两种格式的文件,分别比较默认情况下DuckDBpandaspolars的读取速度:

  • csv格式
  • parquet格式

  可以看到,无论是对比pandas还是polarsDuckDB的文件读取性能都是大幅领先甚至碾压级的⚡。

  除此之外,DuckDB也可以通过SQL语句的方式进行等价操作:

2.1.2 读取其他框架的数据对象

  除了默认可直接读取少数几种常见数据格式外,DuckDBPython中还支持直接以执行SQL语句的方式,直接读取pandaspolars等框架中的数据框,这一点可太强大了,意味着只要是pandaspolars等框架可以读取的格式,DuckDB都可以直接“拿来吧你”🤣:

2.2 执行分析运算

  DuckDB作为一款关系型数据库,其执行分析运算最直接的方式就是写SQL,针对DuckDB默认读取到内存中的对象(DuckDB中称作关系):

  我们可以通过duckdb.sql()直接将关系当作表名,书写SQL语句进行查询分析,下面是一些简单的例子:

  比较一下与pandaspolars之间执行相同任务的耗时差异,DuckDB依旧是碾压级的存在👍:

2.3 计算结果转换

  DuckDB默认自带的文件写出接口比较少,依旧是只针对csvparquet等主流格式具有相应的write_parquet()write_csv()可以直接导出文件,但是针对PythonDuckDB提供了多样化的数据转换接口,可以快捷高效地将计算结果转换为Python对象、pandas数据框、polars数据框、numpy数组等常用格式:

  基于此,就不用担心通过DuckDB计算的数据结果不好导出为其他各种格式文件了~

  如果你恰好需要转出为csvparquet等格式,那么直接使用DuckDB的文件写出接口,性能依旧是非常强大的:

  • csv格式
  • parquet格式

  更多有关DuckDBPython中应用的内容,请移步官方文档(https://duckdb.org/docs/api/python/overview),费老师我也会在之后持续的分享DuckDB相关教程文章,欢迎持续关注,一起来熟练掌握这款数据分析利器😉。


  以上就是本文的全部内容,欢迎在评论区与我们进行讨论~

与(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用相似的内容:

(数据科学学习手札161)高性能数据分析利器DuckDB在Python中的使用

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,就在几天前,经过六年多的持续开发迭代,著名的开源高性能分析型数据库DuckDB发布了其1.0.0正式版本。 DuckDB具有

(数据科学学习手札162)Python GIS神器geopandas 1.0版本发布

本文完整代码及附件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,就在昨天,Python生态中著名的GIS分析库geopandas发布了其1.0.0正式版本。 历经10年迭代升级,geopa

(数据科学学习手札160)使用miniforge代替miniconda

本文已收录至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,conda作为Python数据科学领域的常用软件,是对Python环境及相关依赖进行管理的经典工具,通常集成在anaconda或minic

金融大模型落地新挑战

文章学习:外滩大会 | 金智塔科技首席科学家郑小林教授出席大会探讨金融大模型落地新挑战 大模型的构建非常依赖算料、算力,对高校而言,从模型合规性、隐私保护的角度去做研究是很好的切入点。依托浙大科研团队,金智塔科技在大模型的研究中发现绝大多数的数据都分布在客户手中,比如金融机构场景建设需要用到政务数据

算法金 | A - Z,115 个数据科学 机器学习 江湖黑话(全面)

大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 机器学习本质上和数据科学一样都是依赖概率统计,今天整整那些听起来让人头大的机器学习江湖黑话 A - C A/B Testing (A/B 测试) A/B测试是一种在线实验,通过对比测试两

【pandas基础】--数据整理

pandas进行数据整理的意义在于,它是数据分析、数据科学和机器学习的前置步骤。 通过数据整理可以提前了解数据的概要,缺失值、重复值等情况,为后续的分析和建模提供更为可靠的数据基础。 本篇主要介绍利用pandas进行数据整理的各种方法。 1. 数据概要 获取数据概要信息可以帮助我们了解数据的基本情况

算法金 | 选择最佳机器学习模型的 10 步指南

大侠幸会,在下全网同名[算法金] 0 基础转 AI 上岸,多个算法赛 Top [日更万日,让更多人享受智能乐趣] 机器学习和数据科学领域的工作充满挑战和乐趣,在我踏上人工智能探索之路的初期,我对能够参与项目感到无比兴奋。 我满怀热情,我急切地想投身于这些项目中。但是,我尝试开展项目,却发现在寻求顺利

算法金 | 一文彻底理解机器学习 ROC-AUC 指标

​ 大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 在机器学习和数据科学的江湖中,评估模型的好坏是非常关键的一环。而 ROC(Receiver Operating Characteristic)曲线和 AUC(Area Under C

从零在win10上测试whisper、faster-whisper、whisperx在CPU和GPU的各自表现情况

Anaconda是什么? Anaconda 是一个开源的 Python 发行版本,主要面向数据科学、机器学习和数据分析等领域。它不仅包含了 Python 解释器本身,更重要的是集成了大量的用于科学计算、数据分析和机器学习相关的第三方库,并且提供了一个强大的包管理和环境管理工具——Conda。 通过C

Lakehouse 还是 Warehouse?(1/2)

Onehouse 创始人/首席执行官 Vinoth Chandar 于 2022 年 3 月在奥斯汀数据委员会发表了这一重要演讲。奥斯汀数据委员会是“世界上最大的独立全栈数据会议”,这是一个由社区驱动的活动,包括数据科学、数据工程、分析、机器学习 (ML)、人工智能 (AI) 等。 Vinoth C