Data Analytics Data Engineering Data Science Python

Polars vs. Pandas: Explorando as principais funções para análise de dados

Polars vs. Pandas

Fala galera do mundo dos dados! Já estamos cansados de saber que a análise de dados é uma etapa fundamental em projetos de ciência de dados e inteligência artificial. Já vimos aqui no Dados ao Cubo como fazer uma análise de dados poderosa com Polars em Python, mas sabemos que também podemos utilizar o Pandas para análise de dados. Portanto, são duas bibliotecas para manipulação e análise de dados, uma já consolidada e outra chegando com tudo. Então, vamos comparar Polars vs. Pandas e explorar as principais funções dessas bibliotecas. Dessa forma, você aprenderá como realizar tarefas comuns de análise de dados usando ambas as bibliotecas, além de identificar as diferenças entre elas.

Instalação e Importação das Bibliotecas

Primeiramente, é importante instalar as bibliotecas necessárias. Para o Polars, você pode usar o seguinte comando.

pip install polars

Para o Pandas, use o comando.

pip install pandas

Em seguida, importe as bibliotecas em seu código.

# Polar
import polars as pl
# Pandas
import pandas as pd

Agora, faremos a carga de um conjunto de dados.

Carregando Dados

Ambas as bibliotecas possuem funções para carregar dados de diferentes fontes, como arquivos CSV ou bancos de dados. Aqui está um exemplo de como carregar um arquivo CSV com o Polars.

# Polars
pl_df = pl.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv')

E com o Pandas:

# Pandas
pd_df = pd.read_csv('https://raw.githubusercontent.com/mwaskom/seaborn-data/master/tips.csv')

Com os dados carregados, já podemos visualizar uma prévia deles.

Visualizando os Dados

Para visualizar os dados, o Pandas oferece a função head, que retorna as primeiras linhas do DataFrame. Já o Polars possui a função limit. Veja os exemplos de código abaixo.

# Polars
pl_df.limit(5)

Como resultado da função limit é exibido na imagem abaixo.

Dataframe Polars


Confere a visualização no Pandas.

# Pandas
pd_df.head

O resultado da função head é exibido na imagem abaixo.

Dataframe Pandas


Assim, visualizamos todas as colunas. E como selecionar algumas colunas?

Selecionando Colunas

Ambas as bibliotecas permitem selecionar colunas específicas de um DataFrame. Com o Pandas, você pode usar a sintaxe de colchetes [], enquanto com o Polars é possível usar a função select. Veja o exemplo abaixo.

# Polars
pl_df.select('total_bill')

Confere o resultado da seleção do Polars na imagem abaixo.

Selecionando colunas Polars


Seleção de colunas no Pandas.

# Pandas
pd_df['total_bill']

Confere o resultado da seleção do Pandas na imagem abaixo.

Selecionando colunas Pandas


Dessa forma, fizemos a seleção de linha. E como filtrar linhas específicas?

Filtrando Dados

Para filtrar dados com base em condições, o Pandas usa a sintaxe de colchetes [] combinada com uma expressão booleana. O Polars oferece a função filter. Veja o código Pyhon a seguir.

# Polars
pl_df.filter(pl.col('total_bill') > 50)

Dados filtrados com o Polars.

Filtrando dados Polars


O filtro no Pandas.

# Pandas
pd_df[pd_df['total_bill'] > 50]

Dados filtrados com o Pandas na imagem abaixo.

Filtrando dados Pandas


Na sequência a agregação de dados.

Agregando de Dados

Ambas as bibliotecas oferecem funcionalidades para realizar agregações de dados, como soma, média e contagem. Veja o exemplo da soma abaixo.

# Polars
pl_df['total_bill'].sum()

Dessa forma, no Polars, temos como resultado o valor resultante da soma de: 4827.7699999999995 

# Pandas
pd_df['total_bill'].sum()

Dessa forma, no Pandas, temos como resultado o valor resultante da soma de: 4827.77

Também, podemos fazer agregações mais complexas utilizando a função groupby em ambas as bibliotecas. Confere os exemplos de código.

# Polars
pl_df.groupby('sex').agg(pl.col('total_bill').mean)

Agregação do groupby no Polars.

Agregando de Dados Polars


Utilizando o groupby no Pandas.

# Pandas
pd_df.groupby('sex').agg({'total_bill': 'mean'})

Agregação do groupby no Pandas.

Agregando de Dados Pandas


Da agregação para a alteração do nome das colunas.

Renomeando colunas

Ambas as bibliotecas possuem a função rename. Aqui está um exemplo de como renomear colunas tanto no Polars, quanto no Pandas.

# Polars
pl_df.rename({'total_bill':'total'})

Na imagem abaixo já temos a primeira coluna renomeada, conforme código Python.

Renomeando colunas Polars



Função rename no Pandas.

# Pandas
pd_df.rename(columns={'total_bill':'total'})

Agora com o Pandas, também temos a primeira coluna renomeada, conforme código Python.

Renomeando colunas Pandas


Depois de renomear, na sequência, como ordenar o conjunto de dados.

Ordenando os dados

Para ordenar os dados, o Pandas oferece a função sort_values, ordenando pela coluna informada do DataFrame. Já o Polars possui a função sort, que trabalha da mesma forma. Veja os exemplos de código abaixo.

# Polars
pl_df.sort('total_bill')

A imagem abaixo é o resultado da ordenação da coluna total_bill pelo Polars.

Ordenando os dados Polars


