Python

Ako narábať so súbormi CSV v Pythone

Ako narábať so súbormi CSV v Pythone
V tomto článku sa dozviete návod na prácu so súbormi „CSV“ pomocou jazyka Python. Výraz „csv“ znamená „hodnoty oddelené čiarkou“, kde každý riadok alebo riadok obsahuje textové hodnoty ohraničené čiarkami. V niektorých prípadoch sa na oddelenie hodnôt namiesto čiarky používa aj bodkočiarka. To však príliš nezmenilo pravidlá týkajúce sa formátu súborov a logika spracovania obidvoch typov oddeľovačov zostáva rovnaká.

Na údržbu databáz a tabuliek sa najčastejšie používa formát súboru CSV. Prvý riadok v súbore CSV sa najčastejšie používa na definovanie polí stĺpcov, zatiaľ čo všetky ostatné zostávajúce riadky sa považujú za riadky. Táto štruktúra umožňuje používateľom prezentovať tabuľkové údaje pomocou súborov CSV. Súbory CSV je možné upravovať v ľubovoľnom textovom editore. Aplikácie ako LibreOffice Calc však poskytujú pokročilé editovacie nástroje, funkcie triedenia a filtrovania.

Čítanie údajov zo súborov CSV pomocou jazyka Python

Modul CSV v Pythone vám umožňuje čítať, písať a manipulovať s ľubovoľnými údajmi uloženými v súboroch CSV. Ak chcete načítať súbor CSV, budete musieť použiť metódu „reader“ z modulu „csv“ v Pythone, ktorý je súčasťou štandardnej knižnice Pythonu.

Zvážte, že máte súbor CSV obsahujúci nasledujúce údaje:

Mango, banán, jablko, pomaranč
50,70,30,90

Prvý riadok súboru definuje každú kategóriu stĺpca, v tomto prípade názov ovocia. Druhý riadok ukladá hodnoty pod každým stĺpcom (skladom v ruke). Všetky tieto hodnoty sú oddelené čiarkou. Ak by ste tento súbor otvorili v tabuľkovej aplikácii, ako je LibreOffice Calc, vyzeral by to takto:

Teraz čítať hodnoty z „ovocia.csv ”pomocou modulu„ csv “v Pythone, budete musieť použiť metódu„ reader “v nasledujúcom formáte:

import csv
s otvoreným ("ovocie.csv ") ako súbor:
data_reader = csv.čítačka (súbor)
pre riadok v data_reader:
tlač (riadok)

Prvý riadok vyššie uvedenej vzorky importuje modul „csv“. Ďalej sa príkaz „s otvoreným“ používa na bezpečné otvorenie súboru uloženého na pevnom disku („ovocie.csv “v tomto prípade). Nový objekt „data_reader“ sa vytvorí volaním metódy „reader“ z modulu „csv“. Táto metóda „čitateľa“ berie názov súboru ako povinný argument, takže odkaz na „ovocie“.csv “je mu odovzdané. Ďalej sa spustí príkaz slučky „for“, ktorý vytlačí každý riadok z „ovocia“.súbor CSV. Po spustení ukážky kódu uvedenej vyššie by ste mali získať nasledujúci výstup:

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

Ak chcete výstupu priradiť čísla riadkov, môžete použiť funkciu „enumerate“, ktorá priraďuje každej položke číslo v iterovateľnej položke (od 0, pokiaľ sa nezmení).

import csv
s otvoreným ("ovocie.csv ") ako súbor:
data_reader = csv.čítačka (súbor)
pre index riadok v zozname (data_reader):
tlač (index, riadok)

Premenná „index“ udržuje počet pre každý prvok. Po spustení ukážky kódu uvedenej vyššie by ste mali získať nasledujúci výstup:

0 ['Mango', 'Banana', 'Apple', 'Orange']
1 ['50', '70', '30', '90']

Pretože prvý riadok v súbore „csv“ zvyčajne obsahuje nadpisy stĺpcov, môžete na extrahovanie týchto nadpisov použiť funkciu „enumerate“:

import csv
s otvoreným ("ovocie.csv ") ako súbor:
data_reader = csv.čítačka (súbor)
pre index riadok vo výčte (data_reader):
ak index == 0:
nadpisy = riadok
tlač (nadpisy)

Blok „if“ vo vyššie uvedenom výpise kontroluje, či je index rovný nule (prvý riadok v časti „ovocie.súbor CSV “). Ak áno, potom je hodnota premennej „riadok“ priradená novej premennej „nadpis“. Po spustení vyššie uvedenej ukážky kódu by ste mali získať nasledujúci výstup:

['Mango', 'Banana', 'Apple', 'Orange']

Upozorňujeme, že pri volaní súboru „csv.metóda čitateľa pomocou voliteľného argumentu „oddeľovač“ v nasledujúcom formáte:

import csv
s otvoreným ("ovocie.csv ") ako súbor:
data_reader = csv.čítačka (súbor, oddeľovač = ";")
pre riadok v data_reader:
tlač (riadok)

Pretože v súbore csv je každý stĺpec priradený k hodnotám v rade, možno budete chcieť pri čítaní údajov zo súboru „csv“ vytvoriť objekt „slovníka“ v jazyku Python. Ak to chcete urobiť, musíte použiť metódu „DictReader“ uvedenú v nasledujúcom kóde:

