Como lidar com os arquivos CSV em Python

Como lidar com os arquivos CSV em Python
Este artigo abordará um tutorial sobre o manuseio de arquivos “CSV” usando o Python. O termo "CSV" significa "valores separados por vírgula", onde cada linha ou linha contém valores baseados em texto delimitados por vírgulas. Em alguns casos, "semicolon" também é usado em vez de "vírgula" para separar valores. No entanto, isso não faz muita diferença para arquivar regras de formato e a lógica para lidar com os dois tipos de separadores permanecem os mesmos.

O formato de arquivo CSV é mais comumente usado para manter bancos de dados e planilhas. A primeira linha em um arquivo CSV é mais comumente usada para definir campos de coluna, enquanto quaisquer outras linhas restantes são consideradas linhas. Essa estrutura permite que os usuários apresentem dados tabulares usando arquivos CSV. Os arquivos CSV podem ser editados em qualquer editor de texto. No entanto, aplicativos como LibreOffice Calc fornecem ferramentas de edição avançada, classificação de classificação e filtro.

Lendo dados de arquivos CSV usando Python

O módulo CSV em Python permite ler, escrever e manipular todos os dados armazenados em arquivos CSV. Para ler um arquivo CSV, você precisará usar o método "leitor" do módulo "CSV" do Python, incluído na biblioteca padrão do Python.

Considere que você tem um arquivo CSV contendo os seguintes dados:

Manga, banana, maçã, laranja
50,70,30,90

A primeira linha do arquivo define cada categoria de coluna, nome de frutas neste caso. A segunda linha armazena valores em cada coluna (estoque na mão). Todos esses valores são delimitados por uma vírgula. Se você abrir esse arquivo em um aplicativo de planilha como LibreOffice Calc, seria assim:

Agora, para ler valores de “frutas.Arquivo CSV ”usando o módulo“ CSV ”do Python, você precisará usar o método“ leitor ”no formato a seguir:

importar CSV
com aberto ("frutas.CSV ") como arquivo:
data_reader = csv.leitor (arquivo)
para linha em data_reader:
impressão (linha)

