Što je CSV datoteka?
CSV datoteka je vrsta datoteke s običnim tekstom koja koristi specifično strukturiranje za organiziranje tabličnih podataka. CSV je uobičajeni format za razmjenu podataka jer je kompaktan, jednostavan i općenit. Mnoge mrežne usluge omogućavaju svojim korisnicima izvoz tabelarnih podataka s web mjesta u CSV datoteku. Datoteke CSV-a otvorit će se u programu Excel, a gotovo sve baze podataka imaju alat koji omogućuje uvoz iz CSV datoteke. Standardni format definiran je podacima redaka i stupaca. Štoviše, svaki redak završava se novom linijom za početak sljedećeg retka. Također unutar retka, svaki je stupac odvojen zarezom.
U ovom vodiču naučit ćete:
- Što je CSV datoteka?
- CSV datoteka uzorka.
- Python CSV modul
- Funkcije CSV modula
- Čitanje CSV datoteka
- Čitanje kao rječnik
- Zapisivanje u CSV datoteke
- Čitanje CSV datoteka s Pandama
- Pisanje u CSV datoteke s Pandama
CSV datoteka uzorka.
Podaci u obliku tablica nazivaju se i CSV (vrijednosti odvojene zarezom) - doslovno "vrijednosti odvojene zarezom". Ovo je tekstualni format namijenjen prezentaciji tabličnih podataka. Svaki redak datoteke jedan je redak tablice. Vrijednosti pojedinih stupaca odvojene su znakom za razdvajanje - zarezom (,), zarezom (;) ili drugim simbolom. Python može lako čitati i obrađivati CSV.
Razmotrite sljedeću tablicu
Podaci tablice
Programski jezik | Je dizajnirao | Pojavio se | Proširenje |
Piton | Guido van Rossum | 1991. godine | .py |
Java | James Gosling | 1995 | .Java |
C ++ | Bjarne Stroustrup | 1983. godine | .cpp |
Ovu tablicu možete predstaviti u CSV-u na sljedeći način.
CSV podaci
Programski jezik, dizajnirao, pojavio se, proširenje
Python, Guido van Rossum, 1991., .py
Java, James Gosling, 1995, .java
C ++, Bjarne Stroustrup, 1983, .cpp
Kao što vidite, svaki redak je novi redak, a svaki je stupac odvojen zarezom. Ovo je primjer kako izgleda CSV datoteka.
Preuzmite CSV podatke
Python CSV modul
Python nudi CSV modul za obradu CSV datoteka. Da biste čitali / pisali podatke, trebate petljati kroz redove CSV-a. Za dobivanje podataka iz navedenih stupaca morate koristiti metodu podjele.
Funkcije CSV modula
U dokumentaciji CSV modula možete pronaći sljedeće funkcije:
- csv.field_size_limit - vraća maksimalnu veličinu polja
- csv.get_dialect - dobivanje dijalekta koji je povezan s imenom
- csv.list_dialects - prikaži sve registrirane dijalekte
- csv.reader - čita podatke iz CSV datoteke
- csv.register_dialect - povezati dijalekt s imenom
- csv.writer - upisivanje podataka u csv datoteku
- csv.unregister_dialect - izbrišite dijalekt povezan s imenom registar dijalekata
- csv.QUOTE_ALL - citirajte sve, bez obzira na vrstu.
- csv.QUOTE_MINIMAL - Polja s posebnim znakovima
- csv.QUOTE_NONNUMERIC - Navedite sva polja koja nisu brojčana vrijednost
- csv.QUOTE_NONE - Ne navodite ništa u izlazu
U ovom uputstvu usredotočit ćemo se samo na funkcije čitača i pisanja koje vam omogućuju uređivanje, izmjenu i manipulaciju podacima u CSV datoteci.
Kako pročitati CSV datoteku
Da biste čitali podatke iz CSV datoteka, morate koristiti funkciju čitača za generiranje objekta čitača.
Funkcija čitača razvijena je tako da uzima svaki red datoteke i pravi popis svih stupaca. Zatim morate odabrati stupac za koji želite podatke varijable.
Zvuči puno zamršenije nego što jest. Pogledajmo ovaj primjer i saznat ćemo da rad s csv datotekom nije tako težak.
#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)
Kada izvršite gornji program, izlaz će biti:
['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']
Kako čitati CSV kao rječnik
DictReader također možete koristiti za čitanje CSV datoteka. Rezultati se tumače kao rječnik u kojem je zaglavni redak ključ, a ostali su retci vrijednosti.
Razmotrite sljedeći kod
#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)
Rezultat ovog koda 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')])
A ovaj način čitanja podataka iz CSV datoteke puno je lakši nego ranija metoda. Međutim, ovo nije najbolji način za čitanje podataka.
Kako napisati CSV datoteku
Kad imate skup podataka koje biste željeli pohraniti u CSV datoteku, morate koristiti funkciju Writer (). Da biste podatke ponavljali preko redaka (redaka), morate upotrijebiti funkciju writerow ().
Razmotrimo sljedeći primjer. Podatke zapisujemo u datoteku "writeData.csv" gdje je graničnik 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 u csv datoteci je:
Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp
Čitanje CSV datoteka s Pandama
Pandas je knjižnica otvorenog izvora koja vam omogućuje izvođenje manipulacije podacima u Pythonu. Pande pružaju jednostavan način stvaranja, manipulacije i brisanja podataka.
Morate instalirati biblioteku panda s naredbom pip install pandas
. U Windowsima ćete izvršiti ovu naredbu u naredbenom retku dok ste u Linuxu na terminalu.
Čitanje CSV-a u pandu DataFrame je vrlo brzo i jednostavno:
#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)
Proizlaziti:
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
Vrlo korisna biblioteka. U samo tri retka koda dobivate isti rezultat kao i ranije. Pande znaju da je prvi redak CSV-a sadržavao imena stupaca i automatski će ih koristiti.
Pisanje u CSV datoteke s Pandama
Pisanje u CSV datoteku s Pandasom jednostavno je kao i čitanje. Ovdje u to možete uvjeriti. Prvo morate stvoriti DataFrame na temelju sljedećeg koda.
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)
Evo rezultata
Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp
A CSV datoteka kreira se na navedenom mjestu.
Zaključak
Dakle, sada znate kako se koristi metoda 'csv', a također se čitaju i zapisuju podaci u CSV formatu. CSV datoteke široko se koriste u softverskim aplikacijama jer ih je lako čitati i njima upravljati, a zbog male veličine relativno su brze za obradu i prijenos.
CSV modul pruža razne funkcije i klase koje vam omogućuju jednostavno čitanje i pisanje. Možete pogledati službenu Python dokumentaciju i pronaći još zanimljivih savjeta i modula. CSV je najbolji način za spremanje, pregled i slanje podataka. Zapravo nije tako teško naučiti kako se čini na početku. Ali s malo vježbe, svladati ćete je.
Pandas je izvrsna alternativa za čitanje CSV datoteka.
Također, postoje i drugi načini raščlanjivanja tekstualnih datoteka s bibliotekama poput ANTLR, PLY i PlyPlus. Svi se oni mogu nositi s teškim raščlanjivanjem, a ako jednostavna manipulacija nizom ne uspije, postoje regularni izrazi koje možete koristiti.