import csv
s otvoreným ("ovocie.csv ") ako súbor:
data_reader = csv.DictReader (súbor)
pre riadok v data_reader:
tlač (riadok)

Po spustení ukážky kódu uvedenej vyššie by ste mali získať nasledujúci výstup:

'Mango': '50', 'Banana': '70', 'Apple': '30', 'Orange': '90'

Takže teraz máte objekt slovníka, ktorý spája jednotlivé stĺpce s ich zodpovedajúcimi hodnotami v riadkoch. Toto funguje dobre, ak máte iba jeden riadok. Predpokladajme, že „ovocie.Súbor csv ”teraz obsahuje ďalší riadok, ktorý určuje, koľko dní bude trvať, kým zahynie zásoba ovocia.

Mango, banán, jablko, pomaranč
50,70,30,90
3,1,6,4

Ak máte viac riadkov, spustenie rovnakej vzorky kódu vyššie spôsobí iný výstup.

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

To nemusí byť ideálne, pretože možno budete chcieť namapovať všetky hodnoty týkajúce sa jedného stĺpca na jeden pár kľúč - hodnota v slovníku Python. Namiesto toho vyskúšajte túto ukážku kódu:

import csv
s otvoreným ("ovocie.csv ") ako súbor:
data_reader = csv.DictReader (súbor)
data_dict =
pre riadok v data_reader:
pre kľúč hodnota v riadku.položky ():
údaj_dikt.setdefault (kľúč, [])
data_dict [kľúč].append (hodnota)
print (data_dict)

Po spustení ukážky kódu uvedenej vyššie by ste mali získať nasledujúci výstup:

'Mango': ['50', '3'], 'Banana': ['70', '1'], 'Apple': ['30', '6'], 'Oranžová': ['90 ',' 4 ']

Smyčka „pre“ sa používa na každom prvku objektu „DictReader“ na slučku cez páry kľúč - hodnota. Pred tým je definovaná nová premenná slovníka Python „data_dict“. Bude ukladať konečné mapovania údajov. V druhom bloku slučky „pre“ sa používa metóda „setdefault“ slovníka Python. Táto metóda priradí hodnotu kľúču slovníka. Ak dvojica kľúč - hodnota neexistuje, zo zadaných argumentov sa vytvorí nový. V takom prípade bude kľúču pridelený nový prázdny zoznam, ak ešte neexistuje. Na záver sa hodnota „value“ pripojí k zodpovedajúcemu kľúču v konečnom objekte „data_dict“.

Zápis údajov do súboru CSV

Ak chcete zapísať údaje do súboru „csv“, budete musieť použiť metódu „write“ z modulu „csv“. Nasledujúci príklad pripojí nový riadok k existujúcim „plodom.súbor CSV.

import csv
s otvoreným ("ovocie.csv "," a ") ako súbor:
data_writer = csv.spisovateľ (spis)
data_writer.writerow ([3,1,6,4])

Prvý príkaz otvorí súbor v režime „pridať“, označený argumentom „a“. Ďalej sa volá metóda „spisovateľa“ a odkaz na „ovocie“.csv ”je mu odovzdaný ako argument. Metóda „writerow“ zapíše alebo do súboru pridá nový riadok.

Ak chcete previesť slovník Pythonu na štruktúru súboru „csv“ a uložiť výstup do súboru „csv“, vyskúšajte tento kód:

import csv
s otvoreným ("ovocie.csv "," w ") ako súbor:
nadpisy = ["Mango", "banán", "jablko", "oranžová"]
data_writer = csv.DictWriter (súbor, názvy polí = nadpisy)
data_writer.hlavička zápisu ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)

Po otvorení prázdneho „ovocia.Súbor csv pomocou príkazu „s otvoreným“ je definovaná nová premenná „nadpisy“, ktorá obsahuje nadpisy stĺpcov. Nový objekt „data_writer“ sa vytvorí volaním metódy „DictWriter“ a odovzdaním odkazu na „ovocie“.súbor csv a argument „názvy polí“. V nasledujúcom riadku sa do súboru zapisujú hlavičky stĺpcov metódou „writeheader“. Posledné dva príkazy pridávajú nové riadky k ich zodpovedajúcim nadpisom vytvoreným v predchádzajúcom kroku.

Záver

Súbory CSV poskytujú čistý spôsob zápisu údajov do tabuľky. Zabudovaný modul „csv“ v Pythone uľahčuje prácu s údajmi dostupnými v súboroch „csv“ a implementáciu ďalšej logiky do nich.

WinMouse vám umožňuje prispôsobiť a vylepšiť pohyb ukazovateľa myši na počítači so systémom Windows
Ak chcete vylepšiť predvolené funkcie kurzora myši, použite freeware WinMouse. Pridáva ďalšie funkcie, ktoré vám pomôžu vyťažiť zo svojej skromnej myš...
Tlačidlo ľavého kliknutia myši nefunguje v systéme Windows 10
Ak používate samostatnú myš s prenosným počítačom alebo stolovým počítačom, ale nefunguje ľavé tlačidlo myši vo Windows 10/8/7 z nejakého dôvodu uvádz...
Kurzor pri písaní v systéme Windows 10 skáče alebo sa pohybuje náhodne
Ak zistíte, že kurzor myši skáče alebo sa pohybuje sám, automaticky a náhodne pri písaní na notebooku alebo počítači so systémom Windows, niektoré z t...