"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Guia para o módulo CSV do Python

Guia para o módulo CSV do Python

Publicado em 2024-11-08
Navegar:948

Guide to Python

Trabalhar com dados é uma parte inevitável da programação e, como alguém que muitas vezes se envolve profundamente em vários formatos de arquivo, sempre apreciei como o Python simplifica todo o processo.

Um desses formatos de arquivo que surge regularmente, principalmente na análise de dados, é o arquivo CSV.

O CSV, ou Valores Separados por Vírgula, é um formato popular de troca de dados devido à sua simplicidade.

Felizmente, Python vem com um módulo integrado chamado csv, que torna o trabalho com esses arquivos extremamente eficiente.

Neste artigo, detalharei como o módulo csv funciona em Python, desde o uso básico até técnicas mais avançadas que podem economizar muito tempo ao processar dados.


O que é um arquivo CSV?

Antes de mergulhar no módulo csv, vamos começar com uma compreensão básica do que é um arquivo CSV.

Um arquivo CSV é essencialmente um arquivo de texto simples onde cada linha representa uma linha de dados e cada valor é separado por uma vírgula (ou às vezes outros delimitadores como tabulações).

Aqui está um exemplo rápido de como pode ser:

Name,Age,Occupation
Alice,30,Engineer
Bob,25,Data Scientist
Charlie,35,Teacher

Por que o módulo csv?

Você pode se perguntar por que precisa do módulo csv quando os arquivos CSV são apenas arquivos de texto que teoricamente poderiam ser lidos usando os métodos padrão de manipulação de arquivos do Python.

Embora isso seja verdade, os arquivos CSV podem ter complexidades – como vírgulas incorporadas, quebras de linha dentro de células e diferentes delimitadores – que são difíceis de lidar manualmente.

O módulo csv abstrai tudo isso, permitindo que você se concentre em seus dados.


Lendo arquivos CSV

Vamos pular para o código.

A operação mais comum que você realizará em um arquivo CSV é ler seu conteúdo.

A função csv.reader() no módulo é uma ferramenta fácil de usar para isso.

Aqui está um guia passo a passo sobre como fazer isso.

Leitura básica de CSV

import csv

# Open a CSV file
with open('example.csv', 'r') as file:
    reader = csv.reader(file)

    # Iterate over the rows
    for row in reader:
        print(row)

Esta é a maneira mais simples de ler um arquivo CSV.

O csv.reader() retorna um iterável, onde cada iteração fornece uma lista que representa uma linha do arquivo.

Manipulação de cabeçalhos
A maioria dos arquivos CSV vem com cabeçalhos na primeira linha, como nomes de colunas.

Se você não precisa desses cabeçalhos, você pode simplesmente pular a primeira linha ao iterar:

import csv

with open('example.csv', 'r') as file:
    reader = csv.reader(file)

    # Skip header
    next(reader)

    for row in reader:
        print(row)

Às vezes, estou trabalhando com arquivos que contêm uma mistura de dados úteis e irrelevantes e me pego pulando linhas com base em mais do que apenas o cabeçalho.

Você pode fazer isso facilmente dentro do loop for.

DictReader: uma maneira mais intuitiva de ler arquivos CSV
Se o seu arquivo CSV tiver cabeçalhos, o csv.DictReader() é outra opção fantástica que lê cada linha como um dicionário, com as chaves sendo os nomes das colunas:

import csv

with open('example.csv', 'r') as file:
    reader = csv.DictReader(file)

    for row in reader:
        print(row)

Essa abordagem pode tornar seu código mais legível e intuitivo, especialmente ao trabalhar com grandes conjuntos de dados.

Por exemplo, acessar row['Name'] parece muito mais claro do que lidar com acesso baseado em índice como row[0].


Gravando em arquivos CSV

Depois de ler e processar seus dados, é provável que você queira salvá-los ou exportá-los.

A função csv.writer() é sua ferramenta ideal para gravar em arquivos CSV.

Escrita básica de CSV

import csv