A primeira linha na amostra acima importa o módulo "CSV". Em seguida, a declaração "com abertura" é usada para abrir com segurança um arquivo armazenado no seu disco rígido ("frutas.CSV ”neste caso). Um novo objeto "Data_Reader" é criado chamando o método "leitor" do módulo "CSV". Esse método "leitor" toma um nome de arquivo como um argumento obrigatório, então a referência a "frutas.CSV ”é passado para ele. Em seguida, uma declaração de loop "para" é executada para imprimir cada linha a partir dos "frutos.Arquivo CSV ”. Depois de executar a amostra de código mencionada acima, você deve obter a seguinte saída:

['50', '70', '30', '90']

Se você deseja atribuir números de linha à saída, pode usar a função "enumerar" que atribui um número a cada item em um iterável (a partir de 0, a menos que seja alterado).

importar CSV
com aberto ("frutas.CSV ") como arquivo:
data_reader = csv.leitor (arquivo)
Para índice, linha em enumerado (data_reader):
Imprimir (índice, linha)

A variável "índice" mantém a contagem de cada elemento. Depois de executar a amostra de código mencionada acima, você deve obter a seguinte saída:

0 ['manga', 'banana', 'maçã', 'laranja']
1 ['50', '70', '30', '90']

Como a primeira linha em um arquivo "CSV" normalmente contém títulos de colunas, você pode usar a função "enumerar" para extrair esses títulos:

importar CSV
com aberto ("frutas.CSV ") como arquivo:
data_reader = csv.leitor (arquivo)
Para índice, linha em enumerado (data_reader):
se índice == 0:
Cabeças = linha
Impressão (títulos)

O bloco "se" na declaração acima verifica se o índice é igual a zero (primeira linha em "frutas.arquivo csv ”). Se sim, então o valor da variável "linha" é atribuído a uma nova variável "títulos". Depois, executando a amostra de código acima, você deve obter a seguinte saída:

['Manga', 'banana', 'maçã', 'laranja']

Observe que você pode usar seu próprio delimitador ao chamar “CSV.Método do leitor ”usando um argumento opcional“ delimitador ”no seguinte formato:

importar CSV
com aberto ("frutas.CSV ") como arquivo:
data_reader = csv.leitor (arquivo, delimiter = ";")
para linha em data_reader:
impressão (linha)

Como em um arquivo CSV, cada coluna está associada a valores em uma linha, você pode querer criar um objeto Python "Dictionary" ao ler dados de um arquivo "CSV". Para fazer isso, você precisa usar o método "dictreader", conforme mostrado no código abaixo:

importar CSV
com aberto ("frutas.CSV ") como arquivo:
data_reader = csv.Dictreader (arquivo)
para linha em data_reader:
impressão (linha)

Depois de executar a amostra de código mencionada acima, você deve obter a seguinte saída:

'Manga': '50', 'banana': '70', 'Apple': '30', 'Orange': '90'

Então agora você tem um objeto de dicionário que associa colunas individuais a seus valores correspondentes nas linhas. Isso funciona bem se você tiver apenas uma linha. Vamos supor que as “frutas.O arquivo csv ”agora inclui uma linha adicional que especifica quantos dias será necessário para o estoque de frutas perecer.

Manga, banana, maçã, laranja
50,70,30,90
3,1,6,4

Quando você tem várias linhas, executando a mesma amostra de código acima produzirá uma saída diferente.

'Manga': '50', 'banana': '70', 'Apple': '30', 'Orange': '90'
'Mango': '3', 'banana': '1', 'maçã': '6', 'laranja': '4'

Isso pode não ser o ideal, pois você pode mapear todos os valores referentes a uma coluna para um par de valores-chave em um dicionário Python. Experimente este exemplo de código:

importar CSV
com aberto ("frutas.CSV ") como arquivo:
data_reader = csv.Dictreader (arquivo)
data_dict =
para linha em data_reader:
Para chave, valor na linha.Unid():
data_dict.setDefault (Key, [])
data_dict [chave].Anexar (valor)
Print (data_dict)

Depois de executar a amostra de código mencionada acima, você deve obter a seguinte saída:

'Manga': ['50', '3'], 'banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': [90 ',' 4 ']

Um loop "for" é usado em cada elemento do objeto "dictreader" para loop sobre pares de valor-chave. Uma nova variável de dicionário Python "data_dict" é definida antes disso. Ele armazenará mapeamentos de dados finais. Sob o segundo bloco de loop "para", o método "setDefault" do Python Dictionary é usado. Este método atribui um valor a uma chave de dicionário. Se o par de valores-chave não existir, um novo será criado a partir dos argumentos especificados. Portanto, neste caso, uma nova lista vazia será atribuída a uma chave se ainda não existir. Por fim, "valor" é anexado à sua chave correspondente no objeto "Data_Dict" final.

Escrevendo dados em um arquivo CSV

Para escrever dados em um arquivo "CSV", você precisará usar o método "Writer" do módulo "CSV". O exemplo abaixo irá anexar uma nova linha aos “frutos existentes.Arquivo CSV ”.

importar CSV
com aberto ("frutas.CSV "," A ") como arquivo:
data_writer = csv.escritor (arquivo)
data_writer.Writerw ([3,1,6,4])

A primeira declaração abre o arquivo no modo "Apênder", indicado pelo argumento "a". Em seguida, o método "Writer" é chamado e a referência a "frutas.O arquivo CSV ”é passado para ele como um argumento. O método "Writertow" escreve ou adiciona uma nova linha ao arquivo.

Se você deseja converter o Python Dictionary em uma estrutura de arquivo "CSV" e salvar a saída em um arquivo "CSV", tente este código:

importar CSV
com aberto ("frutas.CSV "," W ") como arquivo:
Cabeças = ["manga", "banana", "maçã", "laranja"]
data_writer = csv.Dictwriter (arquivo, fieldnames = títulos)
data_writer.writeHeader ()
data_writer.Writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.Writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)

Depois de abrir um “frutas vazios.Arquivo CSV "usando uma declaração" com aberto ", é definida uma nova variável" títulos "que contém títulos de coluna. Um novo objeto "Data_writer" é criado chamando o método "dictwriter" e passando por referência aos "frutos.Arquivo CSV ”e um argumento“ FieldNames ”. Na próxima linha, os títulos das colunas são gravados no arquivo usando o método "WriteHeader". As duas últimas declarações adicionam novas linhas aos títulos correspondentes criados na etapa anterior.

Conclusão

Os arquivos CSV fornecem uma maneira interessante de escrever dados em formato tabular. O módulo "CSV" interno do Python facilita a manutenção de dados disponíveis nos arquivos "CSV" e implementará mais lógica.