Skip to content
Tópicos
Polars
How to Read CSV in Polars Explained

Como Ler CSV no Polars Explicado

Atualizado em

Polars, uma biblioteca de DataFrame rápida em Python, oferece uma interface familiar e poderosa para processar dados estruturados. Especialmente ao lidar com arquivos CSV, o Polars brilha ao oferecer métodos diretos, como read_csv() e scan_csv(), semelhantes aos do pandas. Vamos aprender como aproveitar ao máximo esses métodos.

Importando CSV com read_csv()

O Polars fornece um método de uso fácil read_csv() para importar arquivos CSV. Sua sintaxe é surpreendentemente semelhante à do pandas, o que facilita a transição para aqueles acostumados com o pandas. Aqui está uma demonstração rápida:

import polars as pl
 
# Ler CSV com read_csv
df = pl.read_csv('data_sample.csv')
print(df)

Saída:

formato: (3, 4)
┌───────────┬───────┬─────┬───────────────────┐
│ studentId ┆ Name  ┆ Age ┆ FirstEnrollment   │
│ ---       ┆ ---   ┆ --- ┆ ---               │
│ i64       ┆ str   ┆ i64 ┆ str               │
╞═══════════╪═══════╪═════╪═══════════════════╡
│ 1         ┆ Mike  ┆ 24  ┆ 2020-01-17        │
│ 2         ┆ Sarah ┆ 33  ┆ 2021-07-23        │
│ 3         ┆ John  ┆ 19  ┆ 2022-12-20        │
└───────────┴───────┴─────┴───────────────────┘

Analisando Datas com read_csv()

Ao importar arquivos CSV, pode ser necessário analisar determinadas colunas como objetos de data e hora. Essa funcionalidade é ativada pelo parâmetro parse_dates=True. Por exemplo:

# Ler CSV com análise de datas
df_datas = pl.read_csv('data_sample.csv', parse_dates=True)
print(df_datas)

Alterando Tipos de Coluna na Hora

Também é possível converter o tipo de dados de colunas específicas durante a leitura do arquivo. Por exemplo, veja como converter a coluna 'Age' de i64 para Int32:

# Ler CSV com um tipo de dados específico
df_idade_convertida = pl.read_csv('data_sample.csv', parse_dates=True).with_column(pl.col('Age').cast(pl.Int32))
print(df_idade_convertida)

Uma vantagem que o Polars tem sobre o pandas é sua capacidade de revelar os tipos de coluna ao exibir um DataFrame, tornando a solução de problemas de tipo de dados muito mais fácil.

Otimizando Leituras com scan_csv()

Para conjuntos de dados grandes, o Polars oferece um método mais eficiente em termos de recursos - scan_csv(). Ao aproveitar a avaliação preguiçosa, este método carrega dados na memória apenas quando necessário (ou seja, quando o collect() é chamado), potencialmente reduzindo a sobrecarga de memória. Aqui está uma breve olhada:

# Leitura eficiente com scan_csv
q = pl.scan_csv('data_sample.csv')
df_preguiçoso = q.collect()
print(df_preguiçoso)

Lembre-se de chamar collect() para executar as operações, caso contrário, uma representação das operações (plano) será retornada.

Estas são apenas algumas das formas como o Polars pode ser usado para interagir com arquivos CSV. Sua sintaxe clara e funções poderosas o tornam uma excelente ferramenta para manipulação de dados em Python.

Entendendo Expressões e Ações do Polars

O Polars suporta operações tanto impacientes quanto preguiçosas. No modo impaciente, os cálculos são executados imediatamente, enquanto no modo preguiçoso, as operações são enfileiradas e avaliadas apenas quando necessário, otimizando a eficiência e o uso da memória.

Utilizando Avaliação Preguiçosa com scan_csv()

Com o scan_csv(), os dados não são carregados imediatamente na memória. Em vez disso, o Polars constrói um plano de consulta que inclui as operações a serem realizadas. Esse plano de consulta é executado apenas quando o collect() é chamado. Essa técnica, conhecida como avaliação preguiçosa, pode resultar em um uso mais eficiente da memória e computação mais rápida, especialmente com conjuntos de dados grandes. Aqui está um exemplo:

# Leitura preguiçosa com scan_csv
consulta = pl.scan_csv('data_sample.csv')
print(consulta)

A execução do código acima resulta em um resumo do "plano" das operações, mas as operações em si ainda não são executadas.

plano ingênuo: (execute LazyFrame.describe_optimized_plan() para ver o plano otimizado)

  SCAN CSV data_sample.csv
  PROJECT */4 COLUNAS

Para executar esse plano e carregar os dados na memória, você precisa usar o método collect():

df_preguiçoso = consulta.collect()
print(df_preguiçoso)

Mais do que Apenas Ler CSVs: Manipulação de Dados

Além de apenas ler CSVs, o Polars oferece um conjunto abrangente de funções de manipulação de dados que se alinham bem com as operações do pandas. Isso torna o Polars uma ferramenta eficiente e versátil para análise de dados. Seja filtrando dados, aplicando transformações ou agregando informações, o Polars pode lidar com tudo isso com ótimo desempenho.

Visualize Seu Dataframe Polars com o PyGWalker

PyGWalker (opens in a new tab) é uma biblioteca Open Source em Python que pode ajudar você a criar visualizações 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 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 no seu Jupyter Notebook:

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

Alternativamente, você pode experimentá-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 ⭐️ 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)

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

Perguntas frequentes:

Ao navegar pelo Polars, você pode encontrar algumas perguntas. Aqui estão algumas comuns:

  1. Qual é a principal diferença entre as funções read_csv() e scan_csv() no Polars?

read_csv() é uma função direta que lê um arquivo CSV e carrega todos os dados na memória. Por outro lado, scan_csv() opera de forma preguiçosa, ou seja, não carrega os dados até que collect() seja chamado. Isso torna o scan_csv() mais eficiente ao lidar com grandes conjuntos de dados, pois carrega apenas os dados necessários na memória.

  1. O Polars pode lidar com análise de datas ao ler arquivos CSV?

Sim, o Polars pode lidar com análise de datas. Ao usar a função read_csv(), basta definir o argumento parse_dates=True, e o Polars tentará analisar colunas com informações de data automaticamente.

  1. Posso alterar o tipo de dados de colunas específicas ao ler um arquivo CSV?

Com certeza. O Polars permite modificar os tipos de dados das colunas durante o processo de leitura do arquivo CSV. Você pode usar o método with_columns() em conjunto com a função cast() para fazer isso. Por exemplo, df = pl.read_csv('data.csv').with_columns(pl.col('Age').cast(pl.Int32)) irá alterar a coluna 'Age' para Int32.