Wat is een CSV-bestand?
Een CSV-bestand is een type bestand met platte tekst dat een specifieke structuur gebruikt om tabelgegevens te rangschikken. CSV is een veelgebruikt formaat voor gegevensuitwisseling omdat het compact, eenvoudig en algemeen is. Bij veel online services kunnen gebruikers tabelgegevens van de website exporteren naar een CSV-bestand. CSV-bestanden worden geopend in Excel en bijna alle databases hebben een tool waarmee u vanuit een CSV-bestand kunt importeren. Het standaardformaat wordt bepaald door gegevens van rijen en kolommen. Bovendien wordt elke rij beëindigd door een nieuwe regel om met de volgende rij te beginnen. Ook binnen de rij wordt elke kolom gescheiden door een komma.
In deze tutorial leer je:
- Wat is een CSV-bestand?
- CSV-voorbeeldbestand.
- Python CSV-module
- CSV-modulefuncties
- CSV-bestanden lezen
- Lezen als een woordenboek
- Schrijven naar CSV-bestanden
- CSV-bestanden lezen met Panda's
- Schrijven naar CSV-bestanden met Panda's
CSV-voorbeeldbestand.
Gegevens in de vorm van tabellen worden ook wel CSV (door komma's gescheiden waarden) genoemd, letterlijk 'door komma's gescheiden waarden'. Dit is een tekstformaat bedoeld 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.
Beschouw de volgende Tabe
Tabelgegevens
Programmeertaal | Ontworpen door | Verscheen | Uitbreiding |
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, Verschenen, 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.
Download CSV-gegevens
Python CSV-module
Python biedt een CSV-module om CSV-bestanden af te handelen. Om gegevens te lezen / schrijven, moet u rijen van de CSV doorlopen. U moet de splitsingsmethode gebruiken om gegevens uit gespecificeerde kolommen op te halen.
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 aan de naam is gekoppeld
- 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 dat is gekoppeld aan de naam van het dialectregister
- csv.QUOTE_ALL - Citeer alles, ongeacht het type.
- csv.QUOTE_MINIMAL - Citeer velden met speciale tekens
- csv.QUOTE_NONNUMERIC - Citeer alle velden die geen getallen zijn
- csv.QUOTE_NONE - Citeer niets in de uitvoer
In deze zelfstudie gaan we ons alleen richten op de lezer- en schrijffuncties waarmee u de gegevens in een CSV-bestand kunt bewerken, wijzigen en manipuleren.
Hoe een CSV-bestand te lezen
Om gegevens uit CSV-bestanden te lezen, moet u de lezerfunctie gebruiken om een lezerobject te genereren.
De lezerfunctie 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.
Het klinkt veel ingewikkelder dan het is. Laten we dit voorbeeld eens bekijken, en we zullen ontdekken dat het werken met csv-bestanden niet zo moeilijk is.
#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)
Als je het bovenstaande programma uitvoert, zal de output zijn:
['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']
Hoe u een CSV als woordenboek kunt lezen
U kunt ook DictReader gebruiken om CSV-bestanden te lezen. De resultaten worden geïnterpreteerd als een woordenboek waarbij de koprij de sleutel is en andere rijen waarden.
Beschouw de volgende code
#import necessary modulesimport csvreader = 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 csv-bestand te schrijven
Als u een set gegevens heeft die u in een CSV-bestand wilt opslaan, moet u de functie writer () gebruiken. Om de gegevens over de rijen (regels) te herhalen, moet u de functie writerow () gebruiken.
Beschouw het volgende voorbeeld eens. We schrijven gegevens naar een bestand "writeData.csv" waar het scheidingsteken een apostrof is.
#import necessary modulesimport csvwith open('X:\writeData.csv', mode='w') as file:writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)#way to write to csv filewriter.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, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp
CSV-bestanden lezen met Panda's
Pandas is een opensource-bibliotheek waarmee u gegevensmanipulatie in Python kunt uitvoeren. Panda's bieden een gemakkelijke manier om de gegevens te maken, te manipuleren en te verwijderen.
U moet de panda's-bibliotheek installeren met het commando pip panda's installeren
. In Windows voert u deze opdracht uit in de opdrachtprompt terwijl u zich in Linux in de terminal bevindt.
Het inlezen van de CSV in een panda's DataFrame is erg snel en gemakkelijk:
#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)
Resultaat:
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
Zeer nuttige bibliotheek. In slechts drie regels code heb je hetzelfde resultaat als eerder. Panda's weten dat de eerste regel van de CSV kolomnamen bevatte, en deze worden automatisch gebruikt.
Schrijven naar CSV-bestanden met Panda's
Schrijven naar CSV-bestand met Panda's is net zo eenvoudig als lezen. Hier kun je erin overtuigen. Eerst moet u DataFrame maken op basis van de volgende code.
from pandas import DataFrameC = {'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 storedprint (df)
Hier is de output
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
En CSV-bestand wordt gemaakt op de opgegeven locatie.
Gevolgtrekking
Dus nu weet u hoe u de methode 'csv' gebruikt en ook gegevens leest en schrijft in CSV-indeling. 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.
Panda's is een geweldig alternatief om CSV-bestanden te lezen.
Er zijn ook andere manieren om tekstbestanden te parseren met bibliotheken zoals ANTLR, PLY en PlyPlus. Ze kunnen allemaal zware parsing aan, en als eenvoudige stringmanipulatie niet werkt, zijn er reguliere expressies die u kunt gebruiken.