# Data to be written
data = [
    ['Name', 'Age', 'Occupation'],
    ['Alice', 30, 'Engineer'],
    ['Bob', 25, 'Data Scientist'],
    ['Charlie', 35, 'Teacher']
]

# Open a file in write mode
with open('output.csv', 'w', newline='') as file:
    writer = csv.writer(file)

    # Write data to the file
    writer.writerows(data)

A função escritor.writerows() pega uma lista de listas e as grava no arquivo CSV, onde cada lista interna representa uma linha de dados.

DictWriter: uma maneira mais limpa de escrever arquivos CSV
Assim como temos o DictReader para ler arquivos CSV em dicionários, temos o DictWriter para escrever dicionários em um CSV.

Este método pode ser particularmente útil quando você deseja especificar explicitamente os nomes das colunas.

import csv

# Data as list of dictionaries
data = [
    {'Name': 'Alice', 'Age': 30, 'Occupation': 'Engineer'},
    {'Name': 'Bob', 'Age': 25, 'Occupation': 'Data Scientist'},
    {'Name': 'Charlie', 'Age': 35, 'Occupation': 'Teacher'}
]

# Open file for writing
with open('output.csv', 'w', newline='') as file:
    fieldnames = ['Name', 'Age', 'Occupation']
    writer = csv.DictWriter(file, fieldnames=fieldnames)

    # Write the header
    writer.writeheader()

    # Write the data
    writer.writerows(data)

Usando o DictWriter, você obtém uma interface agradável e limpa para escrever dicionários em CSV enquanto mantém seu código legível e conciso.


Personalizando Delimitadores

Por padrão, o módulo CSV usa vírgulas para separar valores, mas às vezes você pode estar trabalhando com arquivos que usam outros delimitadores, como tabulações ou ponto e vírgula.

O módulo csv fornece uma maneira fácil de lidar com esses casos, especificando o argumento delimitador.

import csv

with open('example_tab.csv', 'r') as file:
    reader = csv.reader(file, delimiter='\t')

    for row in reader:
        print(row)

Encontrei arquivos CSV que usam ponto e vírgula em vez de vírgulas – geralmente de fontes europeias – e é reconfortante saber que o módulo csv do Python lida com isso com facilidade.

Sejam vírgulas, tabulações ou qualquer outro delimitador, o módulo csv ajuda você.


Tratamento de dados complexos

E se seus dados contiverem vírgulas nos campos, aspas ou até mesmo quebras de linha?

O módulo CSV lida automaticamente com esses casos usando mecanismos de cotação.

Você também pode controlar como a cotação funciona usando o parâmetro de cotação.

import csv

data = [
    ['Name', 'Occupation', 'Description'],
    ['Alice', 'Engineer', 'Works on, "cutting-edge" technology'],
    ['Bob', 'Data Scientist', 'Loves analyzing data.']
]

with open('complex.csv', 'w', newline='') as file:
    writer = csv.writer(file, quoting=csv.QUOTE_ALL)
    writer.writerows(data)

Neste exemplo, QUOTE_ALL garante que todos os campos sejam colocados entre aspas.

Outras opções de cotação incluem csv.QUOTE_MINIMAL, csv.QUOTE_NONNUMERIC e csv.QUOTE_NONE, proporcionando controle total sobre como seus dados CSV são formatados.


Conclusão

Ao longo dos anos, passei a confiar no formato CSV como uma maneira leve e eficiente de mover dados, e o módulo csv do Python tem sido um companheiro confiável nessa jornada.

Quer você esteja lidando com planilhas simples ou campos de dados complexos com várias linhas, este módulo torna o processo intuitivo e fácil.

Embora trabalhar com CSVs possa parecer uma tarefa mundana no início, é uma porta de entrada para dominar a manipulação de dados.

Na minha experiência, depois de conquistar os CSVs, você se verá lidando com formatos maiores e mais complexos, como bancos de dados JSON ou SQL. Afinal, tudo começa com o básico.

Declaração de lançamento Este artigo foi reproduzido em: https://dev.to/devasservice/guide-to-pythons-csv-module-32ie?1 Se houver alguma violação, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3