UM Arquivo CSV (valores separados por vírgula) é um arquivo de texto simples onde cada linha representa um registro de dados e os campos dentro de cada registro são separados por vírgulas. É comumente usado para planilhas e bancos de dados devido à sua simplicidade e legibilidade.
Abaixo estão algumas operações que realizamos ao trabalhar com arquivos CSV Python em Python
Lendo um arquivo CSV
A leitura de um arquivo CSV é feita usando o objeto leitor. O arquivo CSV é aberto como um arquivo de texto com a função open() integrada do Python, que retorna um objeto de arquivo. Neste exemplo, primeiro abrimos o arquivo CSV no modo READ, o objeto de arquivo é convertido no objeto csv.reader e a operação posterior ocorre. O código e a explicação detalhada são fornecidos abaixo.
Python
import csv filename = 'aapl.csv' # File name fields = [] # Column names rows = [] # Data rows with open(filename 'r') as csvfile: csvreader = csv.reader(csvfile) # Reader object fields = next(csvreader) # Read header for row in csvreader: # Read rows rows.append(row) print('Total no. of rows: %d' % csvreader.line_num) # Row count print('Field names are: ' + ' '.join(fields)) print('nFirst 5 rows are:n') for row in rows[:5]: for col in row: print('%10s' % col end=' ') print('n')
Saída
O exemplo acima usa um arquivo CSV aapl.csv que pode ser baixado de aqui .
Explicação:
- com abertura (...) abre o arquivo CSV em modo de leitura com segurança usando um gerenciador de contexto.
- csv.reader(csvfile) transforma o arquivo em um objeto leitor CSV.
- próximo(csvreader) extrai a primeira linha como cabeçalhos de coluna.
- Percorrer leitor de csv para anexar cada linha (como uma lista) às linhas.
- Imprima o total de cabeçalhos de linhas e as primeiras 5 linhas de dados em uma visualização formatada.
Lendo arquivos CSV em um dicionário com csv
Podemos ler um arquivo CSV em um dicionário usando o módulo csv em Python e a classe csv.DictReader. Aqui está um exemplo:
Suponha que temos um funcionários.csv arquivo e conteúdo dentro dele será:
departamento nomeadoaniversário_mês
John SmithHRJulho
Alice JohnsonITOoutubro
Bob WilliamsFinançasJaneiro
Exemplo: Isso lê cada linha como um dicionário (cabeçalhos como chaves) e depois a anexa a list .
Pythonimport csv with open('employees.csv' mode='r') as file: csv_reader = csv.DictReader(file) # Create DictReader data_list = [] # List to store dictionaries for row in csv_reader: data_list.append(row) for data in data_list: print(data)
Saída:
{'nome': 'John Smith' 'departamento': 'RH' 'aniversário_mês': 'julho'}
{'nome': 'Alice Johnson' 'departamento': 'TI' 'birthday_month': 'Outubro'}
{'nome': 'Bob Williams' 'departamento': 'Finanças' 'birthday_month': 'Janeiro'}
Explicação:
python string f
- com abertura (...) abre o arquivo usando um gerenciador de contexto.
- csv.DictReader(arquivo) lê cada linha como um dicionário usando cabeçalhos como chaves.
- data_list.append(linha) armazena cada dicionário em uma lista.
Gravando em um arquivo CSV
Para gravar em um arquivo CSV, primeiro abrimos o arquivo CSV no modo WRITE. O objeto de arquivo é convertido no objeto csv.writer e outras operações são realizadas. O código e a explicação detalhada são fornecidos abaixo.
Pythonimport csv # Define header and data rows fields = ['Name' 'Branch' 'Year' 'CGPA'] rows = [ ['Nikhil' 'COE' '2' '9.0'] ['Sanchit' 'COE' '2' '9.1'] ['Aditya' 'IT' '2' '9.3'] ['Sagar' 'SE' '1' '9.5'] ['Prateek' 'MCE' '3' '7.8'] ['Sahil' 'EP' '2' '9.1'] ] filename = 'university_records.csv' with open(filename 'w') as csvfile: csvwriter = csv.writer(csvfile) # Create writer object csvwriter.writerow(fields) # Write header csvwriter.writerows(rows) # Write multiple rows
Explicação:
- campos define os cabeçalhos das colunas e as linhas contêm os dados como uma lista de listas.
- com abrir(... 'w') abre o arquivo no modo de gravação usando um gerenciador de contexto.
- csv.writer (arquivo csv) cria um objeto escritor para gravar no CSV.
- escritor(campos) grava a linha do cabeçalho no arquivo.
- escritores(linhas) grava todas as linhas de dados no CSV de uma só vez.
Escrevendo um dicionário em um arquivo CSV
Para gravar um dicionário em um arquivo CSV, o objeto de arquivo (csvfile) é convertido em um objeto DictWriter. Um exemplo detalhado com explicação e código é fornecido abaixo.
Python# importing the csv module import csv # my data rows as dictionary objects mydict = [{'branch': 'COE' 'cgpa': '9.0' 'name': 'Nikhil' 'year': '2'} {'branch': 'COE' 'cgpa': '9.1' 'name': 'Sanchit' 'year': '2'} {'branch': 'IT' 'cgpa': '9.3' 'name': 'Aditya' 'year': '2'} {'branch': 'SE' 'cgpa': '9.5' 'name': 'Sagar' 'year': '1'} {'branch': 'MCE' 'cgpa': '7.8' 'name': 'Prateek' 'year': '3'} {'branch': 'EP' 'cgpa': '9.1' 'name': 'Sahil' 'year': '2'}] # field names fields = ['name' 'branch' 'year' 'cgpa'] # name of csv file filename = 'university_records.csv' # writing to csv file with open(filename 'w') as csvfile: # creating a csv dict writer object writer = csv.DictWriter(csvfile fieldnames=fields) # writing headers (field names) writer.writeheader() # writing data rows writer.writerows(mydict)
Saída
arquivo csvConsidere que um arquivo CSV se parece com isto em texto simples:
tipo de data digitado
registro universitárioExplicação:
- com abertura (...) abre o arquivo com segurança usando um gerenciador de contexto.
- csv.DictWriter(... ) mapeia chaves de dicionário para colunas CSV.
- cabeçalho de gravação() escreve cabeçalhos de coluna.
- escritores (mydict) grava todos os dicionários como linhas CSV.
Lendo arquivos CSV com Pandas
Podemos ler um CSV em Python arquivos com Pandas usando pandas.read_csv() função. Aqui está um exemplo:
Suponha que temos um arquivo Employees.csv e o conteúdo dentro dele será:
departamento nomeadoaniversário_mês
John SmithHRJulho
Alice JohnsonITOoutubro
Bob WilliamsFinançasJaneiro
Neste exemplo, pd.read_csv() lê o arquivo CSV em um Pandas DataFrame. O DataFrame resultante pode ser usado para várias tarefas de manipulação e análise de dados.
Pythonimport pandas as pd # Read the CSV file into a DataFrame df = pd.read_csv('employees.csv') # Display the DataFrame print(df)
Saída:
nome departamento aniversário_mês
0 John Smith RH julho
1 Alice Johnson TI outubro
2 Bob Williams Finanças Janeiro
Podemos acessar dados de filtro de colunas específicas e realizar várias operações usando a funcionalidade DataFrame do pandas. Por exemplo, se quisermos acessar a coluna 'nome', podemos usar df['nome'].
Python# Access the 'name' column names = df['name'] print(names)
Saída :
0 John Smith
1Alice Johnson
doisBob Williams
Nome: nome dtype: objeto
Escrevendo arquivos CSV com Pandas
Podemos usar Pandas para escrever arquivos CSV. Isso pode ser feito usando pd.DataFrame() função. Neste exemplo o Pandas biblioteca é usada para converter uma lista de dicionários (mydict) em um DataFrame que representa dados tabulares. O DataFrame é então gravado em um arquivo CSV Python chamado 'output.csv' usando o método to_csv, criando um arquivo de dados estruturado e legível para análise ou compartilhamento posterior.
Pythonimport pandas as pd mydict = [ {'branch': 'COE' 'cgpa': '9.0' 'name': 'Nikhil' 'year': '2'} {'branch': 'COE' 'cgpa': '9.1' 'name': 'Sanchit' 'year': '2'} {'branch': 'IT' 'cgpa': '9.3' 'name': 'Aditya' 'year': '2'} {'branch': 'SE' 'cgpa': '9.5' 'name': 'Sagar' 'year': '1'} {'branch': 'MCE' 'cgpa': '7.8' 'name': 'Prateek' 'year': '3'} {'branch': 'EP' 'cgpa': '9.1' 'name': 'Sahil' 'year': '2'} ] # Create a DataFrame from the list of dictionaries df = pd.DataFrame(mydict) # Write the DataFrame to a CSV file df.to_csv('output.csv' index=False)
Arquivo CSV de saída:
filialcgpanameano
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Armazenando e-mails em arquivos CSV
Começamos importando o módulo csv e o usamos para armazenar nomes e e-mails como valores separados por vírgula. Usando a função open() criamos um arquivo CSV e então escrevemos cada linha usando um objeto escritor com colunas separadas para nomes e emails.
Python# importing the csv module import csv # field names fields = ['Name' 'Email'] # data rows of csv file rows = [ ['Nikhil' '[email protected]'] ['Sanchit' '[email protected]'] ['Aditya' '[email protected]'] ['Sagar' '[email protected]'] ['Prateek' '[email protected]'] ['Sahil' '[email protected]']] # name of csv file filename = 'email_records.csv' # writing to csv file with open(filename 'w') as csvfile: # creating a csv writer object csvwriter = csv.writer(csvfile) # writing the fields csvwriter.writerow(fields) # writing the data rows csvwriter.writerows(rows)
Saída:
E-mails em csv Criar questionário