[PYTHON] Esqueça o PANDAS! Polars é muito melhor! (ou será que não?) 🤔

Primeiramente me desculpem pela audácia de falar para esquecer o pandas, se você conhece e já utilizou deve saber que não deve fazer isso!

Segundamente, qual a minha surpresa ao descobrir o Polars e também tamanha dúvida ao decidir se deveria migrar ou não para a "nova" biblioteca.

Sem mais delongas vamos a análise:

lembrando que todos os meus testes e experiência foram em python 3.11 e 3.12

Tanto o Pandas quanto o Polars são bibliotecas poderosas de manipulação de dados em Python, mas apresentam algumas diferenças entre eles.

Desempenho:

  • Polars: Geralmente mais rápido que o Pandas, especialmente para conjuntos de dados grandes. Ele utiliza Rust para sua funcionalidade principal, oferecendo desempenho superior para operações numéricas e filtragem.
  • Pandas: Pode ser mais lento para conjuntos de dados grandes, especialmente com operações complexas.

Uso de memória:

  • Polars: Requer menos memória do que o Pandas devido às suas estruturas de dados eficientes e execução lazy. Isso o torna ideal para ambientes com recursos limitados.
  • Pandas: Usa mais memória devido à sua dependência das estruturas de dados do Python e execução eager.

Usabilidade:

  • Pandas: Possui uma sintaxe mais amigável e intuitiva, tornando-a mais fácil de aprender e usar para iniciantes.
  • Polars: Pode ser um pouco menos intuitivo do que o Pandas, especialmente devido ao seu estilo de programação funcional. No entanto, oferece uma boa documentação e tutoriais para ajudar os usuários a começar.

Funcionalidade:

  • Pandas: Oferece uma ampla gama de recursos e funcionalidades, incluindo limpeza de dados, visualização e análise estatística.
  • Polars: Concentra-se nas principais tarefas de manipulação de dados e oferece alguns recursos adicionais, como agregação e junções.

Outros pontos importantes:

  • Modelo de execução: O Pandas usa execução eager por padrão, enquanto o Polars oferece opções de execução eager e lazy.
  • Representação de dados: O Pandas usa arrays NumPy para armazenamento de dados, enquanto o Polars usa suas próprias estruturas de dados otimizadas para memória.
  • Comunidade e ecossistema: O Pandas tem uma comunidade maior e mais madura com uma ampla gama de bibliotecas e extensões disponíveis. O Polars é uma biblioteca relativamente nova, mas sua comunidade está crescendo rapidamente.
Feature Pandas Polars
Desempenho Mais lento Mais rápido
Uso de memória Maior Menor
Usabilidade Mais fácil Menos intuitivo
Funcionalidade Ampla variedade Manipulação de dados central
Modelo de execução Eager Eager ou Lazy
Representação de dados Arrays NumPy Estruturas de dados próprias
Comunidade e ecossistema Maior e mais maduro Crescendo rapidamente

Considerações finais:

Eu sugiro o Pandas quando:

  • Você precisa de uma biblioteca com uma ampla gama de recursos e funcionalidades.
  • Você é novo na manipulação de dados em Python.
  • Você prioriza a facilidade de uso e a familiaridade.

Eu sugiro o Polars quando:

  • Você está trabalhando com grandes conjuntos de dados e o desempenho é crítico.
  • Você está familiarizado com conceitos de programação funcional.
  • Você está procurando uma biblioteca mais eficiente em termos de memória.

Em última análise, a melhor escolha para você dependerá de seus requisitos e preferências específicas. Você pode até acabar usando as duas bibliotecas em diferentes situações.

Muito obrigado se você chegou até aqui e comenta ai se já conhecia, já usou ou oque achou do Polars! Abraço!

Eu particularmente estava estudando o Rust no período de 2020 a 2022. E eu programei em Rust puro nessa biblioteca e também outra que o Rust compila para um binário que o Python consegue se comunicar para chamadas de funções em Rust.

Programar em Polars é bem simples tanto em Rust quanto em Python, mas dou uma deixa para verem a biblioteca em Rust mesmo e conhecerem a linguagem porque o Cargo é muito simples de usar para compilar para aquele que tem medo de compilar código fonte, não tenham medo de Rust, pois ela não mode.

Podem selecionar na documentação tanto em Python quanto em Rust: https://pola-rs.github.io/polars/user-guide/basics/series-dataframes/