Polars

Polars, uma biblioteca de DataFrame rápida escrita em Rust com bindings para Python e outras linguagens, está chamando atenção como um possível sucessor do pandas para análise tabular em memória. Comentadores destacam grandes ganhos de velocidade e memória em conjuntos de dados grandes, uma API lazy mais consistente e parecida com SQL, além de integração estreita com Arrow e ferramentas como o DuckDB, ao mesmo tempo em que apontam trade-offs como suporte a GPU e distribuído ainda imaturo, mudanças frequentes e incompatíveis e menor compatibilidade com o ecossistema em comparação ao pandas. Muitos o veem como ideal para novos workloads críticos de desempenho, mas recomendam adoção cautelosa em codebases existentes, fortemente dependentes de pandas.

O que é o Polars

  • Biblioteca de DataFrame colunar escrita em Rust, exposta para Python, JS, Rust, R, Elixir, Ruby.
  • Construída sobre Apache Arrow com um mecanismo de consulta em estilo OLAP e execução lazy opcional.
  • Voltada para análise em memória em máquina única; ainda não há execução distribuída nem em GPU.

Desempenho vs Pandas (e Outros)

  • Muitos relatos de acelerações de uma ordem de grandeza em relação ao pandas (por exemplo, ~1 minuto → ~1 segundo) para groupbys, joins e scans em conjuntos de dados de vários GB ou com 10M+ linhas.
  • Principais vantagens citadas: implementação em Rust, multi-threading, planejamento de consultas lazy, menor uso de memória e interoperabilidade com Arrow.
  • Para conjuntos de dados pequenos (≤100k linhas), usuários dizem que as diferenças de desempenho raramente são perceptíveis para humanos.
  • Benchmarks mencionados: o db-benchmark do DuckDB mostra Polars e DuckDB muito à frente do pandas; alguns observam que o DuckDB pode ser mais rápido que o Polars em muitas cargas de trabalho.
  • Ferramentas out-of-core / distribuídas (Spark, Dask, Modin, Vaex, RAPIDS) são vistas como uma categoria diferente; pessoas alertam que incluí-las em benchmarks de nó único é um pouco enganoso.

API, Ergonomia e Ecossistema

  • Muitos acham a API do Polars mais consistente, parecida com SQL e mais fácil de raciocinar do que a do pandas; encadeamento de expressões e dataframes lazy são elogiados.
  • Outros a consideram mais verbosa, especialmente para operações linha a linha (“axis=1”) ou transversais e transformações complexas.
  • Forte interoperabilidade: troca zero-copy fácil com pandas/DuckDB via Arrow; um padrão comum é “Polars para o trabalho pesado, pandas nas bordas”.
  • Alguns reclamam que bibliotecas-chave de DS (por exemplo, scikit-learn, ferramentas de plotagem) ainda são centradas em pandas, forçando conversões.

Docs, Onboarding e Marketing

  • A landing page é criticada por assumir conhecimento de “DataFrames” e por enfatizar velocidade em vez de dizer claramente “o que é” e quais são os casos de uso.
  • A separação entre “User Guide” e “Docs” confunde alguns; outros acham a documentação sólida e apreciam a API limpa.
  • Um livro dedicado ao Polars e um guia oficial do usuário estão previstos; o Discord é usado para suporte, com preocupações de que o conhecimento fique preso no chat.

Estabilidade, Adoção e Ferramentas

  • O status pré-1.0 e as mudanças frequentes e incompatíveis fazem algumas equipes hesitarem em migrar grandes codebases; outras o usam em produção com satisfação e aceitam atualizações trimestrais.
  • Os bindings para JS são descritos como promissores, mas ainda bugados/imaturo.
  • GitHub Copilot e ferramentas semelhantes funcionam muito melhor com pandas; alguns usuários continuam no pandas principalmente pelo suporte de assistentes de IA, enquanto outros argumentam que a escolha da ferramenta não deveria ser guiada por isso.

Reflexões Mais Amplas

  • Debate sobre se só a velocidade justifica a troca, em vez de clareza e ecossistema.
  • Alguns veem o Polars como “pandas, mas rápido” e um provável sucessor de longo prazo; outros preferem mecanismos SQL (DuckDB, Postgres) ou abordagens que não usam DataFrame de forma alguma.