Arbeiten mit CSV-Dateien in Python

Arbeiten mit CSV-Dateien in Python

A CSV-Datei (Comma Separated Values). ist eine reine Textdatei, in der jede Zeile einen Datensatz darstellt und die Felder in jedem Datensatz durch Kommas getrennt sind. Aufgrund seiner Einfachheit und Lesbarkeit wird es häufig für Tabellenkalkulationen und Datenbanken verwendet.

Nachfolgend finden Sie einige Vorgänge, die wir bei der Arbeit mit Python-CSV-Dateien in Python ausführen

Lesen einer CSV-Datei

Das Lesen aus einer CSV-Datei erfolgt über das Reader-Objekt. Die CSV-Datei wird als Textdatei mit der in Python integrierten open()-Funktion geöffnet, die ein Dateiobjekt zurückgibt. In diesem Beispiel öffnen wir zunächst die CSV-Datei im READ-Modus. Das Dateiobjekt wird in das csv.reader-Objekt konvertiert und der weitere Vorgang findet statt. Code und detaillierte Erklärung finden Sie unten.

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

Ausgabe

Arbeiten mit CSV-Dateien in Python

Das obige Beispiel verwendet eine CSV-Datei aapl.csv welches heruntergeladen werden kann von Hier .

Erläuterung:

  • mit offenem(...) Öffnet die CSV-Datei sicher im Lesemodus mithilfe eines Kontextmanagers.
  • csv.reader(csvfile) Wandelt die Datei in ein CSV-Reader-Objekt um.
  • next(csvreader) Extrahiert die erste Zeile als Spaltenüberschriften.
  • Durchschleifen csvreader um jede Zeile (als Liste) an Zeilen anzuhängen.
  • Drucken Sie die Gesamtzeilenüberschriften und die ersten fünf Datenzeilen in einer formatierten Ansicht.

Einlesen von CSV-Dateien in ein Wörterbuch mit csv

Mit dem CSV-Modul in Python und der Klasse csv.DictReader können wir eine CSV-Datei in ein Wörterbuch einlesen. Hier ist ein Beispiel:

Angenommen, wir haben eine Mitarbeiter.csv Datei und Inhalt darin werden sein:

benannteAbteilungGeburtstag_Monat
John SmithHRJuly
Alice JohnsonITOktober
Bob WilliamsFinanzenJanuar

Beispiel: Dadurch wird jede Zeile als Wörterbuch (Kopfzeilen als Schlüssel) gelesen und dann an die Liste angehängt.

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  )   

Ausgabe:

{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'July'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'January'}

Erläuterung:

  • mit offenem(...) öffnet die Datei mit einem Kontextmanager.
  • csv.DictReader(Datei) liest jede Zeile als Wörterbuch und verwendet Kopfzeilen als Schlüssel.
  • data_list.append(row) speichert jedes Wörterbuch in einer Liste.

Schreiben in eine CSV-Datei

Um in eine CSV-Datei zu schreiben, öffnen wir zunächst die CSV-Datei im SCHREIBE-Modus. Das Dateiobjekt wird in das csv.writer-Objekt konvertiert und weitere Vorgänge werden ausgeführt. Code und detaillierte Erklärung finden Sie unten.

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   

Erläuterung:

  • Felder Definiert die Spaltenüberschriften und Zeilen und enthält die Daten als Liste von Listen.
  • mit open(... 'w') öffnet die Datei im Schreibmodus mit einem Kontextmanager.
  • csv.writer(csvfile) Erstellt ein Writer-Objekt zum Schreiben in die CSV.
  • Writerow(Felder) schreibt die Kopfzeile in die Datei.
  • Writerows(Zeilen) schreibt alle Datenzeilen auf einmal in die CSV.

Schreiben eines Wörterbuchs in eine CSV-Datei

Um ein Wörterbuch in eine CSV-Datei zu schreiben, wird das Dateiobjekt (csvfile) in ein DictWriter-Objekt konvertiert. Ein detailliertes Beispiel mit Erklärung und Code finden Sie unten.

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  )   

Ausgabe

Arbeiten mit CSV-Dateien in Pythoncsv-Datei

Bedenken Sie, dass eine CSV-Datei im Klartext so aussieht:

UniversitätsrekordUniversitätsrekord

Erläuterung:

  • mit offenem(...) Öffnet die Datei sicher mit einem Kontextmanager.
  • csv.DictWriter(... ) ordnet Wörterbuchschlüssel CSV-Spalten zu.
  • writeheader() schreibt Spaltenüberschriften.
  • Writerows(mydict) schreibt alle Wörterbücher als CSV-Zeilen.

CSV-Dateien mit Pandas lesen

Wir können a lesen Python-CSV Dateien mit Pandas verwenden pandas.read_csv() Funktion. Hier ist ein Beispiel:

Angenommen, wir haben eine Datei „mitarbeiter.csv“ mit folgendem Inhalt:

benannteAbteilungGeburtstag_Monat
John SmithHRJuly
Alice JohnsonITOktober
Bob WilliamsFinanzenJanuar

In diesem Beispiel liest pd.read_csv() die CSV-Datei in einen Pandas DataFrame. Der resultierende DataFrame kann für verschiedene Datenmanipulations- und Analyseaufgaben verwendet werden.

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

Ausgabe:

Namensabteilung Geburtstag_Monat
0 John Smith HR Juli
1 Alice Johnson IT Oktober
2 Bob Williams Finance Januar

Mit der DataFrame-Funktionalität von Pandas können wir auf bestimmte Spaltenfilterdaten zugreifen und verschiedene Vorgänge ausführen. Wenn wir beispielsweise auf die Spalte „Name“ zugreifen möchten, können wir df['name'] verwenden.

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

Ausgabe :

0 John Smith
1 Alice Johnson
2 Bob Williams
Name: Name dtype: Objekt

CSV-Dateien mit Pandas schreiben

Wir können Pandas verwenden, um CSV-Dateien zu schreiben. Dies kann durch Verwendung erfolgen pd.DataFrame() Funktion. In diesem Beispiel die Pandas Die Bibliothek wird verwendet, um eine Liste von Wörterbüchern (mydict) in einen DataFrame zu konvertieren, der tabellarische Daten darstellt. Der DataFrame wird dann mithilfe der to_csv-Methode in eine Python-CSV-Datei mit dem Namen „output.csv“ geschrieben, wodurch eine strukturierte und lesbare Datendatei für die weitere Analyse oder Weitergabe erstellt wird.

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  )   

CSV-Ausgabedatei:

branchcgpanameyear
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3

E-Mails in CSV-Dateien speichern

Wir beginnen mit dem Import des CSV-Moduls und verwenden es, um Namen und E-Mails als durch Kommas getrennte Werte zu speichern. Mit der Funktion open() erstellen wir eine CSV-Datei und schreiben dann jede Zeile mithilfe eines Writer-Objekts mit separaten Spalten für Namen und E-Mails.

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  )   

Ausgabe:

E-Mails im CSV-FormatE-Mails im CSV-Format Quiz erstellen