#Python#Polars#Pandas#DuckDB
Python Moderno: Polars vs Pandas vs DuckDB
2026-01-22 DataFusionX Labs 15 min read
O Fim da Era Single-Core
Moore's Law parou de aumentar a velocidade do clock e passou a aumentar o número de cores. O Pandas, criado em 2008, não acompanhou essa mudança. Ele roda em uma única thread. O Polars e o DuckDB nasceram na era multi-core.
Benchmark: Processando 50 Milhões de Linhas
Realizamos um teste simples: Ler um CSV de 5GB, filtrar, agrupar e calcular a média.
Pandas (Legado)
import pandas as pd
import time
start = time.time()
df = pd.read_csv("large_data.csv")
result = df[df['value'] > 100].groupby('category').mean()
print(f"Pandas Time: {time.time() - start:.2f}s")
# Resultado: ~45 segundos (e alto uso de RAM)
Polars (Moderno)
import polars as pl
import time
start = time.time()
# Scan (Lazy) permite otimização antes da execução
q = (
pl.scan_csv("large_data.csv")
.filter(pl.col("value") > 100)
.group_by("category")
.agg(pl.col("value").mean())
)
result = q.collect() # Execução paralela real
print(f"Polars Time: {time.time() - start:.2f}s")
# Resultado: ~4 segundos (10x mais rápido)
Por que Polars é tão rápido?
- Escrito em Rust: Sem o overhead do interpretador Python e sem GIL (Global Interpreter Lock).
- Apache Arrow: Usa o formato de memória colunar padrão da indústria (zero-copy integration com PyArrow).
- Query Optimizer: A API Lazy (
scan_csv) permite que o Polars reordene operações. Se você faz umfilterdepois de umjoin, o Polars automaticamente empurra o filtro para antes do join.
DuckDB: SQL no seu Laptop
O DuckDB complementa o Polars permitindo rodar SQL analítico em arquivos locais.
import duckdb
# Query direta em arquivo Parquet
duckdb.sql("SELECT category, AVG(value) FROM 'data.parquet' WHERE value > 100 GROUP BY category").show()
Conclusão
Para engenharia de dados moderna em Python, o combo Polars + DuckDB é imbatível. Deixe o Pandas para exploração de dados pequenos (< 1GB) em notebooks.
./SUBSCRIBE_UPDATES
// Receba dicas de FinOps, cases de otimização e novidades sobre engenharia de dados.