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.

Last ned CSV-data

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')])

Les en CSV-fil inn i en ordbok

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

skriv inn CSV-fil Python

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.

Skriv CSV-fil med Pandas

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.