Skip to content

Pandas read_csv() Tutorial: Importe arquivos CSV como um profissional

Updated on

A função pandas.read_csv() é uma das ferramentas mais usadas em análise de dados. Seja para importar pequenos conjuntos de dados ou arquivos de vários GB, entender como read_csv() funciona — e como otimizá-lo — vai economizar tempo, memória e esforço de depuração.

Este guia atualizado para 2025 cobre tudo o que você precisa para carregar arquivos CSV de forma limpa, rápida e correta, incluindo boas práticas para Pandas 2.0, o motor PyArrow, tratamento de encoding, parsing de datas e correção de erros comuns.


⚡ Quer gráficos instantâneos a partir do seu DataFrame?

PyGWalker transforma seu DataFrame Pandas/Polars em uma interface visual interativa — diretamente dentro do Jupyter Notebook.

Arraste & solte colunas → gere gráficos instantaneamente → explore seus dados visualmente.

Experimente com uma linha:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
Run in Kaggle (opens in a new tab)Run in Google Colab (opens in a new tab)⭐️ Star PyGWalker (opens in a new tab)

O que é pandas.read_csv()?

read_csv() é o método principal para importar arquivos CSV em um DataFrame, a estrutura de dados central do pandas. Ele oferece suporte a:

  • delimitadores personalizados
  • tratamento de valores ausentes
  • inferência de tipos ou controle manual de tipos
  • parsing de datas
  • streaming de arquivos grandes
  • múltiplos engines (Python, C, PyArrow)
  • indexação em tempo de leitura
  • seleção eficiente de colunas

O Pandas 2.0 introduziu o PyArrow como backend mais rápido e eficiente em memória, tornando o carregamento de CSV ainda mais poderoso.


Uso básico

import pandas as pd
 
df = pd.read_csv("your_file.csv")
df.head()

Simples — mas em projetos reais, os CSVs raramente são limpos. A seguir, vamos explorar os parâmetros mais úteis.


Parâmetros comuns de read_csv() (referência rápida)

ParâmetroDescrição
sepDelimitador de colunas (padrão ,)
usecolsCarrega apenas colunas selecionadas
index_colDefine uma coluna como índice
dtypeAplica tipos de dados manualmente
parse_datesFaz parsing automático de colunas de data
na_valuesPersonaliza marcadores de valores ausentes
on_bad_linesPula ou avisa sobre linhas malformadas
engineEscolhe o parser: "python", "c", "pyarrow"
chunksizeLê arquivos grandes em chunks (streaming)
encodingLida com problemas de encoding (utf-8, latin-1)

1. Definir uma coluna como índice

Opção A — depois de carregar:

df = df.set_index("id")

Opção B — durante a leitura:

df = pd.read_csv("file.csv", index_col="id")

2. Ler apenas colunas específicas

Acelera a leitura e reduz o uso de memória:

df = pd.read_csv("file.csv", usecols=["name", "age", "score"])

3. Tratar valores ausentes

df = pd.read_csv("file.csv", na_values=["NA", "-", ""])

4. Fazer parsing automático de datas

df = pd.read_csv("sales.csv", parse_dates=["date"])

O pandas vai inferir o formato de datetime correto.


5. Corrigir erros de encoding (muito comum!)

df = pd.read_csv("file.csv", encoding="utf-8", errors="ignore")

Se UTF-8 falhar:

df = pd.read_csv("file.csv", encoding="latin-1")

6. Usando o engine PyArrow (Pandas 2.0+)

Para parsing mais rápido e melhor eficiência de memória:

df = pd.read_csv("file.csv", engine="pyarrow")

Combine com os novos dtypes baseados em Arrow:

df = pd.read_csv(
    "file.csv",
    engine="pyarrow",
    dtype_backend="pyarrow"
)

7. Ler CSVs grandes (1GB–100GB)

Use chunking:

reader = pd.read_csv("big.csv", chunksize=100_000)
 
for chunk in reader:
    process(chunk)

Ou carregue apenas colunas e tipos necessários:

df = pd.read_csv(
    "big.csv",
    usecols=["user_id", "timestamp"],
    dtype={"user_id": "int32"},
)

8. Erros comuns e como corrigi-los

❌ UnicodeDecodeError

Use:

encoding="latin-1"

❌ ParserError: Error tokenizing data

O arquivo contém linhas malformadas:

pd.read_csv("file.csv", on_bad_lines="skip")

❌ MemoryError em arquivos grandes

Use:

  • chunksize
  • usecols
  • backend Arrow (dtype_backend="pyarrow")

❌ Delimitador incorreto

pd.read_csv("file.csv", sep=";")

Exemplo prático: importação limpa

df = pd.read_csv(
    "sales.csv",
    sep=",",
    parse_dates=["date"],
    dtype={"amount": "float64"},
    na_values=["NA", ""],
    engine="pyarrow"
)

Quando usar CSV — e quando evitar

CSV é ótimo para:

  • portabilidade
  • pipelines simples
  • conjuntos de dados pequenos/médios

Mas evite CSV quando você precisa de:

  • velocidade
  • compressão
  • consistência de esquema
  • tipos complexos

Prefira Parquet para análises em larga escala.


FAQs

Como detectar delimitadores automaticamente?

pd.read_csv("file.csv", sep=None, engine="python")

Como pular linhas de cabeçalho?

pd.read_csv("file.csv", skiprows=3)

Como carregar um CSV zipado?

pd.read_csv("file.csv.zip")

Conclusão

pandas.read_csv() é uma ferramenta poderosa e flexível que consegue lidar com praticamente qualquer cenário de importação de CSV — de arquivos simples a conjuntos de dados de vários GB.

Ao entender os parâmetros mais úteis, usar PyArrow no Pandas 2.0+ e aplicar boas práticas (seleção de colunas, parsing de datas, tratamento de erros), você vai melhorar drasticamente o seu fluxo de carregamento de dados.


Mais tutoriais de Pandas