Confere a função de ordenação do Pandas.

# Pandas
pd_df.sort_values('total_bill')

Como resultado da ordenação da coluna total_bill pelo Pandas temos a imagem abaixo.

Ordenando os dados Pandas


Dados ordenados, confere como deletar linhas duplicada.

Removendo duplicatas

Ambas as bibliotecas permitem remover dados duplicados em um DataFrame. Com o Pandas, você pode usar a função drop_duplicates, enquanto com o Polars é possível usar a função unique. A seguir exemplos das funções.

Código Polars para remover dados duplicados.

# Polars
pl_df.unique()

E o código Pandas para remover dados duplicados.

# Pandas
pd_df.drop_duplicates()

Depois dos duplicados, agora o tratamento de dados nulos.

Preenchendo valores nulos

Para preencher valores nulos, primeiramente vamos identificar as colunas e quantidades de dados nulos e depois podemos fazer o preenchimento. Assim, no Pandas usa a função fillna para identificar os nulos e a função fillna para preencher valores nulos. Similarmente o Polars oferece a função null_count e a função fill_null para preencher valores nulos. Veja os códigos Pyhon a seguir.

# Polars
pl_df.null_count()

Na imagem abaixo a contagem dos dados nulos de todas as colunas no Polars.

valores nulos Polars


Se houver necessidade de substituição de dados nulos, podemos utilizar o código Python abaixo.

# Polars
pl_df.fill_null(value='novo_valor')

Contagem dos dados nulos com o Pandas.

# Pandas
pd_df.isna.sum()

A imagem mostra o resultado, bem semelhante ao Polars, só muda o formato dos dados.

valores nulos Pandas


Para o Pandas, se houver necessidade de substituição de dados nulos, podemos utilizar o código Python abaixo.

# Pandas
pd_df.fillna('novo_valor')

Agora vamos ver, como aplicar funções em colunas do conjunto de dados.

Aplicando uma função a uma coluna

Para aplicar função em uma coluna, o Pandas oferece a função apply, e o Polars possui a função de mesmo nome. Veja os exemplos de código abaixo.

# Polars
pl_df.select('total_bill').apply(lambda x: x[0] * 2)

A imagem a seguir mostra a função sendo aplicada na coluna total_bill do dataframe Polars.

Aplicando uma função Polars


A mesma função apply, agora no Pandas.

# Pandas
pd_df['total_bill'].apply(lambda x: x * 2)

Da mesma forma a função sendo aplicada na coluna total_bill do dataframe Pandas.

Aplicando uma função Pandas


A seguir, algumas estatísticas básicas do conjunto de dados.

Estatísticas descritivas

Ambas as bibliotecas oferecem funcionalidades para estatísticas descritivas dos dados, exibindo os principais indicadores através da função describe. Confere os exemplos a seguir.

# Polars
pl_df.describe()

Esse é o resultado da função describe no dataframe Polars.

Estatísticas descritivas Polars


Agora a estatística descritiva no Pandas.

# Pandas
pd_df.describe()

Já no Pandas, temos esse resultado da função describe, que é bem similar.

Estatísticas descritivas Pandas


E para encerrar nossas comparações, como contar a frequência dentro do conjunto de dados.

Contando de valores únicos

Para cotar valores únicos no DataFrames, o Pandas possui a função value_counts, e o Polars oferece a função de mesmo nome. Veja o exemplo abaixo.

# Polars
pl_df.select('sex').to_series.value_counts()

Na imagem a seguir a frequência da coluna sex no dataframe Polars.

Contando de valores únicos Polars


Utilizando a mesma função value_counts no Pandas.

# Pandas
pd_df.value_counts('sex')

E no Pandas, não é muito diferente, confere a imagem abaixo.

Contando de valores únicos Pandas


E assim finalizamos essa comparação de algumas funções do Polars vs. Pandas.

Polars vs. Pandas ao Cubo

Sendo assim, tanto Polars, quanto Pandas são bibliotecas poderosas para análise de dados em Python. Ambas possuem uma ampla gama de funções e métodos para manipulação e análise de DataFrames. No entanto, existem algumas diferenças sutis entre as duas.

Polars vs. Pandas, o Polars se destaca por sua capacidade de processamento paralelo e execução eficiente em grandes conjuntos de dados. Ele também oferece uma sintaxe expressiva e familiar para quem já está acostumado com o Pandas. Por outro lado, o Pandas é amplamente utilizado e possui uma vasta quantidade de recursos e funcionalidades avançadas. É uma escolha popular para análise de dados em tarefas de menor escala ou quando a velocidade de execução não é uma preocupação crítica.

Experimente as diferentes funcionalidades de cada biblioteca, explore a documentação e os exemplos de código, e escolha a que melhor atenda às suas necessidades e objetivos de análise de dados. Com o conhecimento adequado e a prática contínua, você se tornará um especialista em análise de dados com Python. O importante é estar sempre atualizado, então para ficar sempre ligado nas novidades assine a nossa Newsletter. Um abraço e até a próxima!!!

Conteúdos ao Cubo

Se você curtiu o conteúdo, aqui no Dados ao Cubo tem muito mais. Então, deixo algumas sugestões de conteúdos que você pode encontrar. Sempre falando sobre o mundo dos dados!

Finalizo com um convite para você ser Parceiro de Publicação Dados ao Cubo e escrever o próximo artigo, compartilhando conhecimento para toda a comunidade de dados.

Gostou? Compartilhe!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *