Skip to content

Polars DataFrame: Introdução ao Processamento de Dados de Alta Velocidade

Indo além dos reinos familiares do Pandas, os entusiastas de Python estão agora adotando as capacidades de processamento de dados de alta velocidade e eficientes do Polars DataFrame. Oferecendo um conjunto de ferramentas formidável para gerenciar grandes conjuntos de dados, esta biblioteca DataFrame, inteiramente construída em Rust, está ganhando destaque entre os cientistas de dados e analistas. Este guia abrangente mergulha no Polars DataFrame, transmitindo uma compreensão mais profunda das suas funcionalidades e mostrando como ele se destaca como uma alternativa superior ao Pandas.

Aproveitando o Polars em relação ao Pandas

Uma comparação rápida revela as distintas vantagens do Polars em relação ao Pandas. Ao contrário do Pandas, o Polars não utiliza um índice para o DataFrame, o que torna a manipulação de dados substancialmente mais simples. Além disso, o Polars utiliza arrays Apache Arrow para a representação interna de dados, melhorando os tempos de carregamento, o uso de memória e a eficiência computacional. Além disso, por ser escrito em Rust, o Polars fornece mais operações paralelas, acelerando muitas tarefas. E não podemos esquecer que o Polars suporta avaliação preguiçosa, otimizando consultas com base na necessidade e minimizando o uso de memória, uma funcionalidade não disponível na avaliação imediata do Pandas.

Começando com o Polars DataFrame

A instalação do Polars é simples. Você pode usar comandos pip ou conda:

pip install polars
conda install polars

Vamos começar nossa jornada criando um Polars DataFrame. Abaixo, estamos importando o módulo Polars e criando um DataFrame:

import polars as pl
 
df = pl.DataFrame(
    {
        'Modelo': ['iPhone X','iPhone XS','iPhone 12','iPhone 13','Samsung S11','Samsung S12','Mi A1','Mi A2'],
        'Vendas': [80,170,130,205,400,30,14,8],     
        'Empresa': ['Apple','Apple','Apple','Apple','Samsung','Samsung','Xiao Mi','Xiao Mi'],
    }
)
df

Ao contrário do Pandas, o Polars espera que os nomes das colunas do cabeçalho sejam do tipo string. Se você deseja usar inteiros como nomes de coluna, certifique-se de usá-los como strings:

df2 = pl.DataFrame(
    {
        "0" : [1,2,3],
        "1" : [80,170,130],
    }
)

O tipo de dados de cada coluna no Polars também é exibido ao lado do nome do cabeçalho. Se você deseja exibir explicitamente o tipo de dados de cada coluna, pode usar a propriedade dtypes:

df.dtypes

A recuperação dos nomes das colunas pode ser feita com a propriedade columns:

df.columns    # Retorna ['Modelo', 'Vendas', 'Empresa']

Para obter o conteúdo do DataFrame como uma lista de tuplas, use o método rows():

df.rows()

Um recurso crucial a ser observado é que o Polars não usa o conceito de índice, ao contrário do Pandas. A filosofia de design do Polars afirma explicitamente que o índice não é particularmente útil em DataFrames.

Desvendando a Seleção de Colunas no Polars

Selecionar colunas no Polars é fácil. Especifique o nome da coluna usando o método select():

df.select('Modelo')

A declaração retorna um Polars DataFrame contendo a coluna 'Modelo'. No entanto, o Polars desencoraja o método de indexação com colchetes angulares e suas versões futuras podem até eliminar esse recurso. Para selecionar várias colunas, forneça os nomes das colunas como uma lista:

df.select(['Modelo','Empresa'])
`
 
`
 
O poder das expressões é outra grande característica do Polars. Por exemplo, para recuperar todas as colunas de tipo inteiro (especificamente Int64) no DataFrame, você pode usar uma expressão dentro do método select():
 
```python
df.select(pl.col(pl.Int64))

O Polars tem uma maneira única de encadear expressões. Por exemplo, a expressão abaixo seleciona as colunas 'Modelo' e 'Vendas' e depois ordena as linhas com base nos valores da coluna 'Vendas':

df.select(pl.col(['Modelo','Vendas']).sort_by('Vendas'))    

Se você deseja recuperar todas as colunas de tipo string, use a propriedade pl.Utf8:

df.select([pl.col(pl.Utf8)])

As expressões no Polars serão explicadas em mais detalhes na próxima parte do artigo.

Descobrindo a Seleção de Linhas no Polars

Para selecionar uma única linha em um DataFrame, passe o número da linha usando o método row():

df.row(0)   # obter a primeira linha

Isso resulta em uma tupla:

('iPhone X', 80, 'Apple')

Para selecionar várias linhas, o Polars recomenda usar a função filter(). Por exemplo, se você desejar recuperar todos os produtos da Apple, pode usar a seguinte expressão:

df.filter(pl.col('Empresa') == 'Apple')

Você pode especificar várias condições usando operadores lógicos:

df.filter((pl.col('Empresa') == 'Apple') | (pl.col('Empresa') == 'Samsung'))

No Polars, você pode usar os seguintes operadores lógicos:

  • | — OU
  • & — E
  • ~ — Não

Selecionando Linhas e Colunas Simultaneamente

Muitas vezes, você desejará selecionar linhas e colunas simultaneamente. Encadeie os métodos filter() e select() para isso:

df.filter(pl.col('Empresa') == 'Apple').select('Modelo')

A declaração acima seleciona todas as linhas que contêm 'Apple' e depois exibe apenas a coluna 'Modelo'. Para exibir também a coluna 'Vendas', passe uma lista para o método select():

df.filter(pl.col('Empresa') == 'Apple').select(['Modelo','Vendas'])

A essência da história é que o Polars DataFrame proporciona uma alternativa eficiente e de alta velocidade ao tradicional Pandas, aproveitando sua avaliação preguiçosa, política sem índice e capacidades de operação paralela. Desde instalações simples até manipulações de dados complexas, o Polars se apresenta como uma poderosa ferramenta, simplificando o manuseio de dados e melhorando o uso de memória.

Visualize seu DataFrame Polars com o PyGWalker

PyGWalker (opens in a new tab) é uma biblioteca Python Open Source que pode ajudá-lo a criar visualização de dados a partir do seu dataframe Polars com facilidade.

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 as variáveis para criar todos os tipos de visualizações de dados! Aqui está um vídeo demostrativo rápido sobre a operação:


Aqui está como utilizar o PyGWalker no seu Jupyter Notebook:

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

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

Executar PyGWalker no Kaggle Notebook (opens in a new tab)Executar PyGWalker no Google Colab (opens in a new tab)Dê uma estrela para o PyGWalker no GitHub (opens in a new tab)
Executar PyGWalker no Kaggle Notebook (opens in a new tab)Executar PyGWalker no Google Colab (opens in a new tab)Executar PyGWalker no Google Colab (opens in a new tab)

PyGWalker é construído com o apoio da nossa comunidade Open Source. Não esqueça de conferir PyGWalker GitHub (opens in a new tab) e dar uma estrela pra gente!

Perguntas frequentes

  1. Quais são algumas das principais vantagens do Polars em relação ao Pandas?

    O Polars DataFrame oferece várias vantagens em relação ao Pandas. Ele usa arrays Apache Arrow para manipulação eficiente de dados, não depende de índices para manipulação de dados, suporta operações paralelas e utiliza avaliação preguiçosa para otimizar consultas com base nos requisitos, melhorando o uso de memória.

  2. Como posso selecionar colunas em um Polars DataFrame?

    O Polars DataFrame fornece o método select() para escolher colunas. Você pode passar o nome da coluna como uma string para selecionar uma única coluna ou uma lista de nomes de colunas para selecionar várias colunas.

  3. Como posso filtrar linhas com base em condições específicas no Polars?

    O método filter() é usado para selecionar linhas com base em condições específicas. Você pode passar uma expressão para este método que iguala uma coluna a um determinado valor para filtrar linhas. Você também pode usar operadores lógicos para especificar múltiplas condições.