https://github.com/Rafael-soares-oliveira/benchmark_pandas_vs_polars

Quem trabalha com dados já deve ter enfrentado esse dilema: aquele arquivo CSV que não é grande o suficiente para justificar um cluster Spark ou Dask, mas também não cabe confortavelmente no Pandas, principalmente em ambientes com recursos limitados.
No meu caso, o obstáculo era um pipeline de ETL encarregado de processar mais de 30 milhões de registros (cerca de 1GB+ compactado).
O script legado em Pandas enfrentava dois problemas clássicos:
- Consumo de Memória (RAM): o Pandas tradicional cria diversas cópias intermediárias dos dados. Para processar 1GB, ele sequestrava facilmente 7GB de RAM, levando a erros de Out-of-Memory¹ (OOM) em ambientes com recursos limitados.
- Performance: execução single-core, deixando ociosos os outros núcleos da CPU.
Para driblar o gargalo de memória, decidi experimentar o Polars, uma biblioteca que vem ganhando espaço como alternativa ao Pandas. Ele traz ganhos reais de eficiência, mas ainda carrega algumas limitações frente ao veterano:
- Integração com o Ecossistema Python: Pandas é onipresente e conversa nativamente com quase todas as bibliotecas de Machine Learning e visualização. O Polars ainda possui limitações nesse aspecto.
- Comunidade e Documentação: por ser mais novo, o Polars conta com uma base de usuários menor e menos material de apoio.
- Curva de Aprendizado: quem está acostumado ao estilo Pandas precisa se adaptar à sintaxe baseada em expressões e ao modo Lazy, o que exige um tempo de ajuste.
- Cenários de Uso: em datasets pequenos ou operações simples, o Pandas continua sendo tão rápido quanto, e sem a complexidade extra do Polars.
- Escalabilidade: Polars é extremamente rápido em uma única máquina, mas não suporta execução distribuída em clusters; já o Pandas, embora mais lento, pode escalar via integração com Dask para processamento paralelo.

Código em Pandas - Autor

Código em Polars - Autor
Para avaliar de fato o impacto, preparei um benchmark comparando Pandas e Polars. O objetivo era claro:
- Demonstrar estratégias de otimização de memória.