Ler e gravar arquivos CSV em Python usando o módulo CSV & Pandas

Índice:

Anonim

O que é um arquivo CSV?

Um arquivo CSV é um tipo de arquivo de texto simples que usa uma estrutura específica para organizar dados tabulares. CSV é um formato comum para intercâmbio de dados, pois é compacto, simples e geral. Muitos serviços online permitem que seus usuários exportem dados tabulares do site para um arquivo CSV. Os arquivos do CSV serão abertos no Excel, e quase todos os bancos de dados possuem uma ferramenta que permite a importação do arquivo CSV. O formato padrão é definido por dados de linhas e colunas. Além disso, cada linha é encerrada por uma nova linha para iniciar a próxima linha. Também dentro da linha, cada coluna é separada por uma vírgula.

Neste tutorial, você aprenderá:

  • O que é um arquivo CSV?
  • Arquivo de amostra CSV.
  • Módulo Python CSV
  • Funções do Módulo CSV
  • Lendo arquivos CSV
  • Leitura como um dicionário
  • Gravando em arquivos CSV
  • Lendo arquivos CSV com Pandas
  • Gravando em arquivos CSV com Pandas

Arquivo de amostra CSV.

Os dados na forma de tabelas também são chamados de CSV (valores separados por vírgula) - literalmente "valores separados por vírgula". Este é um formato de texto destinado à apresentação de dados tabulares. Cada linha do arquivo é uma linha da tabela. Os valores de colunas individuais são separados por um símbolo separador - uma vírgula (,), um ponto e vírgula (;) ou outro símbolo. O CSV pode ser facilmente lido e processado pelo Python.

Considere o seguinte Tabe

Tabela de dados

Linguagem de programação Projetado por Apareceu Extensão
Pitão Guido van Rossum 1991 .py
Java James Gosling 1995 .Java
C ++ Bjarne Stroustrup 1983 .cpp

Você pode representar esta tabela em csv conforme abaixo.

Dados CSV

Linguagem de programação, desenvolvida por, exibida, extensão

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C ++, Bjarne Stroustrup, 1983, .cpp

Como você pode ver, cada linha é uma nova linha e cada coluna é separada por uma vírgula. Este é um exemplo da aparência de um arquivo CSV.

Baixar dados CSV

Módulo Python CSV

Python fornece um módulo CSV para lidar com arquivos CSV. Para ler / gravar dados, você precisa percorrer as linhas do CSV. Você precisa usar o método de divisão para obter dados de colunas especificadas.

Funções do Módulo CSV

Na documentação do módulo CSV, você pode encontrar as seguintes funções:

  • csv.field_size_limit - retorna o tamanho máximo do campo
  • csv.get_dialect - obtém o dialeto que está associado ao nome
  • csv.list_dialects - mostra todos os dialetos registrados
  • csv.reader - lê dados de um arquivo csv
  • csv.register_dialect - dialeto associado ao nome
  • csv.writer - grava dados em um arquivo csv
  • csv.unregister_dialect - exclui o dialeto associado ao nome do registro de dialeto
  • csv.QUOTE_ALL - Cite tudo, independentemente do tipo.
  • csv.QUOTE_MINIMAL - Campos de cotação com caracteres especiais
  • csv.QUOTE_NONNUMERIC - Cite todos os campos que não são números de valor
  • csv.QUOTE_NONE - Não cite nada na saída

Neste tutorial, vamos nos concentrar apenas nas funções de leitor e gravador, que permitem editar, modificar e manipular os dados em um arquivo CSV.

Como ler um arquivo CSV

Para ler dados de arquivos CSV, você deve usar a função de leitor para gerar um objeto de leitor.

A função de leitor é desenvolvida para pegar cada linha do arquivo e fazer uma lista de todas as colunas. Em seguida, você deve escolher a coluna para a qual deseja os dados variáveis.

Parece muito mais complicado do que é. Vamos dar uma olhada neste exemplo e descobriremos que trabalhar com o arquivo csv não é tão difícil.

#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)

Ao executar o programa acima, o resultado será:

['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']

Como ler um CSV como um dicionário

Você também pode usar o DictReader para ler arquivos CSV. Os resultados são interpretados como um dicionário em que a linha do cabeçalho é a chave e as outras linhas são os valores.

Considere o seguinte código

#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)

O resultado deste código é:

OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')])OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')])OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])

E esta maneira de ler os dados do arquivo CSV é muito mais fácil do que o método anterior. No entanto, essa não é a melhor maneira de ler dados.

Como escrever um arquivo CSV

Quando você tem um conjunto de dados que gostaria de armazenar em um arquivo CSV, você deve usar a função writer (). Para iterar os dados nas linhas (linhas), você deve usar a função writerow ().

Considere o seguinte exemplo. Gravamos os dados em um arquivo "writeData.csv" onde o delimitador é um apóstrofo.

#import necessary modulesimport csvwith open('X:\writeData.csv', mode='w') as file:writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)#way to write to csv filewriter.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension'])writer.writerow(['Python', 'Guido van Rossum', '1991', '.py'])writer.writerow(['Java', 'James Gosling', '1995', '.java'])writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])

O resultado no arquivo csv é:

Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp

Lendo arquivos CSV com Pandas

Pandas é uma biblioteca de código aberto que permite realizar manipulação de dados em Python. O Pandas oferece uma maneira fácil de criar, manipular e excluir os dados.

Você deve instalar a biblioteca pandas com o comando pip install pandas . No Windows, você executará este comando no Prompt de Comando enquanto estiver no Linux no Terminal.

Ler o CSV em um DataFrame do pandas é muito rápido e fácil:

#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)

Resultado:

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp 

Biblioteca muito útil. Em apenas três linhas de código você obteve o mesmo resultado anterior. O Pandas sabe que a primeira linha do CSV contém nomes de colunas e os usará automaticamente.

Gravando em arquivos CSV com Pandas

Escrever em arquivo CSV com o Pandas é tão fácil quanto ler. Aqui você pode convencer nisso. Primeiro você deve criar DataFrame com base no código a seguir.

from pandas import DataFrameC = {'Programming language': ['Python','Java', 'C++'],'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'],'Appeared': ['1991', '1995', '1985'],'Extension': ['.py', '.java', '.cpp'],}df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension'])export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be storedprint (df)

Aqui está o resultado

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp

E o arquivo CSV é criado no local especificado.

Conclusão

Então, agora você sabe como usar o método 'csv' e também ler e gravar dados no formato CSV. Os arquivos CSV são amplamente usados ​​em aplicativos de software porque são fáceis de ler e gerenciar e seu tamanho pequeno os torna relativamente rápidos para processamento e transmissão.

O módulo csv fornece várias funções e classes que permitem a você ler e escrever facilmente. Você pode consultar a documentação oficial do Python e encontrar mais algumas dicas e módulos interessantes. CSV é a melhor maneira de salvar, visualizar e enviar dados. Na verdade, não é tão difícil de aprender como parece no início. Mas com um pouco de prática, você o dominará.

Pandas é uma ótima alternativa para ler arquivos CSV.

Além disso, existem outras maneiras de analisar arquivos de texto com bibliotecas como ANTLR, PLY e PlyPlus. Todos eles podem lidar com análises pesadas e, se a manipulação simples de String não funcionar, existem expressões regulares que você pode usar.