Lavorare con file CSV in Python
UN File CSV (valori separati da virgole). è un file di testo semplice in cui ogni riga rappresenta un record di dati e i campi all'interno di ciascun record sono separati da virgole. È comunemente usato per fogli di calcolo e database grazie alla sua semplicità e leggibilità.
Di seguito sono riportate alcune operazioni che eseguiamo mentre lavoriamo con i file CSV Python in Python
Lettura di un file CSV
La lettura da un file CSV viene eseguita utilizzando l'oggetto lettore. Il file CSV viene aperto come file di testo con la funzione open() incorporata di Python che restituisce un oggetto file. In questo esempio apriamo prima il file CSV in modalità READ, l'oggetto file viene convertito nell'oggetto csv.reader e vengono eseguite ulteriori operazioni. Il codice e la spiegazione dettagliata sono forniti di seguito.
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 ( ' n First 5 rows are: n ' ) for row in rows [: 5 ]: for col in row : print ( ' %10s ' % col end = ' ' ) print ( ' n ' )
Produzione
L'esempio precedente utilizza un file CSV aapl.csv da cui è possibile scaricare Qui .
Spiegazione:
- con aperto(...) apre il file CSV in modalità di lettura in modo sicuro utilizzando un gestore di contesto.
- csv.lettore(filecsv) trasforma il file in un oggetto lettore CSV.
- successivo(csvreader) estrae la prima riga come intestazioni di colonna.
- Passa attraverso csvreader per aggiungere ogni riga (come elenco) a righe.
- Stampa le intestazioni delle righe totali e le prime 5 righe di dati in una vista formattata.
Leggere i file CSV in un dizionario con csv
Possiamo leggere un file CSV in un dizionario utilizzando il modulo csv in Python e la classe csv.DictReader. Ecco un esempio:
Supponiamo di avere a dipendenti.csv file e il contenuto al suo interno saranno:
denominatodipartimentocompleanno_mese
John SmithHRLuglio
Alice JohnsonITOttobre
Bob WilliamsFinanzaGennaio
Esempio: Questo legge ogni riga come un dizionario (intestazioni come chiavi) quindi la aggiunge a list .
Python import 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 )
Produzione:
{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'July'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'department': 'Finanza' 'birthday_month': 'Gennaio'}
Spiegazione:
- con aperto(...) apre il file utilizzando un gestore di contesto.
- csv.DictReader(file) legge ogni riga come un dizionario utilizzando le intestazioni come chiavi.
- data_list.append(riga) memorizza ciascun dizionario in un elenco.
Scrittura in un file CSV
Per scrivere su un file CSV dobbiamo prima aprire il file CSV in modalità SCRIVERE. L'oggetto file viene convertito nell'oggetto csv.writer e vengono eseguite ulteriori operazioni. Il codice e la spiegazione dettagliata sono forniti di seguito.
Python import 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
Spiegazione:
- campi definisce le intestazioni delle colonne e le righe contengono i dati come un elenco di elenchi.
- con aperto(... 'w') apre il file in modalità scrittura utilizzando un gestore di contesto.
- csv.writer(filecsv) crea un oggetto scrittore per scrivere nel CSV.
- writerrow(campi) scrive la riga di intestazione nel file.
- writerrighe(righe) scrive tutte le righe di dati nel CSV contemporaneamente.
Scrittura di un dizionario in un file CSV
Per scrivere un dizionario in un file CSV, l'oggetto file (csvfile) viene convertito in un oggetto DictWriter. Di seguito è riportato un esempio dettagliato con spiegazione e codice.
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 )
Produzione
file CSV Considera che un file CSV assomiglia a questo in testo semplice:
registro universitario Spiegazione:
- con aperto(...) apre il file in modo sicuro utilizzando un gestore di contesto.
- csv.DictWriter(... ) associa le chiavi del dizionario alle colonne CSV.
- intestazione di scrittura() scrive le intestazioni delle colonne.
- writerrows(mydict) scrive tutti i dizionari come righe CSV.
Leggere file CSV con Panda
Possiamo leggere a CSV Python file con Panda che utilizzano panda.read_csv() funzione. Ecco un esempio:
Supponiamo di avere un file Employees.csv e il contenuto al suo interno sarà:
denominatodipartimentocompleanno_mese
John SmithHRLuglio
Alice JohnsonITOttobre
Bob WilliamsFinanzaGennaio
In questo esempio pd.read_csv() legge il file CSV in un DataFrame Pandas. Il DataFrame risultante può essere utilizzato per varie attività di manipolazione e analisi dei dati.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Produzione:
nome reparto compleanno_mese
0 John Smith HR luglio
1 Alice Johnson IT ottobre
2 Bob Williams Finanza gennaio
Possiamo accedere a colonne specifiche, filtrare i dati ed eseguire varie operazioni utilizzando la funzionalità DataFrame di Panda. Ad esempio se vogliamo accedere alla colonna 'nome' possiamo usare df['nome'].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Produzione :
0 Giovanni Smith
1Alice Johnson
2BobWilliams
Nome: nome dtipo: oggetto
Scrittura di file CSV con Panda
Possiamo usare Panda per scrivere file CSV. Può essere fatto utilizzando pd.DataFrame() funzione. In questo esempio il Panda La libreria viene utilizzata per convertire un elenco di dizionari (mydict) in un DataFrame che rappresenta dati tabulari. Il DataFrame viene quindi scritto in un file CSV Python denominato "output.csv" utilizzando il metodo to_csv creando un file di dati strutturato e leggibile per ulteriori analisi o condivisioni.
Python import 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 )
File CSV di output:
branchcgpanameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Memorizzazione delle e-mail in file CSV
Iniziamo importando il modulo CSV e utilizzandolo per memorizzare nomi ed e-mail come valori separati da virgole. Utilizzando la funzione open() creiamo un file CSV e quindi scriviamo ogni riga utilizzando un oggetto writer con colonne separate per nomi ed e-mail.
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 )
Produzione:
E-mail in formato CSV Crea quiz