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