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âmetro | Descrição |
|---|---|
sep | Delimitador de colunas (padrão ,) |
usecols | Carrega apenas colunas selecionadas |
index_col | Define uma coluna como índice |
dtype | Aplica tipos de dados manualmente |
parse_dates | Faz parsing automático de colunas de data |
na_values | Personaliza marcadores de valores ausentes |
on_bad_lines | Pula ou avisa sobre linhas malformadas |
engine | Escolhe o parser: "python", "c", "pyarrow" |
chunksize | Lê arquivos grandes em chunks (streaming) |
encoding | Lida 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:
chunksizeusecols- 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