#Python#Polars#Pandas#DuckDB

Python Moderno: Polars vs Pandas vs DuckDB

2026-01-22 DataFusionX Labs 15 min read
Python Data Engineering

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.

Polars vs Pandas Performance Comparison

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?

  1. Escrito em Rust: Sem o overhead do interpretador Python e sem GIL (Global Interpreter Lock).
  2. Apache Arrow: Usa o formato de memória colunar padrão da indústria (zero-copy integration com PyArrow).
  3. Query Optimizer: A API Lazy (scan_csv) permite que o Polars reordene operações. Se você faz um filter depois de um join, 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.