Lavorare con file CSV in Python

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

Lavorare con file CSV in Python

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

Lavorare con file CSV in Pythonfile CSV

Considera che un file CSV assomiglia a questo in testo semplice:

registro universitarioregistro 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 CSVE-mail in formato CSV Crea quiz