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
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
csv-Datei Bedenken Sie, dass eine CSV-Datei im Klartext so aussieht:
Universitä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-Format Quiz erstellen