Citirea și scrierea fișierelor CSV în Python folosind modulul CSV & Panda

Cuprins:

Anonim

Ce este un fișier CSV?

Un fișier CSV este un tip de fișier text simplu care utilizează o structurare specifică pentru a aranja date tabulare. CSV este un format comun pentru schimbul de date, deoarece este compact, simplu și general. Multe servicii online permit utilizatorilor să exporte date tabulare de pe site într-un fișier CSV. Fișierele CSV se vor deschide în Excel și aproape toate bazele de date au un instrument care permite importul din fișierul CSV. Formatul standard este definit de date de rânduri și coloane. Mai mult, fiecare rând este terminat de o linie nouă pentru a începe rândul următor. De asemenea, în rând, fiecare coloană este separată printr-o virgulă.

În acest tutorial, veți învăța:

  • Ce este un fișier CSV?
  • Fișier eșantion CSV.
  • Modulul Python CSV
  • Funcții ale modulului CSV
  • Citirea fișierelor CSV
  • Citind ca dicționar
  • Scrierea în fișiere CSV
  • Citirea fișierelor CSV cu panda
  • Scrierea în fișiere CSV cu panda

Fișier eșantion CSV.

Datele sub formă de tabele se mai numesc și CSV (valori separate prin virgulă) - literalmente „valori separate prin virgulă”. Acesta este un format text destinat prezentării datelor tabulare. Fiecare linie a fișierului este o linie a tabelului. Valorile coloanelor individuale sunt separate printr-un simbol separator - o virgulă (,), un punct și virgulă (;) sau un alt simbol. CSV poate fi citit și procesat cu ușurință de Python.

Luați în considerare următorul Tabe

Date din tabel

Limbaj de programare Proiectat de A apărut Extensie
Piton Guido van Rossum 1991 .py
Java James Gosling 1995 .java
C ++ Bjarne Stroustrup 1983 .cpp

Puteți reprezenta acest tabel în CSV după cum urmează.

Date CSV

Limbaj de programare, Proiectat de, Aparut, Extensie

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C ++, Bjarne Stroustrup, 1983, .cpp

După cum puteți vedea, fiecare rând este o linie nouă și fiecare coloană este separată cu o virgulă. Acesta este un exemplu de cum arată un fișier CSV.

Descărcați date CSV

Modulul Python CSV

Python oferă un modul CSV pentru gestionarea fișierelor CSV. Pentru a citi / scrie date, trebuie să parcurgeți rândurile CSV. Trebuie să utilizați metoda de împărțire pentru a obține date din coloanele specificate.

Funcții ale modulului CSV

În documentația modulului CSV puteți găsi următoarele funcții:

  • csv.field_size_limit - returnează dimensiunea maximă a câmpului
  • csv.get_dialect - obțineți dialectul asociat cu numele
  • csv.list_dialects - afișează toate dialectele înregistrate
  • csv.reader - citiți datele dintr-un fișier csv
  • csv.register_dialect - asociați dialectul cu numele
  • csv.writer - scrie date într-un fișier csv
  • csv.unregister_dialect - ștergeți dialectul asociat cu numele registrului dialectului
  • csv.QUOTE_ALL - Citați totul, indiferent de tip.
  • csv.QUOTE_MINIMAL - Câmpuri de citat cu caractere speciale
  • csv.QUOTE_NONNUMERIC - Cotați toate câmpurile care nu au valoare numerică
  • csv.QUOTE_NONE - Nu citați nimic din ieșire

În acest tutorial, ne vom concentra numai pe funcțiile de citire și scriere care vă permit să editați, să modificați și să manipulați datele dintr-un fișier CSV.

Cum se citește un fișier CSV

Pentru a citi date din fișiere CSV, trebuie să utilizați funcția cititor pentru a genera un obiect cititor.

Funcția cititor este dezvoltată pentru a lua fiecare rând al fișierului și pentru a face o listă cu toate coloanele. Apoi, trebuie să alegeți coloana pentru care doriți datele variabile.

Sună mult mai complicat decât este. Să aruncăm o privire la acest exemplu și vom afla că lucrul cu fișierul CSV nu este atât de greu.

#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)

Când executați programul de mai sus, ieșirea va fi:

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

Cum se citește un CSV ca dicționar

De asemenea, puteți utiliza DictReader pentru a citi fișiere CSV. Rezultatele sunt interpretate ca un dicționar în care rândul de antet este cheia, iar alte rânduri sunt valori.

Luați în considerare următorul cod

#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)

Rezultatul acestui cod este:

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

Și acest mod de a citi datele din fișierul CSV este mult mai ușor decât metoda anterioară. Cu toate acestea, acesta nu este cel mai bun mod de a citi date.

Cum se scrie fișierul CSV

Când aveți un set de date pe care doriți să le stocați într-un fișier CSV, trebuie să utilizați funcția writer (). Pentru a itera datele peste rânduri (linii), trebuie să utilizați funcția writerow ().

Luați în considerare următorul exemplu. Scriem date într-un fișier „writeData.csv” în care delimitatorul este un apostrof.

#import necessary modulesimport csvwith open('X:\writeData.csv', mode='w') as file:writer = csv.writer(file, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)#way to write to csv filewriter.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'])

Rezultatul fișierului CSV este:

Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp

Citirea fișierelor CSV cu panda

Pandas este o bibliotecă open source care vă permite să efectuați manipularea datelor în Python. Pandele oferă o modalitate ușoară de a crea, manipula și șterge datele.

Trebuie să instalați biblioteca pandas cu comanda pip install pandas . În Windows, veți executa această comandă în linia de comandă în timp ce se află în Linux în terminal.

Citirea CSV într-un pandas DataFrame este foarte rapidă și ușoară:

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

Rezultat:

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp 

Biblioteca foarte utilă. În doar trei linii de cod aveți același rezultat ca mai devreme. Panda știe că prima linie a CSV conținea nume de coloane și le va folosi automat.

Scrierea în fișiere CSV cu panda

Scrierea în fișier CSV cu Pandas este la fel de ușoară ca citirea. Aici poți convinge în el. Mai întâi trebuie să creați DataFrame pe baza următorului cod.

from pandas import DataFrameC = {'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 storedprint (df)

Iată rezultatul

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp

Și fișierul CSV este creat la locația specificată.

Concluzie

Deci, acum știți cum utilizați metoda „csv” și, de asemenea, citiți și scrieți date în format CSV. Fișierele CSV sunt utilizate pe scară largă în aplicațiile software, deoarece sunt ușor de citit și de gestionat, iar dimensiunea redusă le face relativ rapide pentru procesare și transmisie.

Modulul CSV oferă diverse funcții și clase care vă permit să citiți și să scrieți cu ușurință. Puteți consulta documentația oficială Python și puteți găsi câteva sfaturi și module mai interesante. CSV este cel mai bun mod de a salva, vizualiza și trimite date. De fapt, nu este atât de greu de învățat pe cât pare la început. Dar, cu puțină practică, o vei stăpâni.

Pandas este o alternativă excelentă pentru a citi fișiere CSV.

De asemenea, există și alte modalități de a analiza fișierele text cu biblioteci precum ANTLR, PLY și PlyPlus. Toate pot face față analizei grele și, dacă manipularea simplă a șirurilor nu funcționează, există expresii regulate pe care le puteți folosi.