CSV-bestand lezen in Python | CSV-bestand lezen en schrijven
Wat is een CSV-bestand?
Een CSV-bestand is een eenvoudig type tekstbestand dat een specifieke structuur gebruikt om tabelgegevens te rangschikken. De standaardindeling van een CSV-bestand wordt gedefinieerd door rij- en kolomgegevens waarbij een nieuwe regel elke rij beëindigt om de volgende rij te beginnen, en elke kolom wordt gescheiden door een komma binnen de rij.
CSV is een veelgebruikt formaat voor gegevensuitwisseling omdat het compact, eenvoudig en algemeen is. Veel online services stellen hun gebruikers in staat om tabelgegevens van de website naar een CSV-bestand te exporteren. CSV-bestanden worden geopend in Excel en bijna alle databases hebben een tool om import uit CSV-bestanden toe te staan.
In deze tutorial leer je:
- Wat is een CSV-bestand?
- CSV-voorbeeldbestand
- Python CSV-module
- CSV-modulefuncties
- Een CSV-bestand lezen in Python
- Een CSV-bestand inlezen in een woordenboek in Python
- Hoe een CSV-bestand in Python te schrijven
- Lees CSV-bestand met Panda's
- Schrijf een CSV-bestand met Panda's
CSV-voorbeeldbestand
Gegevens in de vorm van tabellen worden ook wel CSV (comma-separated values) genoemd - letterlijk 'door komma's gescheiden waarden'. Dit is een tekstformaat dat bedoeld is voor de presentatie van tabelgegevens. Elke regel van het bestand is één regel van de tabel. De waarden van afzonderlijke kolommen worden gescheiden door een scheidingsteken - een komma (,), een puntkomma (;) of een ander symbool. CSV kan gemakkelijk worden gelezen en verwerkt door Python.
Bekijk de volgende tabel
Tabelgegevens
Programmeertaal | Ontworpen door | Verschenen | Extensie |
---|---|---|---|
Python | Guido van Rossum | 1991 | .py |
Java | James Gosling | 1995 | .java |
C++ | Bjarne Stroustrup | 1983 | .cpp |
U kunt deze tabel in csv weergeven zoals hieronder.
CSV-gegevens
Programmeertaal, Ontworpen door, Verscheen, Extensie
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C++, Bjarne Stroustrup, 1983,.cpp
Zoals u kunt zien, is elke rij een nieuwe regel en wordt elke kolom gescheiden door een komma. Dit is een voorbeeld van hoe een CSV-bestand eruitziet.
CSV-gegevens downloaden
Python CSV-module
Python biedt een CSV-module om CSV-bestanden te verwerken. Om gegevens te lezen/schrijven, moet u de rijen van de CSV doorlopen. U moet de split-methode gebruiken om gegevens uit gespecificeerde kolommen te krijgen.
CSV-modulefuncties
In de documentatie van de CSV-module vindt u de volgende functies:
- csv.field_size_limit – retourneer maximale veldgrootte
- csv.get_dialect – haal het dialect op dat bij de naam hoort
- csv.list_dialects – toon alle geregistreerde dialecten
- csv.reader – lees gegevens uit een csv-bestand
- csv.register_dialect – associeer dialect met naam
- csv.writer – schrijf gegevens naar een csv-bestand
- csv.unregister_dialect – verwijder het dialect geassocieerd met de naam van het dialectregister
- csv.QUOTE_ALL – Citeer alles, ongeacht het type.
- csv.QUOTE_MINIMAL – Offertevelden met speciale tekens
- csv.QUOTE_NONNUMERIC - Citeer alle velden die geen getallenwaarde zijn
- csv.QUOTE_NONE – Citeer niets in de output
In deze zelfstudie gaan we ons alleen concentreren op de lees- en schrijffuncties waarmee u de gegevens in een CSV-bestand kunt bewerken, wijzigen en manipuleren.
Hoe een CSV-bestand in Python te lezen
Hieronder staan de stappen om het CSV-bestand in Python te lezen.
Stap 1) Om gegevens uit CSV-bestanden te lezen, moet u de lezerfunctie gebruiken om een lezerobject te genereren.
De leesfunctie is ontwikkeld om elke rij van het bestand te nemen en een lijst van alle kolommen te maken. Vervolgens moet u de kolom kiezen waarvoor u de variabele gegevens wilt hebben.
Het klinkt veel ingewikkelder dan het is. Laten we deze Python-code eens bekijken om het CSV-bestand te lezen, en we zullen ontdekken dat het werken met een csv-bestand niet zo moeilijk is.
#import necessary modules import csv with open('X:\data.csv','rt')as f: data = csv.reader(f) for row in data: print(row)
Stap 2) Als u het bovenstaande programma uitvoert, is de uitvoer:
['Programming language; Designed by; Appeared; Extension'] ['Python; Guido van Rossum; 1991; .py'] ['Java; James Gosling; 1995; .java'] ['C++; Bjarne Stroustrup;1983;.cpp']
Een CSV-bestand inlezen in een woordenboek in Python
U kunt DictReader ook gebruiken om CSV-bestanden te lezen. De resultaten worden geïnterpreteerd als een woordenboek waarbij de koprij de sleutel is en andere rijen waarden.
Overweeg de volgende code
#import necessary modules import csv reader = csv.DictReader(open("file2.csv")) for raw in reader: print(raw)
Het resultaat van deze code is:
OrderedDict([('Programming language', 'Python'), ('Designed by', 'Guido van Rossum'), (' Appeared', ' 1991'), (' Extension', ' .py')]) OrderedDict([('Programming language', 'Java'), ('Designed by', 'James Gosling'), (' Appeared', ' 1995'), (' Extension', ' .java')]) OrderedDict([('Programming language', 'C++'), ('Designed by', ' Bjarne Stroustrup'), (' Appeared', ' 1985'), (' Extension', ' .cpp')])
En deze manier om gegevens uit een CSV-bestand te lezen is veel eenvoudiger dan de eerdere methode. Dit is echter niet de beste manier om gegevens te lezen.
Hoe een CSV-bestand in Python te schrijven
Zo schrijft u een CSV-bestand in Python:
Als je een set gegevens hebt die je in een CSV-bestand wilt opslaan, moet je de writer()-functie gebruiken. Om de gegevens over de rijen(lijnen) te herhalen, moet u de functie writerow() gebruiken.
Beschouw het volgende voorbeeld. We schrijven gegevens in een bestand "writeData.csv" waar het scheidingsteken een apostrof is.
#import necessary modules import csv with open('X:\writeData.csv', mode='w') as file: writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL) #way to write to csv file writer.writerow(['Programming language', 'Designed by', 'Appeared', 'Extension']) writer.writerow(['Python', 'Guido van Rossum', '1991', '.py']) writer.writerow(['Java', 'James Gosling', '1995', '.java']) writer.writerow(['C++', 'Bjarne Stroustrup', '1985', '.cpp'])
Resultaat in csv-bestand is:
Programming language, Designed by, Appeared, Extension Python, Guido van Rossum, 1991, .py Java, James Gosling, 1995, .java C++, Bjarne Stroustrup,1983,.cpp
Lees CSV-bestand met Panda's
Pandas is een opensource-bibliotheek waarmee u CSV in Python kunt importeren en gegevensmanipulatie kunt uitvoeren. Panda's bieden een gemakkelijke manier om gegevens aan te maken, te manipuleren en te verwijderen.
Je moet de pandas-bibliotheek installeren met het commando pip install pandas
. In Windows voert u deze opdracht uit in de opdrachtprompt terwijl u in Linux in de terminal bent.
Het inlezen van de CSV in een Panda's DataFrame gaat heel snel en gemakkelijk:
#import necessary modules import pandas result = pandas.read_csv('X:\data.csv') print(result)
Resultaat van het gelezen CSV Panda's voorbeeld:
Programming language, Designed by, Appeared, Extension 0 Python, Guido van Rossum, 1991, .py 1 Java, James Gosling, 1995, .java 2 C++, Bjarne Stroustrup,1983,.cpp
Zeer handige bibliotheek. In slechts drie regels code heb je hetzelfde resultaat als eerder. Panda's weten dat de eerste regel van de CSV kolomnamen bevat en zal deze automatisch gebruiken.
Schrijf een CSV-bestand met Panda's
Schrijven naar een CSV-bestand met Panda's is net zo eenvoudig als lezen. Hierin kunt u overtuigen. Eerst moet u DataFrame maken op basis van de volgende Python-schrijf naar CSV-code.
from pandas import DataFrame C = {'Programming language': ['Python','Java', 'C++'], 'Designed by': ['Guido van Rossum', 'James Gosling', 'Bjarne Stroustrup'], 'Appeared': ['1991', '1995', '1985'], 'Extension': ['.py', '.java', '.cpp'], } df = DataFrame(C, columns= ['Programming language', 'Designed by', 'Appeared', 'Extension']) export_csv = df.to_csv (r'X:\pandaresult.csv', index = None, header=True) # here you have to write path, where result file will be stored print (df)
Hier is de uitvoer
Programming language, Designed by, Appeared, Extension 0 Python, Guido van Rossum, 1991, .py 1 Java, James Gosling, 1995, .java 2 C++, Bjarne Stroustrup,1983,.cpp
En het CSV-bestand wordt op de opgegeven locatie gemaakt.
Conclusie
Dus nu weet je hoe je methode 'csv' gebruikt en ook gegevens in CSV-indeling leest en schrijft. CSV-bestanden worden veel gebruikt in softwaretoepassingen omdat ze gemakkelijk te lezen en te beheren zijn en omdat ze door hun kleine formaat relatief snel kunnen worden verwerkt en verzonden.
De csv-module biedt verschillende functies en klassen waarmee u gemakkelijk kunt lezen en schrijven. Je kunt de officiële Python-documentatie bekijken en nog meer interessante tips en modules vinden. CSV is de beste manier om gegevens op te slaan, te bekijken en te verzenden. Eigenlijk is het niet zo moeilijk om te leren als het in het begin lijkt. Maar met een beetje oefening zul je het onder de knie krijgen.
Pandas is een geweldig alternatief om CSV-bestanden te lezen.
Er zijn ook andere manieren om tekstbestanden te ontleden met bibliotheken zoals ANTLR, PLY en PlyPlus. Ze kunnen allemaal zware parsing aan, en als eenvoudige String-manipulatie niet werkt, zijn er reguliere expressies die u kunt gebruiken.
Python
- Python-sleutelwoorden en -ID's
- Python-verklaring, inspringing en opmerkingen
- Python-variabelen, constanten en literalen
- Python Type Conversie en Type Casting
- Python invoer, uitvoer en import
- Python globale, lokale en niet-lokale variabelen
- Python-bestand I/O
- Python-directory en bestandsbeheer
- Python-fouten en ingebouwde uitzonderingen
- Hoe de huidige datum en tijd in Python te krijgen?
- Hoe RAM vanuit een bestand te initialiseren met TEXTIO