Piton

Kako se rukuje CSV datotekama u Pythonu

Kako se rukuje CSV datotekama u Pythonu
Ovaj će članak obuhvatiti vodič za rukovanje "csv" datotekama pomoću Pythona. Izraz "csv" označava "vrijednosti odvojene zarezom", gdje svaki redak ili redak sadrži vrijednosti temeljene na tekstu odijeljene zarezima. U nekim se slučajevima za razdvajanje vrijednosti koristi i "zarez" umjesto "zarez". Međutim, to nema velike razlike u pravilima formata datoteka, a logika za rukovanje obje vrste separatora ostaje ista.

CSV format datoteke najčešće se koristi za održavanje baza podataka i proračunskih tablica. Prvi redak u CSV datoteci najčešće se koristi za definiranje polja stupaca, dok se bilo koji drugi preostali redak smatra retkom. Ova struktura omogućuje korisnicima predstavljanje tabličnih podataka pomoću CSV datoteka. CSV datoteke mogu se uređivati ​​u bilo kojem uređivaču teksta. Međutim, aplikacije poput LibreOffice Calc nude napredne alate za uređivanje, sortiranje i filtriranje.

Čitanje podataka iz CSV datoteka pomoću Pythona

CSV modul u Pythonu omogućuje vam čitanje, pisanje i manipulaciju bilo kojim podacima pohranjenim u CSV datotekama. Da biste pročitali CSV datoteku, morat ćete upotrijebiti metodu "čitača" iz Pythonova modula "csv" koji je uključen u Pythonovu standardnu ​​knjižnicu.

Uzmite u obzir da imate CSV datoteku koja sadrži sljedeće podatke:

Mango, banana, jabuka, naranča
50,70,30,90

Prvi red datoteke definira svaku kategoriju stupca, u ovom slučaju naziv voća. Drugi redak čuva vrijednosti ispod svakog stupca (zaliha u ruci). Sve ove vrijednosti odvojene su zarezom. Ako biste ovu datoteku otvorili u aplikaciji za proračunske tablice poput LibreOffice Calc, izgledala bi ovako:

Sada čitati vrijednosti iz „voća.csv ”pomoću Pythonova modula“ csv ”, trebat ćete koristiti metodu“ čitača ”u sljedećem formatu:

uvoz csv
s otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.čitač (datoteka)
za redak u čitaču podataka:
ispis (redak)

Prvi redak u gornjem uzorku uvozi modul "csv". Dalje, izjava “s otvorenim” koristi se za sigurno otvaranje datoteke pohranjene na vašem tvrdom disku (“voće.csv ”u ovom slučaju). Novi objekt "data_reader" stvara se pozivanjem metode "čitač" iz modula "csv". Ova metoda "čitača" uzima naziv datoteke kao obvezni argument, pa referenca na "voće.csv ”mu se prenosi. Zatim se pokreće naredba petlje „for“ za ispis svakog retka iz „plodova“.csv ”datoteku. Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:

['50', '70', '30', '90']

Ako želite dodijeliti brojeve redaka izlazu, možete upotrijebiti funkciju "enumerate" koja svakoj stavci u iteralu dodjeljuje broj (počevši od 0, ako se ne promijeni).

uvoz csv
s otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.čitač (datoteka)
za indeks, redak u nabrajanju (data_reader):
ispis (indeks, redak)

Varijabla "indeks" zadržava broj za svaki element. Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:

0 ['Mango', 'Banana', 'Jabuka', 'Naranča']
1 ['50', '70', '30', '90']

Budući da prvi redak u datoteci "csv" obično sadrži naslove stupaca, za izdvajanje ovih naslova možete koristiti funkciju "enumerate":

uvoz csv
s otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.čitač (datoteka)
za indeks, redak u nabrajanju (čitač podataka):
ako je indeks == 0:
naslovi = redak
ispis (naslovi)

Blok „ako“ u gornjoj izjavi provjerava je li indeks jednak nuli (prvi redak u „plodovima.CSV datoteka). Ako je odgovor da, tada je vrijednost varijable "line" dodijeljena novoj varijabli "headings". Nakon pokretanja gornjeg uzorka koda trebali biste dobiti sljedeći izlaz:

['Mango', 'Banana', 'Jabuka', 'Naranča']

Imajte na umu da prilikom pozivanja „csv.čitač ”metodom pomoću neobaveznog argumenta„ graničnik ”u sljedećem formatu:

uvoz csv
s otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.čitač (datoteka, graničnik = ";")
za redak u čitaču podataka:
ispis (redak)

Budući da je u csv datoteci svaki stupac povezan s vrijednostima u redu, možda ćete htjeti stvoriti Python "rječnik" objekt prilikom čitanja podataka iz "csv" datoteke. Da biste to učinili, trebate koristiti metodu "DictReader", kao što je prikazano u donjem kodu:

uvoz csv
s otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.DictReader (datoteka)
za redak u čitaču podataka:
ispis (redak)

Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:

'Mango': '50', 'Banana': '70', 'Jabuka': '30', 'Naranča': '90'

Dakle, sada imate objekt rječnika koji povezuje pojedinačne stupce s odgovarajućim vrijednostima u redovima. Ovo dobro funkcionira ako imate samo jedan redak. Pretpostavimo da „plodovi.csv ”datoteka sada uključuje dodatni redak koji određuje koliko će dana trebati da zaliha voća propadne.

Mango, banana, jabuka, naranča
50,70,30,90
3,1,6,4

Kada imate više redaka, izvođenje istog gornjeg uzorka koda rezultirat će različitim rezultatima.

'Mango': '50', 'Banana': '70', 'Jabuka': '30', 'Narančasta': '90'
'Mango': '3', 'Banana': '1', 'Jabuka': '6', 'Narančasta': '4'

To možda nije idealno jer biste mogli preslikati sve vrijednosti koje se odnose na jedan stupac u jedan par ključ / vrijednost u rječniku Python. Isprobajte ovaj uzorak koda:

uvoz csv
s otvorenim ("voće.csv ") kao datoteka:
čitač podataka = csv.DictReader (datoteka)
data_dict =
za redak u čitaču podataka:
za ključ, vrijednost u retku.stavke ():
data_dict.setdefault (tipka, [])
data_dict [ključ].dodati (vrijednost)
ispis (data_dict)

Nakon pokretanja gore spomenutog uzorka koda, trebali biste dobiti sljedeći izlaz:

'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Orange': ['90 ',' 4 ']

Petlja "za" koristi se na svakom elementu objekta "DictReader" za petlju preko parova ključ / vrijednost. Prije toga definirana je nova varijabla Python rječnika "data_dict". Pohranit će konačna preslikavanja podataka. Ispod drugog bloka petlje "for" koristi se metoda "setdefault" rječnika Python. Ova metoda dodjeljuje vrijednost ključu rječnika. Ako par ključ / vrijednost ne postoji, iz navedenih argumenata kreira se novi. Dakle, u ovom će se slučaju ključu dodijeliti novi prazan popis ako već ne postoji. Na kraju, "vrijednost" se dodaje odgovarajućem ključu u konačnom objektu "data_dict".

Zapisivanje podataka u CSV datoteku

Da biste upisali podatke u datoteku „csv“, morat ćete upotrijebiti metodu „pisača“ iz modula „csv“. Primjer u nastavku dodati će novi redak postojećim „plodovima.csv ”datoteku.

uvoz csv
s otvorenim ("voće.csv "," a ") kao datoteka:
data_writer = csv.pisac (datoteka)
data_writer.pisanje ([3,1,6,4])

Prva izjava otvara datoteku u načinu "dodavanje", označeno argumentom "a". Dalje se naziva metoda "pisac" i referenca na "voće.csv ”mu se predaje kao argument. Metoda "writerow" zapisuje ili dodaje novi redak u datoteku.

Ako želite pretvoriti Python rječnik u strukturu datoteke „csv“ i spremiti izlaz u datoteku „csv“, pokušajte s ovim kodom:

uvoz csv
s otvorenim ("voće.csv "," w ") kao datoteka:
naslovi = ["Mango", "Banana", "Jabuka", "Naranča"]
data_writer = csv.DictWriter (datoteka, imena polja = naslovi)
data_writer.zaglavlje ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Jabuka": 30, "Naranča": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Jabuka": 6, "Naranča": 4)

Nakon otvaranja praznog „voća.csv “pomoću izraza„ s otvorenim “definirana je nova varijabla„ headings “koja sadrži naslove stupaca. Novi objekt "data_writer" kreira se pozivanjem metode "DictWriter" i prosljeđivanjem reference na "voće.csv “i argument„ imena polja “. U sljedećem retku naslovi stupaca zapisuju se u datoteku metodom "headheader". Posljednje dvije izjave dodaju nove retke u odgovarajuće naslove stvorene u prethodnom koraku.

Zaključak

CSV datoteke pružaju uredan način zapisivanja podataka u tabličnom formatu. Ugrađeni Pythonov modul "csv" olakšava rukovanje podacima dostupnim u "csv" datotekama i implementaciju daljnje logike na njemu.

Vodič za Shadow of the Tomb Raider za Linux
Shadow of the Tomb Raider dvanaesti je dodatak seriji Tomb Raider - franšizi u akcijsko-avanturističkoj igri koju je stvorio Eidos Montreal. I kritiča...
Kako pojačati FPS u Linuxu?
FPS je kratica Okviri u sekundi. Zadatak FPS-a je mjerenje broja sličica u reprodukcijama video zapisa ili igranim izvedbama. Jednostavnim riječima, b...
Najpopularnije laboratorijske igre Oculus App
Ako ste vlasnik slušalica Oculus, tada morate biti sigurni u bočno učitavanje. Bočno učitavanje postupak je instaliranja nehranjenog sadržaja na vaše ...