Branje in pisanje datotek CSV v Pythonu z uporabo modula CSV & Pande

Kazalo:

Anonim

Kaj je datoteka CSV?

Datoteka CSV je vrsta navadne besedilne datoteke, ki uporablja posebno strukturiranje za razporeditev tabelarnih podatkov. CSV je pogosta oblika izmenjave podatkov, saj je kompaktna, enostavna in splošna. Številne spletne storitve omogočajo uporabnikom, da tabelarne podatke s spletnega mesta izvozijo v datoteko CSV. Datoteke CSV se bodo odprle v Excelu in skoraj vse zbirke podatkov imajo orodje, ki omogoča uvoz iz datoteke CSV. Standardna oblika je določena s podatki vrstic in stolpcev. Poleg tega se vsaka vrstica zaključi z novo vrstico, da začne naslednjo vrstico. Tudi znotraj vrstice je vsak stolpec ločen z vejico.

V tej vadnici boste izvedeli:

  • Kaj je datoteka CSV?
  • Vzorčna datoteka CSV.
  • Python CSV modul
  • Funkcije modula CSV
  • Branje datotek CSV
  • Branje kot slovar
  • Pisanje v datoteke CSV
  • Branje datotek CSV s Pandami
  • Pisanje v datoteke CSV s Pandami

Vzorčna datoteka CSV.

Podatki v obliki tabel se imenujejo tudi CSV (vrednosti, ločene z vejico) - dobesedno "vrednosti, ločene z vejico." To je besedilna oblika, namenjena predstavitvi tabelarnih podatkov. Vsaka vrstica datoteke je ena vrstica tabele. Vrednosti posameznih stolpcev so ločene z ločilnim simbolom - vejico (,), podpičjem (;) ali drugim simbolom. CSV lahko Python zlahka prebere in obdela.

Razmislite o naslednjem zavihku

Podatki v tabeli

Programski jezik Oblikovano od Pojavil se je Podaljšanje
Python Guido van Rossum 1991 .py
Java James Gosling 1995 .java
C ++ Bjarne Stroustrup 1983 .cpp

To tabelo lahko predstavite v CSV, kot spodaj.

Podatki CSV

Programski jezik, Oblikoval, Nastopil, Razširitev

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C ++, Bjarne Stroustrup, 1983, .cpp

Kot lahko vidite, je vsaka vrstica nova vrstica in vsak stolpec je ločen z vejico. To je primer, kako izgleda datoteka CSV.

Prenesite podatke CSV

Python CSV modul

Python ponuja modul CSV za obdelavo datotek CSV. Če želite brati / zapisovati podatke, morate prečkati vrstice CSV. Za pridobivanje podatkov iz določenih stolpcev morate uporabiti metodo split.

Funkcije modula CSV

V dokumentaciji modula CSV najdete naslednje funkcije:

  • csv.field_size_limit - vrne največjo velikost polja
  • csv.get_dialect - pridobite narečje, ki je povezano z imenom
  • csv.list_dialects - prikaži vsa registrirana narečja
  • csv.reader - branje podatkov iz datoteke csv
  • csv.register_dialect - povežite narečje z imenom
  • csv.writer - zapiši podatke v datoteko csv
  • csv.unregister_dialect - izbrišite narečje, povezano z imenom register narečja
  • csv.QUOTE_ALL - Navedite vse, ne glede na vrsto.
  • csv.QUOTE_MINIMAL - Navedite polja s posebnimi znaki
  • csv.QUOTE_NONNUMERIC - Navedite vsa polja, ki niso številčna vrednost
  • csv.QUOTE_NONE - V izhodu ne navajajte ničesar

V tej vadnici se bomo osredotočili le na funkcije bralca in zapisovalnika, ki vam omogočajo urejanje, spreminjanje in obdelavo podatkov v datoteki CSV.

Kako prebrati datoteko CSV

Če želite brati podatke iz datotek CSV, morate s funkcijo bralnika ustvariti bralni objekt.

Funkcija bralnika je razvita tako, da zajema vsako vrstico datoteke in sestavi seznam vseh stolpcev. Nato morate izbrati stolpec, za katerega želite spremenljive podatke.

Sliši se veliko bolj zapleteno, kot je. Oglejmo si ta primer in ugotovili bomo, da delo z datoteko csv ni tako težko.

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

Ko zaženete zgornji program, bo rezultat:

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

Kako brati CSV kot slovar

DictReader lahko uporabljate tudi za branje datotek CSV. Rezultati se razlagajo kot slovar, pri katerem je vrstica z glavo ključ, druge vrstice pa so vrednosti.

Upoštevajte naslednjo kodo

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

Rezultat te kode je:

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

In ta način branja podatkov iz datoteke CSV je veliko lažji kot prejšnja metoda. Vendar to ni najboljši način za branje podatkov.

Kako napisati datoteko CSV

Ko imate nabor podatkov, ki jih želite shraniti v datoteko CSV, morate uporabiti funkcijo zapisovalnika (). Če želite podatke iti skozi vrstice (vrstice), morate uporabiti funkcijo writerow ().

Razmislite o naslednjem primeru. Podatke zapišemo v datoteko "writeData.csv", kjer je ločilo 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'])

Rezultat v datoteki CSV je:

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

Branje datotek CSV s Pandami

Pandas je knjižnica odprtega vira, ki vam omogoča izvajanje manipulacije s podatki v Pythonu. Pande ponujajo preprost način za ustvarjanje, upravljanje in brisanje podatkov.

Knjižnico pand morate namestiti z ukazom pip install pandas . V operacijskem sistemu Windows boste ta ukaz izvedli v ukaznem pozivu, medtem ko v Linuxu na terminalu.

Branje CSV-ja v pando DataFrame je zelo hitro in enostavno:

#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 

Zelo uporabna knjižnica. V samo treh vrsticah kode dobite enak rezultat kot prej. Pande vedo, da je prva vrstica CSV vsebovala imena stolpcev, in jih bo uporabil samodejno.

Pisanje v datoteke CSV s Pandami

Zapisovanje v datoteko CSV s Pandas je tako enostavno kot branje. Tu lahko v to prepričate. Najprej morate ustvariti DataFrame na podlagi naslednje kode.

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)

Tukaj je rezultat

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

Datoteka CSV se ustvari na določenem mestu.

Zaključek

Torej, zdaj veste, kako uporabljate metodo 'csv' in tudi berete in zapisujete podatke v obliki CSV. Datoteke CSV se pogosto uporabljajo v programskih aplikacijah, ker jih je enostavno brati in upravljati, zaradi majhnosti pa so razmeroma hitre za obdelavo in prenos.

Modul csv ponuja različne funkcije in razrede, ki vam omogočajo enostavno branje in pisanje. Ogledate si lahko uradno dokumentacijo Pythona in najdete še nekaj zanimivih nasvetov in modulov. CSV je najboljši način za shranjevanje, ogled in pošiljanje podatkov. Pravzaprav se ni tako težko naučiti, kot se zdi na začetku. A z malo vaje jo boste obvladali.

Pandas je odlična alternativa za branje datotek CSV.

Obstajajo tudi drugi načini za razčlenitev besedilnih datotek s knjižnicami, kot so ANTLR, PLY in PlyPlus. Vsi se lahko spopadejo s težkim razčlenjevanjem in če preprosta manipulacija z nizom ne deluje, lahko uporabite regularne izraze.