Hvordan lese CSV-fil i Python (Eksempler på modul, pandaer)
Hva er en CSV-fil?
A CSV-fil er en enkel type ren tekstfil som bruker en spesifikk struktur for å ordne tabelldata. Standardformatet til en CSV-fil er definert av rader og kolonnedata der en ny linje avslutter hver rad for å begynne neste rad, og hver kolonne er atskilt med et komma i raden.
CSV er et vanlig format for datautveksling da det er kompakt, enkelt og generelt. Mange nettjenester lar brukerne eksportere tabelldata fra nettstedet til en CSV-fil. CSV-filer åpnes i Excel, og nesten alle databaser har et verktøy for å tillate import fra CSV-filer.
CSV-eksempelfil
Data i form av tabeller kalles også CSV (kommaseparerte verdier) - bokstavelig talt "kommaseparerte verdier." Dette er et tekstformat beregnet for presentasjon av tabelldata. Hver linje i filen er én linje i tabellen. Verdiene til individuelle kolonner er atskilt med et skillesymbol – et komma (,), et semikolon (;) eller et annet symbol. CSV kan enkelt leses og behandles av Python.
Tenk på følgende tabell
Tabelldata
Programmeringsspråk | Designet av | Dukket opp | Extension |
---|---|---|---|
Python | Guido van Rossum | 1991 | .py |
Java | james goslin | 1995 | .Java |
C++ | Bjarne Stroustrup | 1983 | .cpp |
Du kan representere denne tabellen i csv som nedenfor.
CSV-data
Programmeringsspråk, designet av, dukket opp, utvidelse
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C++, Bjarne Stroustrup,1983,.cpp
Som du kan se er hver rad en ny linje, og hver kolonne er atskilt med komma. Dette er et eksempel på hvordan en CSV-fil ser ut.
Python CSV-modul
Python tilbyr en CSV-modul for å håndtere CSV-filer. For å lese/skrive data må du gå gjennom radene i CSV-filen. Du må bruke splittmetoden for å hente data fra spesifiserte kolonner.
CSV-modulfunksjoner
I CSV-moduldokumentasjonen kan du finne følgende funksjoner:
- csv.field_size_limit – returner maksimal feltstørrelse
- csv.get_dialect – få dialekten som er knyttet til navnet
- csv.list_dialects – vis alle registrerte dialekter
- csv.reader – les data fra en csv-fil
- csv.register_dialect – assosier dialekt med navn
- csv.writer – skriv data til en csv-fil
- csv.unregister_dialect – slett dialekten knyttet til navnet dialektregisteret
- csv.QUOTE_ALL – Sitat alt, uansett type.
- csv.QUOTE_MINIMAL – Sitatfelt med spesialtegn
- csv.QUOTE_NONNUMERIC – Oppgi alle felt som ikke er tallverdier
- csv.QUOTE_NONE – Ikke siter noe i utdata
I denne opplæringen skal vi kun fokusere på leser- og skrivefunksjonene som lar deg redigere, endre og manipulere dataene i en CSV-fil.
Hvordan lese en CSV-fil i Python
Nedenfor er trinn for å lese CSV-filen i Python.
Trinn 1) For å lese data fra CSV-filer må du bruke leserfunksjonen for å generere et leserobjekt.
Leserfunksjonen er utviklet for å ta hver rad i filen og lage en liste over alle kolonnene. Deretter må du velge kolonnen du vil ha variabeldata for.
Det høres mye mer intrikat ut enn det er. La oss ta en titt på dette Python kode for å lese CSV-fil, og vi vil finne ut at det ikke er så vanskelig å jobbe med csv-fil.
#import necessary modules import csv with open('X:\data.csv','rt')as f: data = csv.reader(f) for row in data: print(row)
Trinn 2) Når du kjører programmet ovenfor, vil utgangen være:
['Programming language; Designed by; Appeared; Extension'] ['Python; Guido van Rossum; 1991; .py'] ['Java; James Gosling; 1995; .java'] ['C++; Bjarne Stroustrup;1983;.cpp']
Hvordan lese en CSV-fil inn i en ordbok i Python
Du kan også bruke DictReader til å lese CSV-filer. Resultatene tolkes som en ordbok der overskriftsraden er nøkkelen, og andre rader er verdier.
Tenk på følgende kode
#import necessary modules import csv reader = csv.DictReader(open("file2.csv")) for raw in reader: print(raw)
Resultatet av denne koden 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åten å lese data fra CSV-fil er mye enklere enn tidligere metode. Dette er imidlertid ikke den beste måten å lese data på.
Hvordan skrive CSV-fil i Python
Slik skriver du inn en CSV-fil Python:
Når du har et sett med data som du ønsker å lagre i en CSV-fil, må du bruke writer()-funksjonen. For å iterere dataene over radene(linjene), må du bruke writerow()-funksjonen.
Tenk på følgende eksempel. Vi skriver data inn i en fil "writeData.csv" der skilletegnet er en apostrof.
#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'])
Resultatet i csv-filen er:
Programming language, Designed by, Appeared, Extension Python, Guido van Rossum, 1991, .py Java, James Gosling, 1995, .java C++, Bjarne Stroustrup,1983,.cpp
Les CSV-fil med Pandas
Pandas er et åpen kildekode-bibliotek som lar deg importere CSV inn Python og utføre datamanipulering. Pandaer gir en enkel måte å lage, manipulere og slette dataene på.
Du må installere pandas-biblioteket med kommandoen pip install pandas . I Windows, vil du utføre denne kommandoen i ledeteksten mens du er i Linux i terminalen.
Å lese CSV-en inn i en pandas DataFrame er veldig raskt og enkelt:
#import necessary modules import pandas result = pandas.read_csv('X:\data.csv') print(result)
Resultatet av les CSV Pandas eksempel:
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
Veldig nyttig bibliotek. På bare tre linjer med kode får du samme resultat som tidligere. Pandaer vet at den første linjen i CSV-en inneholdt kolonnenavn, og den vil bruke dem automatisk.
Skriv CSV-fil med Pandas
Å skrive til CSV-fil med Pandas er like enkelt som å lese. Her kan du overbevise i det. Først må du lage DataFrame basert på følgende Python skrive til CSV-kode.
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)
Her er utgangen
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
Og CSV-filen opprettes på det angitte stedet.
Konklusjon
Så nå vet du hvordan du bruker metoden 'csv' og også leser og skriver data i CSV-format. CSV-filer er mye brukt i programvareapplikasjoner fordi de er enkle å lese og administrere, og deres lille størrelse gjør dem relativt raske for behandling og overføring.
Csv-modulen gir ulike funksjoner og klasser som lar deg lese og skrive enkelt. Du kan se på den offisielle Python dokumentasjon og finn noen flere interessante tips og moduler. CSV er den beste måten å lagre, vise og sende data på. Faktisk er det ikke så vanskelig å lære som det ser ut til i begynnelsen. Men med litt øvelse vil du mestre det.
Pandas er et flott alternativ til å lese CSV-filer.
Det er også andre måter å analysere tekstfiler med biblioteker som ANTLR, PLY og PlyPlus. De kan alle håndtere heavy-duty parsing, og hvis enkel strengmanipulasjon ikke fungerer, er det regulære uttrykk du kan bruke.