Skip to content

Polars vs Pandas: Escolhendo seu Campeão de Análise de Dados em 2023

A batalha entre os gigantes do processamento de dados, Polars vs Pandas, se tornou assunto do momento no mundo da análise de dados. Com o lançamento da versão 0.17.0 do Polars e do Pandas 2.0, ambas as bibliotecas estão agora travadas em uma disputa pela supremacia. Mas qual delas merece o título de biblioteca de processamento de dados de referência? Este artigo apresenta uma comparação detalhada dessas poderosas ferramentas, investigando sintaxe, velocidade e usabilidade para determinar o vencedor.

Polars e Pandas: Uma Introdução

Já passou horas esperando o código do Pandas ser executado em grandes conjuntos de dados? Conheça o Polars, uma biblioteca turbinada que oferece benefícios significativos de velocidade em relação ao seu concorrente Pandas. O Polars se destaca no processamento de data frames, superando o Pandas em eficiência e velocidade.

As versões recentes, Polars 0.17.0 e Pandas 2.0, ambas apresentam melhorias substanciais de velocidade. O novo suporte do Pandas 2.0 para Apache Arrow realmente impulsionou o desempenho, mas as operações básicas ainda são mais rápidas em arrays NumPy. O Polars 0.17.0, lançado há apenas uma semana, também recebeu elogios por suas melhorias de velocidade[^1^].

Vamos aprofundar um pouco mais e analisar as características que dão ao Polars sua vantagem:

  • Suporte a Rust: O Polars é construído usando Rust. Graças à capacidade do Rust de compilar diretamente em código de máquina, ele dispensa a necessidade de um interpretador, tornando-se mais rápido que o Python.

  • Paralelização: O Polars aproveita o multithreading, permitindo a execução paralela de operações vetorizadas em vários núcleos de CPU.

  • Interface Python: Apesar de suas bases em Rust, o Polars funciona como uma biblioteca do Python, oferecendo uma interface de processamento de dados acessível ao mesmo tempo em que obtém os benefícios de desempenho do Rust.

  • Avaliação Preguiçosa: O Polars suporta APIs de avaliação tanto preguiçosa (usada pelo Pandas) quanto ansiosa. Na avaliação preguiçosa, uma consulta é executada apenas quando necessário, enquanto na avaliação ansiosa ela é executada imediatamente.

Neste guia detalhado, iremos:

  1. Comparar a velocidade do Pandas 2.0 (com Numpy e PyArrow como backend) e do Polars 0.17.0.
  2. Ilustrar como fazer a transição de código simples para código complexo do Pandas no Polars.
  3. Realizar um duelo de desempenho entre as duas bibliotecas em uma máquina com 4 núcleos de CPU e 32 GB de RAM.

Configuração e Conjunto de Dados

Antes de irmos para as comparações, certifique-se de que as versões mais recentes do Polars e do Pandas estão instaladas na sua máquina local. Caso contrário, use o comando pip para instalação:

pip install polars==0.17.0 # Última versão do Polars
pip install pandas==2.0.0  # Última versão do Pandas

Nossa comparação será baseada em um conjunto de dados sintético com 30 milhões de linhas e 15 colunas, compreendendo 8 características categóricas e 7 numéricas. Este conjunto de dados artificial pode ser acessado aqui (opens in a new tab).

Aqui está um vislumbre do nosso conjunto de dados:

# Pandas
train_pd.head()
 
# Polars
train_pl.head()

Carregando as Bibliotecas

Em primeiro lugar, precisamos importar as bibliotecas necessárias para carregar nossos dados:

import pandas as pd
import polars as pl
import numpy as np
import time

Lendo o Conjunto de Dados

Lendo o Conjunto de Dados: Uma Análise Comparativa entre o Pandas 2.0 e o Polars 0.17

Quando se trata de lidar com conjuntos de dados enormes, a escolha da biblioteca de processamento de dados pode fazer toda a diferença. É por isso que estamos realizando uma análise aprofundada do Pandas 2.0 e do Polars 0.17, com foco nas capacidades de leitura de cada um.

Começamos comparando os tempos de leitura de arquivos parquet entre as duas bibliotecas. O parquet, como formato de arquivo de armazenamento colunar, é otimizado para uso com frameworks de processamento de big data. A capacidade de ler esses arquivos de forma rápida e eficiente é crucial ao lidar com conjuntos de dados extensos.

