当前位置: 首页 > news >正文

Python 库 DuckDB

Python 库 DuckDB

DuckDB 是一个开源的、嵌入式列式存储的数据库管理系统(DBMS),专为 在线分析处理(OLAP)数据分析 场景设计。它被称为“分析型数据库的 SQLite”。


DuckDB 是什么?一句话介绍

DuckDB 是一个轻量级、高性能、零配置的嵌入式分析数据库,适合处理本地数据分析任务,就像 SQLite 之于事务处理,DuckDB 之于数据分析。


核心特点

特性 说明
嵌入式(In-process) 直接运行在应用程序中(如 Python、R、C++),无需独立服务器
列式存储(Column-oriented) 非常适合聚合查询(SUM​, AVG​, GROUP BY​)
高性能 对大量数据的分析查询速度极快,支持向量化执行引擎
SQL 支持完整 支持标准 SQL(包括窗口函数、CTE、JOIN 等)
零配置 不需要安装、启动服务、管理用户等复杂操作
支持多种数据格式 可直接查询 CSV、Parquet、JSON、Arrow 等文件
多语言接口 Python、R、Java、C/C++、Node.js、Go、.NET 等都支持
开源免费 MIT 许可证,可商用

与 SQLite 对比

特性 SQLite DuckDB
存储方式 行式存储 列式存储
主要用途 事务处理(OLTP) 数据分析(OLAP)
查询性能(分析类) 一般 非常快
文件大小支持 小到中等 中到大(TB 级别压缩数据)
内存使用 较高(但可配置)
是否需要服务 否 ✅(都是嵌入式)

所以:

  • 你要做 增删改查 + 事务 → 用 SQLite
  • 你要做 数据分析 + 聚合 + 统计 → 用 DuckDB

Python 示例:用 DuckDB 分析 CSV 文件

import duckdb# 直接查询 CSV 文件(无需加载到内存)
result = duckdb.sql("""SELECT country,AVG(price) as avg_price,COUNT(*) as countFROM 'sales.csv'WHERE date >= '2023-01-01'GROUP BY countryORDER BY avg_price DESCLIMIT 10
""").df()  # 结果转为 Pandas DataFrameprint(result)

✅ 不需要先用 pandas.read_csv()​ 加载整个文件,DuckDB 会按需读取和过滤。


常见使用场景

1. 替代 Pandas 做大数据分析

  • 当你的 CSV 超过 1GB,Pandas 变慢时,用 DuckDB 更高效。

2. ETL 数据预处理

-- 清洗并导出为 Parquet
COPY (SELECT * FROM 'raw_data.csv'WHERE valid_email(email)
) TO 'clean_data.parquet';

3. Jupyter Notebook 中的快速分析

  • 直接在 notebook 里写 SQL 分析本地文件,比写 Python 更简洁。

4. BI 工具后端

  • Power BI、Tableau、Superset 等可通过插件连接 DuckDB。

5. 边缘计算 / 桌面应用内嵌分析

  • 嵌入到桌面软件中,用于本地报表生成。

安装 DuckDB(Python)

pip install duckdb

然后就可以在 Python 中使用:

import duckdb# 创建内存数据库
con = duckdb.connect()# 或连接到文件(持久化)
# con = duckdb.connect('my_data.db')con.execute("CREATE TABLE items AS SELECT * FROM 'items.csv'")
print(con.execute("SELECT COUNT(*), AVG(price) FROM items").fetchall())

高级功能

功能 说明
Parquet 支持 SELECT * FROM 'data.parquet'
Arrow 集成 与 PyArrow 高效交互
窗口函数 ROW_NUMBER()​, RANK()​, LAG()
用户自定义函数(UDF) 用 Python/C 写自定义函数
并发查询 支持多线程查询(GIL 友好)
加密扩展(企业版) 支持数据库加密

生态工具

  • MotherDuck:DuckDB 的云服务版本(类似“DuckDB in the Cloud”)
  • Polars / Inquirer DB:与 DuckDB 深度集成的数据分析库
  • DBT-DuckDB:支持用 dbt(data build tool)构建数据管道

✅ 总结:DuckDB 适合谁?

用户类型 是否适合 DuckDB
数据分析师 ✅ 强烈推荐!本地分析神器
数据工程师 ✅ ETL、数据清洗
Python 开发者 ✅ 替代 Pandas 处理大文件
Web 后端开发 ❌ 不适合高并发 OLTP
移动 App ❌ 当前不支持(但未来可能)

官网 & 资源

  • 官网:https://duckdb.org
  • 文档:https://duckdb.org/docs/
  • GitHub:https://github.com/duckdb/duckdb
  • MotherDuck(云版):https://motherduck.com

如果你正在用 Pandas 处理大 CSV 文件觉得慢,试试 DuckDB,你会发现:“原来分析可以这么快!”

http://www.aitangshan.cn/news/605.html

相关文章:

  • OpenCV入门(16):图像滤波(平滑处理)
  • Luogu题解:P13594 『GTOI - 1A』Bath
  • G. ABBC or BACB
  • 第十一届能源材料与电力工程学术会议(ICEMEE 2025)
  • JetBrains WebStorm 2025.2 (macOS, Linux, Windows) - JavaScript 和 TypeScript IDE
  • 牛逼!花了9天,开发了一款一站式智能测试平台:STP!
  • 第八届IEEE机电一体化与计算机技术工程国际学术会议(MCTE 2025)
  • VMware Avi Load Balancer 30.2.4 - 多云负载均衡平台
  • VMware NSX 4.2.3 - 网络安全虚拟化平台
  • JetBrains IDE 2025.2 (macOS, Linux, Windows) - 跨平台开发者工具
  • JetBrains IntelliJ IDEA 2025.2 (macOS, Linux, Windows) - 领先的 Java 和 Kotlin IDE
  • 题解:AT_agc033_e [AGC033E] Go around a Circle
  • 【经管文化主题|高录用快检索】第七届经济管理与文化产业国际学术会议
  • 多线程
  • JetBrains CLion 2025.2 (macOS, Linux, Windows) - C 和 C++ 跨平台 IDE
  • 快消巨头杨掌柜:用纷享销客CRM实现渠道数字化升级
  • Omnissa Unified Access Gateway 2506 - 远程安全的应用程序访问
  • Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
  • 第七届经济管理与文化产业国际学术会议(ICEMCI 2025)
  • cookie,session,localstorage,sessionstorage一次讲清楚
  • Maven jar上传Nexus教程
  • 7.1组合计数
  • 浅学 FHQ
  • DeepCompare文件深度对比软件:智能文本对比与差异统计功能完全指南
  • 单据上采购数量按3个单位分别显示数量
  • 致敬2025年还在写博客的你
  • MyBatis-Plus
  • 概率论的基础
  • Docker
  • 【IEEE出版】第三届电力、电网和储能国际学术会议(PGES 2025)