Durante mais de uma década, o Pandas reinou absoluto como a ferramenta padrão para manipulação de DataFrames em Python. No entanto, com o aumento contínuo no volume de dados, o modelo single-threaded e o consumo de memória do Pandas se tornaram desafios.
Surgiu então o Polars: uma biblioteca escrita em Rust, projetada do zero para execução paralela, computação preguiçosa (lazy evaluation) e baixo consumo de RAM.
Comparativo de Sintaxe
Filtragem e Agregação no Polars
import polars as pl
# Carregamento Lazy (não carrega tudo na RAM de imediato)
df_lazy = pl.scan_csv("eventos_uberaba.csv")
resultado = (
df_lazy
.filter(pl.col("categoria") == "Python & IA")
.groupby("bairro")
.agg([
pl.col("participantes").sum().alias("total_participantes"),
pl.col("rating").mean().alias("media_avaliacao")
])
.sort("total_participantes", descending=True)
.collect() # Executa a query otimizada em paralelo!
)
print(resultado)
Tabela Comparativa
| Recurso | Pandas 2.x | Polars |
|---|---|---|
| Linguagem Base | C / Cython / Python | Rust |
| Processamento | Mono-thread (por padrão) | Multi-thread paralelo |
| Computação | Eager (Imediata) | Eager & Lazy (Otimizada) |
| Memória | Cópia frequente de dados | Zero-copy via Apache Arrow |
Qual Escolher?
- Use Pandas se o seu projeto consome ecossistemas legados ou bibliotecas que exigem DataFrames nativos do Pandas.
- Use Polars se você trabalha com arquivos CSV/Parquet maiores que alguns Gigabytes e precisa de performance extrema sem depender de clusters Spark.