Nossa investigação indicou um desempenho comparável entre o Polars e o Pandas 2.0 quando se trata de leitura de arquivos parquet. No entanto, é importante observar que o Pandas, ao utilizar o backend Numpy, levou o dobro do tempo para concluir essa tarefa em comparação com o Polars.

Operações de Agregação: Polars vs. Pandas

Agora, vamos avançar para a avaliação das funções de agregação. Essas operações são essenciais na análise de dados, fornecendo estatísticas de resumo críticas para revisão dos dados.

Em termos de sintaxe e desempenho para consultas simples, o Pandas se mostrou a opção superior. No entanto, a diferença de desempenho entre as duas bibliotecas foi mínima. O Polars oferece uma vantagem única ao trabalhar com uma lista de características que devem ser agregadas usando a mesma função de agregação, uma capacidade não oferecida pelo Pandas para o cenário que avaliamos.

Operações de Filtro e Seleção: Confronto entre Pandas e Polars

Operações de filtro e seleção envolvem especificar uma condição para extração de dados do banco de dados. Nossos testes envolveram a contagem de valores únicos para colunas categóricas quando uma coluna numérica atendia a certa condição, e o cálculo da média de todas as colunas numéricas quando uma coluna categórica era igual a um certo valor.

Nessa comparação direta, o Polars superou o Pandas em termos de velocidade de execução para operações de filtro numérico em um fator de duas a cinco vezes. No entanto, vale ressaltar que o Pandas requer menos código a ser escrito, e a biblioteca tem um desempenho um pouco mais lento quando se trata de strings (características categóricas).

Visualizando seu Dataframe Pandas e Polars com o PyGWalker

PyGWalker (opens in a new tab) é uma biblioteca Python de código aberto que pode ajudá-lo a criar visualizações de dados a partir de seus dataframes do Pandas e Polars com facilidade. Por favor, forneça a tradução em português brasileiro para este arquivo markdown sem traduzir o código embutido: PyGWalker para visualização de dados (opens in a new tab)

Não é mais necessário realizar processamentos complicados com codificação Python, basta importar seus dados e arrastar e soltar variáveis para criar todos os tipos de visualizações de dados! Aqui está um vídeo de demonstração rápida sobre a operação:


Veja como usar o PyGWalker em seu Jupyter Notebook:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)

Alternativamente, você pode experimentá-lo no Kaggle Notebook/Google Colab:

Execute o PyGWalker no Kaggle Notebook (opens in a new tab)Execute o PyGWalker no Google Colab (opens in a new tab)Dê uma ⭐️ para o PyGWalker no GitHub (opens in a new tab)
Execute o PyGWalker no Kaggle Notebook (opens in a new tab)Execute o PyGWalker no Google Colab (opens in a new tab)Execute o PyGWalker no Google Colab (opens in a new tab)

O PyGWalker é construído com o apoio da nossa comunidade de código aberto. Não se esqueça de conferir o PyGWalker GitHub (opens in a new tab) e dar uma estrela!

Perguntas frequentes sobre Pandas e Polars

Ao longo desta análise, vimos tanto o Pandas quanto o Polars exibirem suas vantagens e desvantagens. Para ajudá-lo(a) a entender melhor essas duas bibliotecas, compilamos algumas perguntas frequentes:

  1. Pergunta: Por que alguém escolheria o Polars em vez do Pandas? Resposta: Alguém pode escolher o Polars em vez do Pandas ao lidar com conjuntos de dados grandes devido à sua velocidade de execução mais rápida para muitas operações, especialmente aquelas envolvendo dados numéricos. No entanto, como o Polars é uma biblioteca mais recente, pode exigir uma curva de aprendizado para aqueles familiarizados com o Pandas.

  2. Pergunta: Existem cenários em que o Pandas é a melhor escolha em relação ao Polars? Resposta: Sim, para consultas simples e quando a brevidade do código é uma prioridade, o Pandas pode ser a melhor escolha. Além disso, o Pandas é uma biblioteca madura com suporte robusto da comunidade, o que pode ser benéfico ao solucionar problemas ou buscar conselhos sobre tarefas complexas de manipulação de dados.

  3. Pergunta: Como o Pandas e o Polars lidam de forma diferente com valores nulos em operações de agrupamento? Resposta: Durante as operações de agrupamento, o Pandas removerá automaticamente os valores nulos, enquanto o Polars não o fará. Isso pode potencialmente afetar os resultados da análise, portanto, é crucial estar ciente dessa diferença ao escolher uma biblioteca.