Hvad er en CSV-fil?
En CSV-fil er en type almindelig tekstfil, der bruger specifik strukturering til at arrangere tabeldata. CSV er et almindeligt format til dataudveksling, da det er kompakt, simpelt og generelt. Mange onlinetjenester giver brugerne mulighed for at eksportere tabeldata fra webstedet til en CSV-fil. CSV-filer åbnes i Excel, og næsten alle databaser har et værktøj til at tillade import fra CSV-fil. Standardformatet er defineret af rækker og kolonnedata. Desuden afsluttes hver række af en ny linje for at begynde den næste række. Også inden for rækken er hver kolonne adskilt med et komma.
I denne vejledning lærer du:
- Hvad er en CSV-fil?
- CSV-prøvefil.
- Python CSV-modul
- CSV-modulfunktioner
- Læsning af CSV-filer
- Læsning som ordbog
- Skrivning til CSV-filer
- Læsning af CSV-filer med pandaer
- Skrivning til CSV-filer med pandaer
CSV-prøvefil.
Data i form af tabeller kaldes også CSV (komma-adskilte værdier) - bogstaveligt talt "komma-adskilte værdier." Dette er et tekstformat beregnet til præsentation af tabeldata. Hver linje i filen er en linje i tabellen. Værdierne for de enkelte kolonner er adskilt af et separatorsymbol - et komma (,), et semikolon (;) eller et andet symbol. CSV kan let læses og behandles af Python.
Overvej følgende Tabe
Tabeldata
Programmeringssprog | Designet af | Dukkede op | Udvidelse |
Python | Guido van Rossum | 1991 | .py |
Java | James Gosling | 1995 | .java |
C ++ | Bjarne Stroustrup | 1983 | .cpp |
Du kan repræsentere denne tabel i csv som nedenfor.
CSV-data
Programmeringssprog, Designet af, Udseende, Udvidelse
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C ++, Bjarne Stroustrup, 1983, .cpp
Som du kan se, er hver række en ny linje, og hver kolonne er adskilt med et komma. Dette er et eksempel på, hvordan en CSV-fil ser ud.
Download CSV-data
Python CSV-modul
Python leverer et CSV-modul til håndtering af CSV-filer. For at læse / skrive data skal du løkke gennem rækker af CSV. Du skal bruge splitmetoden til at hente data fra specificerede kolonner.
CSV-modulfunktioner
I CSV-moduldokumentation kan du finde følgende funktioner:
- csv.field_size_limit - returner maksimal feltstørrelse
- csv.get_dialect - få den dialekt, der er knyttet til navnet
- csv.list_dialects - vis alle registrerede dialekter
- csv.reader - læs data fra en csv-fil
- csv.register_dialect - knyt dialekt til navn
- csv.writer - skriv data til en csv-fil
- csv.unregister_dialect - slet den dialekt, der er knyttet til navnet dialektregistret
- csv.QUOTE_ALL - Citér alt, uanset type.
- csv.QUOTE_MINIMAL - Citatfelter med specialtegn
- csv.QUOTE_NONNUMERIC - Citér alle felter, der ikke er talværdi
- csv.QUOTE_NONE - Citér ikke noget i output
I denne vejledning vil vi kun fokusere på læser- og forfatterfunktionerne, som giver dig mulighed for at redigere, ændre og manipulere dataene i en CSV-fil.
Sådan læses en CSV-fil
For at læse data fra CSV-filer skal du bruge læserfunktionen til at generere et læserobjekt.
Læserfunktionen er udviklet til at tage hver række i filen og oprette en liste over alle kolonner. Derefter skal du vælge den kolonne, du vil have de variable data til.
Det lyder meget mere indviklet, end det er. Lad os se på dette eksempel, og vi finder ud af, at arbejde med csv-fil ikke er så svært.
#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)
Når du udfører programmet ovenfor, vil output være:
['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']
Sådan læses en CSV som ordbog
Du kan også bruge DictReader til at læse CSV-filer. Resultaterne fortolkes som en ordbog, hvor overskriftsrækken er nøglen, og andre rækker er værdier.
Overvej følgende kode
#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)
Resultatet af denne kode er:
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')])
Og denne måde at læse data fra CSV-fil på er meget lettere end tidligere metode. Dette er dog ikke den bedste måde at læse data på.
Hvordan man skriver CSV-fil
Når du har et datasæt, som du gerne vil gemme i en CSV-fil, skal du bruge forfatter () -funktionen. For at gentage dataene over rækkerne (linjer) skal du bruge funktionenwrow ().
Overvej følgende eksempel. Vi skriver data i en fil "writeData.csv", hvor afgrænsningen er en apostrof.
#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'])
Resultat i csv-fil er:
Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp
Læsning af CSV-filer med pandaer
Pandas er et opensource-bibliotek, der giver dig mulighed for at udføre datamanipulation i Python. Pandaer giver en nem måde at oprette, manipulere og slette dataene på.
Du skal installere pandasbiblioteket med kommandoen pip install pandas
. I windows udfører du denne kommando i kommandoprompt, mens du er i Linux i terminalen.
At læse CSV i en panda DataFrame er meget hurtig og nem:
#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)
Resultat:
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
Meget nyttigt bibliotek. På bare tre linier kode får du det samme resultat som tidligere. Pandaer ved, at den første linje i CSV indeholdt kolonnenavne, og den vil bruge dem automatisk.
Skrivning til CSV-filer med pandaer
At skrive til CSV-fil med Pandas er lige så let som at læse. Her kan du overbevise i det. Først skal du oprette DataFrame baseret på følgende kode.
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)
Her er output
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
Og CSV-filen oprettes på den angivne placering.
Konklusion
Så nu ved du, hvordan du bruger metoden 'csv' og også læser og skriver data i CSV-format. CSV-filer bruges i vid udstrækning i softwareapplikationer, fordi de er nemme at læse og administrere, og deres lille størrelse gør dem relativt hurtige til behandling og transmission.
Csv-modulet indeholder forskellige funktioner og klasser, som giver dig mulighed for let at læse og skrive. Du kan se på den officielle Python-dokumentation og finde nogle flere interessante tip og moduler. CSV er den bedste måde at gemme, se og sende data på. Faktisk er det ikke så svært at lære, som det ser ud til i starten. Men med lidt øvelse vil du mestre det.
Pandas er et godt alternativ til at læse CSV-filer.
Der er også andre måder at analysere tekstfiler med biblioteker som ANTLR, PLY og PlyPlus. De kan alle håndtere kraftig parsing, og hvis simpel strengmanipulation ikke virker, er der regelmæssige udtryk, som du kan bruge.