logo

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('nFirst 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:

sorteren in lijst in Java
  • 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 record' loading='lazy' title=universitair 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.

topologieën
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 csv' loading='lazy' title=E-mails in csv Quiz maken