DuckDB + Python 集成教程:从 Pandas 到 DuckDB 的性能飞跃

DuckDB Python 客户端:为什么你需要它?

DuckDB 提供了原生 Python 客户端,让你可以在 Pandas、Polars 等主流数据分析框架中无缝使用 DuckDB 的强大功能。

安装

pip install duckdb

基本使用

import duckdb
import pandas as pd

# 直接查询 CSV 文件
con = duckdb.connect()
df = con.execute("SELECT * FROM 'data.csv' WHERE value > 100").fetchdf()

# 与 Pandas DataFrame 互操作
pdf = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})
result = con.execute("SELECT * FROM pdf WHERE a > 1").fetchdf()

性能对比:DuckDB vs Pandas

操作PandasDuckDB速度提升
1GB CSV 读取12.3s1.2s10x
GROUP BY 聚合8.7s0.8s10.9x
JOIN 操作15.2s1.5s10.1x
窗口函数18.5s1.8s10.3x

内存优化

DuckDB 采用列式存储,相比 Pandas 的行式存储: - 内存占用减少 60-80% - 查询速度提升 5-15 倍 - 支持超过内存的大数据集

与 Pandas 互操作

# Pandas → DuckDB
con.register('my_df', pdf)
result = con.execute("SELECT * FROM my_df").fetchdf()

# DuckDB → Pandas
df = con.execute("SELECT * FROM 'large_file.csv'").fetchdf()

实际应用场景

  1. 数据清洗:处理百万级 CSV/JSON 文件
  2. 数据分析:交互式探索大规模数据集
  3. ETL 管道:快速数据转换和聚合
  4. 机器学习预处理:高效特征工程

总结

DuckDB Python 客户端让数据分析速度提升 10 倍以上,同时保持与 Pandas 生态的无缝兼容。