Werken met csv-bestanden in Python

Werken met csv-bestanden in Python

A CSV-bestand (Comma Separated Values). is een tekstbestand zonder opmaak waarbij elke regel een gegevensrecord vertegenwoordigt en de velden binnen elk record worden gescheiden door komma's. Het wordt vaak gebruikt voor spreadsheets en databases vanwege de eenvoud en leesbaarheid.

Hieronder staan ​​enkele bewerkingen die we uitvoeren tijdens het werken met Python CSV-bestanden in Python

Een CSV-bestand lezen

Het lezen uit een CSV-bestand gebeurt met behulp van het reader-object. Het CSV-bestand wordt geopend als een tekstbestand met de ingebouwde open()-functie van Python, die een bestandsobject retourneert. In dit voorbeeld openen we eerst het CSV-bestand in de READ-modus. Het bestandsobject wordt geconverteerd naar het csv.reader-object en verdere bewerking vindt plaats. Code en gedetailleerde uitleg vindt u hieronder.

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  '  )   

Uitvoer

Werken met csv-bestanden in Python

In het bovenstaande voorbeeld wordt een CSV-bestand gebruikt aapl.csv waar u vanaf kunt downloaden hier .

Uitleg:

  • met open(...) opent het CSV-bestand veilig in de leesmodus met behulp van een contextmanager.
  • csv.reader(csvbestand) verandert het bestand in een CSV-lezerobject.
  • volgende(csvreader) extraheert de eerste rij als kolomkoppen.
  • Loop door csvreader om elke rij (als een lijst) aan rijen toe te voegen.
  • Druk de kopteksten van de totale rijen en de eerste vijf gegevensrijen af ​​in een opgemaakte weergave.

CSV-bestanden in een woordenboek lezen met csv

We kunnen een CSV-bestand in een woordenboek lezen met behulp van de csv-module in Python en de csv.DictReader-klasse. Hier is een voorbeeld:

Stel dat we een medewerkers.csv bestand en de inhoud erin zal zijn:

naamafdelingverjaardag_maand
John SmithHRJuli
Alice JohnsonITOKtober
Bob WilliamsFinanciënjanuari

Voorbeeld: Hierdoor wordt elke rij gelezen als een woordenboek (kopteksten als sleutels) en wordt deze vervolgens toegevoegd aan 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  )   

Uitgang:

{'name': 'John Smith' 'afdeling': 'HR' 'verjaardag_maand': 'juli'}
{'name': 'Alice Johnson' 'afdeling': 'IT' 'verjaardag_maand': 'oktober'}
{'name': 'Bob Williams' 'afdeling': 'Financiën' 'verjaardag_maand': 'januari'}

Uitleg:

  • met open(...) opent het bestand met behulp van een contextmanager.
  • csv.DictReader(bestand) leest elke rij als een woordenboek met behulp van kopteksten als sleutels.
  • data_list.append(rij) slaat elk woordenboek op in een lijst.

Schrijven naar een CSV-bestand

Om naar een CSV-bestand te schrijven, openen we eerst het CSV-bestand in de SCHRIJF-modus. Het bestandsobject wordt geconverteerd naar het csv.writer-object en er vinden verdere bewerkingen plaats. Code en gedetailleerde uitleg vindt u hieronder.

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   

Uitleg:

  • velden definieert de kolomkoppen en rijen en bevat de gegevens als een lijst met lijsten.
  • met openen(... 'w') opent het bestand in schrijfmodus met behulp van een contextmanager.
  • csv.writer(csvbestand) creëert een writer-object om naar de CSV te schrijven.
  • schrijver(velden) schrijft de koprij naar het bestand.
  • schrijvers(rijen) schrijft alle gegevensrijen in één keer naar de CSV.

Een woordenboek naar een CSV-bestand schrijven

Om een ​​woordenboek naar een CSV-bestand te schrijven, wordt het bestandsobject (csvfile) geconverteerd naar een DictWriter-object. Hieronder vindt u een gedetailleerd voorbeeld met uitleg en code.

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  )   

Uitvoer

Werken met csv-bestanden in Pythoncsv-bestand

Bedenk dat een CSV-bestand er in platte tekst als volgt uitziet:

universitair recorduniversitair record

Uitleg:

  • met open(...) opent het bestand veilig met behulp van een contextmanager.
  • csv.DictWriter(... ) wijst woordenboeksleutels toe aan CSV-kolommen.
  • schrijfkop() schrijft kolomkoppen.
  • schrijvers (mydict) schrijft alle woordenboeken als CSV-rijen.

CSV-bestanden lezen met panda's

Wij kunnen lezen A Python-CSV bestanden waarbij Pandas gebruik maakt van panda's.read_csv() functie. Hier is een voorbeeld:

Stel dat we een medewerkers.csv-bestand hebben en de inhoud daarin zal zijn:

naamafdelingverjaardag_maand
John SmithHRJuli
Alice JohnsonITOKtober
Bob WilliamsFinanciënJanuari

In dit voorbeeld leest pd.read_csv() het CSV-bestand in een Pandas DataFrame. Het resulterende DataFrame kan worden gebruikt voor verschillende gegevensmanipulatie- en analysetaken.

Python
   import   pandas   as   pd   # Read the CSV file into a DataFrame   df   =   pd  .  read_csv  (  'employees.csv'  )   # Display the DataFrame   print  (  df  )   

Uitgang:

naam afdeling verjaardag_maand
0 John Smith HR juli
1 Alice Johnson IT oktober
2 Bob Williams Financiën januari

We hebben toegang tot specifieke kolommen, filtergegevens en voeren verschillende bewerkingen uit met behulp van Panda's DataFrame-functionaliteit. Als we bijvoorbeeld toegang willen krijgen tot de kolom 'naam', kunnen we df['naam'] gebruiken.

Python
   # Access the 'name' column   names   =   df  [  'name'  ]   print  (  names  )   

Uitvoer :

0 Johannes Smit
1 Alice Johnson
2Bob Williams
Naam: naam dtype: object

CSV-bestanden schrijven met Panda's

We kunnen Panda's gebruiken om CSV-bestanden te schrijven. Het kan gedaan worden door gebruik te maken van pd.DataFrame() functie. In dit voorbeeld is de Panda's bibliotheek wordt gebruikt om een ​​lijst met woordenboeken (mydict) te converteren naar een DataFrame dat tabelgegevens vertegenwoordigt. Het DataFrame wordt vervolgens naar een Python CSV-bestand met de naam 'output.csv' geschreven met behulp van de to_csv-methode, waardoor een gestructureerd en leesbaar gegevensbestand ontstaat voor verdere analyse of delen.

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  )   

Uitvoer CSV-bestand:

branchcgpanaamjaar
COE9.0Nikhil2
COE9.1 Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2

E-mails opslaan in CSV-bestanden

We beginnen met het importeren van de csv-module en gebruiken deze om namen en e-mailadressen op te slaan als door komma's gescheiden waarden. Met behulp van de functie open() maken we een CSV-bestand en schrijven vervolgens elke rij met behulp van een writer-object met afzonderlijke kolommen voor namen en e-mailadressen.

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  )   

Uitgang:

E-mails in csvE-mails in csv Quiz maken