Hur man läser CSV-fil i Python (Modul, Panda-exempel)

Vad är en CSV-fil?

A CSV-fil är en enkel typ av vanlig textfil som använder en specifik struktur för att ordna tabelldata. Standardformatet för en CSV-fil definieras av rader och kolumner där en ny rad avslutar varje rad för att börja nästa rad, och varje kolumn är separerad av ett kommatecken inom raden.

CSV är ett vanligt format för datautbyte eftersom det är kompakt, enkelt och generellt. Många onlinetjänster tillåter sina användare att exportera tabelldata från webbplatsen till en CSV-fil. CSV-filer öppnas i Excel, och nästan alla databaser har ett verktyg för att tillåta import från CSV-filer.

CSV-exempelfil

Data i form av tabeller kallas också CSV (kommaseparerade värden) - bokstavligen "kommaseparerade värden." Detta är ett textformat avsett för presentation av tabelldata. Varje rad i filen är en rad i tabellen. Värdena för enskilda kolumner separeras med en avgränsningssymbol – ett kommatecken (,), ett semikolon (;) eller en annan symbol. CSV kan enkelt läsas och bearbetas av Python.

Betrakta följande tabell

Tabelldata

Programmeringsspråk Designad av Dök upp Förlängning
Python Guido van Rossum 1991 .py
Java james goslin 1995 .Java
C++ Bjarne Stroustrup 1983 .cpp

Du kan representera denna tabell i csv enligt nedan.

CSV-data

Programmeringsspråk, Designed by, Appeared, Extension

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C++, Bjarne Stroustrup,1983,.cpp

Som du kan se är varje rad en ny rad, och varje kolumn är separerad med ett kommatecken. Det här är ett exempel på hur en CSV-fil ser ut.

Ladda ner CSV-data

Python CSV-modul

Python tillhandahåller en CSV-modul för att hantera CSV-filer. För att läsa/skriva data måste du gå igenom raderna i CSV-filen. Du måste använda splitmetoden för att få data från angivna kolumner.

CSV-modulfunktioner

I CSV-moduldokumentationen kan du hitta följande funktioner:

  • csv.field_size_limit – returnera maximal fältstorlek
  • csv.get_dialect – hämta dialekten som är associerad med namnet
  • csv.list_dialects – visa alla registrerade dialekter
  • csv.reader – läs data från en csv-fil
  • csv.register_dialect – associera dialekt med namn
  • csv.writer – skriv data till en csv-fil
  • csv.unregister_dialect – radera dialekten som är kopplad till namnet dialektregistret
  • csv.QUOTE_ALL – Citera allt, oavsett typ.
  • csv.QUOTE_MINIMAL – Citatfält med specialtecken
  • csv.QUOTE_NONNUMERIC – Citera alla fält som inte har siffror
  • csv.QUOTE_NONE – Citera inget i output

I den här handledningen kommer vi bara att fokusera på läs- och skrivarfunktionerna som låter dig redigera, modifiera och manipulera data i en CSV-fil.

Hur man läser en CSV-fil i Python

Nedan finns steg för att läsa CSV-filen i Python.

Steg 1) För att läsa data från CSV-filer måste du använda läsarfunktionen för att generera ett läsarobjekt.

Läsarfunktionen är utvecklad för att ta varje rad i filen och göra en lista över alla kolumner. Sedan måste du välja den kolumn du vill ha variabeldata för.

Det låter mycket mer intrikat än vad det är. Låt oss ta en titt på det här Python kod för att läsa CSV-fil, så kommer vi att ta reda på att det inte är så svårt att arbeta 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)

Steg 2) När du kör programmet ovan blir resultatet:

['Programming language; Designed by; Appeared; Extension']
['Python; Guido van Rossum; 1991; .py']
['Java; James Gosling; 1995; .java']
['C++; Bjarne Stroustrup;1983;.cpp']

Hur man läser en CSV-fil till en ordbok i Python

Du kan också använda DictReader för att läsa CSV-filer. Resultaten tolkas som en ordbok där rubrikraden är nyckeln och andra rader är värden.

Tänk på följande kod

#import necessary modules
import csv

reader = csv.DictReader(open("file2.csv"))
for raw in reader:
    print(raw)

Resultatet av denna kod är:

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 i en ordbok

Och det här sättet att läsa data från CSV-fil är mycket enklare än tidigare metod. Detta är dock inte det bästa sättet att läsa data.

Hur man skriver CSV-fil i Python

Så här skriver du in en CSV-fil Python:

När du har en uppsättning data som du vill lagra i en CSV-fil måste du använda writer()-funktionen. För att iterera data över rows(lines), måste du använda funktionen Writerow().

Betrakta följande exempel. Vi skriver data till filen "writeData.csv" där avgränsaren är 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 är:

Programming language, Designed by, Appeared, Extension 
Python, Guido van Rossum, 1991, .py
Java, James Gosling, 1995, .java
C++, Bjarne Stroustrup,1983,.cpp

skriv in CSV-fil Python

Läs CSV-fil med Pandas

Pandas är ett öppen källkodsbibliotek som låter dig importera CSV till Python och utföra datamanipulation. Pandas ger ett enkelt sätt att skapa, manipulera och radera data.

Du måste installera pandas bibliotek med kommandot pip install pandas . I Windows, kommer du att utföra detta kommando i kommandotolken medan du är i Linux i terminalen.

Att läsa in CSV i en pandas DataFrame är mycket snabbt och enkelt:

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

Resultatet av läs CSV Pandas exempel:

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

Mycket användbart bibliotek. På bara tre rader kod får du samma resultat som tidigare. Pandas vet att den första raden i CSV-filen innehöll kolumnnamn, och den kommer att använda dem automatiskt.

Skriv CSV-fil med Pandas

Att skriva till CSV-fil med Pandas är lika enkelt som att läsa. Här kan du övertyga i det. Först måste du skapa DataFrame baserat på följande Python skriva till CSV-kod.

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)

Här är utgången

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

Och CSV-filen skapas på den angivna platsen.

Skriv CSV-fil med Pandas

Slutsats

Så nu vet du hur du använder metoden "csv" och även läser och skriver data i CSV-format. CSV-filer används ofta i mjukvaruapplikationer eftersom de är lätta att läsa och hantera, och deras lilla storlek gör dem relativt snabba för bearbetning och överföring.

Csv-modulen tillhandahåller olika funktioner och klasser som gör att du enkelt kan läsa och skriva. Du kan titta på tjänstemannen Python dokumentation och hitta några fler intressanta tips och moduler. CSV är det bästa sättet att spara, visa och skicka data. Det är faktiskt inte så svårt att lära sig som det verkar i början. Men med lite övning kommer du att bemästra det.

Pandas är ett bra alternativ för att läsa CSV-filer.

Det finns också andra sätt att analysera textfiler med bibliotek som ANTLR, PLY och PlyPlus. De kan alla hantera tung analys, och om enkel strängmanipulation inte fungerar finns det reguljära uttryck som du kan använda.