Trabalhando com arquivos CSV em Python
CSV (Comma Separated Values) é um dos formatos mais comuns para armazenar dados tabulares. Este formato é amplamente utilizado em diversas áreas: desde exportação de planilhas Excel até troca de informações entre serviços web e bancos de dados.
Python oferece ferramentas eficientes para trabalhar com arquivos CSV. Você pode usar o módulo básico csv ou a poderosa biblioteca pandas para análise de dados. Neste artigo, abordaremos métodos de leitura e escrita de arquivos CSV, processamento de dados, prevenção de erros e otimização de desempenho ao lidar com arquivos grandes.
Fundamentos do formato CSV
Estrutura de um arquivo CSV
CSV é um formato de texto simples. Cada linha do arquivo contém um registro. Os valores em cada registro são separados por caracteres especiais. Por padrão, usa-se a vírgula, mas também podem ser usados ponto e vírgula, tabulação ou barra vertical.
O conteúdo de um arquivo CSV padrão é assim:
Nome,Idade,Cidade
Ana,25,São Paulo
João,30,Rio de Janeiro
Vantagens do formato CSV
O formato CSV possui várias vantagens importantes:
- Estrutura simples e legível
- Suporte pela maioria dos programas e linguagens de programação
- Tamanho de arquivo reduzido em comparação com outros formatos
- Possibilidade de edição em editores de texto
- Versatilidade para troca de dados entre diferentes sistemas
Trabalhando com CSV usando o módulo csv
Leitura básica de arquivos CSV
O módulo padrão csv do Python é ideal para operações básicas com arquivos CSV. Para ler dados de forma simples, use a seguinte abordagem:
import csv
with open("dados.csv", newline='', encoding='utf-8') as f:
reader = csv.reader(f)
for row in reader:
print(row)
Resultado da execução:
['Nome', 'Idade', 'Cidade']
['Ana', '25', 'São Paulo']
['João', '30', 'Rio de Janeiro']
Leitura usando cabeçalhos
Para trabalhar com colunas nomeadas de forma mais prática, use csv.DictReader:
with open("dados.csv", encoding='utf-8') as f:
reader = csv.DictReader(f)
for row in reader:
print(row["Nome"], row["Cidade"])
Este método cria automaticamente dicionários para cada linha. As chaves são os valores da primeira linha do arquivo.
Escrevendo dados em um arquivo CSV
Escrita simples de linhas
A forma básica de escrever dados usa csv.writer:
with open("saida.csv", mode='w', newline='', encoding='utf-8') as f:
writer = csv.writer(f)
writer.writerow(["Nome", "Idade"])
writer.writerow(["Carlos", 35])
Escrita de dados em dicionário
Para escrever dados estruturados, use csv.DictWriter:
dados = [
{"Nome": "Maria", "Idade": 28},
{"Nome": "Alex", "Idade": 40},
]
with open("pessoas.csv", "w", newline='', encoding='utf-8') as f:
writer = csv.DictWriter(f, fieldnames=["Nome", "Idade"])
writer.writeheader()
writer.writerows(dados)
Configuração de parâmetros de leitura e escrita
O módulo csv permite configurar vários parâmetros:
- delimiter: define o delimitador de campos
- quotechar: caractere para envolver valores entre aspas
- skipinitialspace: ignorar espaços após o delimitador
- lineterminator: caractere de fim de linha
Trabalhando com CSV na biblioteca pandas
Instalação e importação do pandas
A biblioteca pandas oferece recursos mais poderosos para trabalhar com arquivos CSV:
pip install pandas
Leitura de arquivos CSV com pandas
O método principal para ler arquivos CSV:
import pandas as pd
df = pd.read_csv("dados.csv")
print(df.head())
Isso carrega os dados em um DataFrame, uma estrutura de dados tabular que facilita análises complexas.
Escrevendo CSV com pandas
Para salvar um DataFrame como CSV:
df.to_csv("novo_arquivo.csv", index=False, encoding='utf-8')
O parâmetro index=False evita que o índice do DataFrame seja salvo como uma coluna extra.
Dicas de otimização e boas práticas
Tratamento de erros comuns
Ao trabalhar com CSV, alguns erros frequentes incluem:
- Problemas de codificação: sempre especifique encoding='utf-8'
- Delimitadores incorretos: verifique se o arquivo usa vírgula, ponto e vírgula ou tabulação
- Valores ausentes: use parâmetros como na_values no pandas para tratar dados faltantes
Desempenho com arquivos grandes
Para arquivos CSV muito grandes, considere:
- Usar chunksize no pandas para processar em partes
- Ler apenas colunas específicas com usecols
- Utilizar dtypes para otimizar o uso de memória
Com essas técnicas, você estará pronto para manipular arquivos CSV em Python de forma eficiente e profissional.