Sådan læser du CSV-fil Python (Eksempler på modul, pandaer)

Hvad er en CSV-fil?

A CSV-fil er en simpel type almindelig tekstfil, som bruger en specifik struktur til at arrangere tabeldata. Standardformatet for en CSV-fil er defineret af rækker og kolonnedata, hvor en ny linje afslutter hver række for at begynde den næste række, og hver kolonne er adskilt af et komma i rækken.

CSV er et almindeligt format til dataudveksling, da det er kompakt, enkelt og generelt. Mange onlinetjenester giver deres brugere 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-filer.

CSV-eksempelfil

Data i form af tabeller kaldes også CSV (kommaseparerede værdier) - bogstaveligt talt "kommaseparerede værdier." Dette er et tekstformat beregnet til præsentation af tabeldata. Hver linje i filen er en linje i tabellen. Værdierne for individuelle kolonner er adskilt af et separatorsymbol – et komma (,), et semikolon (;) eller et andet symbol. CSV kan nemt læses og behandles af Python.

Overvej følgende tabel

Tabel data

Programmeringssprog Designet af Dukkede op Extension
Python Guido van Rossum 1991 .py
Java james goslin 1995 .Java
C++ Bjarne Stroustrup 1983 .cpp

Du kan repræsentere denne tabel i csv som nedenfor.

CSV-data

Programmeringssprog, Designet af, Optrådt, 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 giver et CSV-modul til at håndtere CSV-filer. For at læse/skrive data skal du gå gennem rækker af CSV'en. Du skal bruge opdelingsmetoden for at få data fra specificerede kolonner.

CSV-modulfunktioner

I CSV-moduldokumentationen kan du finde følgende funktioner:

  • csv.field_size_limit – returner maksimal feltstørrelse
  • csv.get_dialect – få den dialekt, der er forbundet med navnet
  • csv.list_dialects – vis alle registrerede dialekter
  • csv.reader – læs data fra en csv-fil
  • csv.register_dialect – tilknyt dialekt med navn
  • csv.writer – skriv data til en csv-fil
  • csv.unregister_dialect – slet den dialekt, der er knyttet til navnet dialektregistret
  • csv.QUOTE_ALL – Citer alt, uanset type.
  • csv.QUOTE_MINIMAL – Citatfelter med specialtegn
  • csv.QUOTE_NONNUMERIC – Citér alle felter, der ikke er talværdier
  • csv.QUOTE_NONE – Citér ikke noget i output

I denne vejledning vil vi kun fokusere på læse- og skrivefunktionerne, som giver dig mulighed for at redigere, ændre og manipulere dataene i en CSV-fil.

Sådan læser du en CSV-fil i Python

Nedenfor er trin til at læse CSV-fil i Python.

Trin 1) For at læse data fra CSV-filer skal du bruge læsefunktionen til at generere et læseobjekt.

Læserfunktionen er udviklet til at tage hver række i filen og lave en liste over alle kolonner. Derefter skal du vælge den kolonne, du vil have variable data til.

Det lyder meget mere indviklet, end det er. Lad os tage et kig på dette Python kode for at læse CSV-fil, og vi vil finde ud af, at det ikke er så svært at arbejde 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)

Trin 2) Når du udfører programmet ovenfor, vil outputtet 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æser du en CSV-fil ind i en ordbog i Python

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 modules
import csv

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

Læs en CSV-fil ind i en ordbog

Og denne måde at læse data fra CSV-fil er meget nemmere end tidligere metode. Dette er dog ikke den bedste måde at læse data på.

Sådan skriver du en CSV-fil Python

Sådan skriver du en CSV-fil ind Python:

Når du har et sæt data, som du gerne vil gemme i en CSV-fil, skal du bruge writer()-funktionen. For at iterere dataene over rækkerne(linjerne), skal du bruge funktionen writerow().

Overvej følgende eksempel. Vi skriver data ind i en fil "writeData.csv", hvor afgrænseren 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 CSV-fil ind Python

Læs CSV-fil ved hjælp af Pandas

Pandas er et opensource-bibliotek, der giver dig mulighed for at importere CSV ind Python og udføre datamanipulation. Pandaer giver en nem måde at oprette, manipulere og slette dataene på.

Du skal installere pandas-biblioteket med kommandoen pip install pandas . I Windows, vil du udføre denne kommando i kommandoprompt, mens du er i Linux i terminalen.

At læse CSV'en ind i en pandas DataFrame er meget hurtigt og nemt:

#import necessary modules
import pandas
result = pandas.read_csv('X:\data.csv')
print(result)

Resultatet af læs 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

Meget nyttigt bibliotek. På kun tre linjer kode får du det samme resultat som tidligere. Pandaer ved, at den første linje i CSV'en indeholdt kolonnenavne, og den vil bruge dem automatisk.

Skriv CSV-fil ved hjælp af Pandas

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 Python skriv 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 outputtet

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 oprettes på den angivne placering.

Skriv CSV-fil ved hjælp af Pandas

Konklusion

Så nu ved du, hvordan du bruger metoden 'csv' og også læser og skriver data i CSV-format. CSV-filer er meget udbredt 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 gør det nemt at læse og skrive. Du kan se på embedsmanden Python dokumentation og find nogle flere interessante tips 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 begyndelsen. 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 parse tekstfiler med biblioteker som ANTLR, PLY og PlyPlus. De kan alle håndtere heavy-duty parsing, og hvis simpel String-manipulation ikke virker, er der regulære udtryk, som du kan bruge.