Krajta

Jak zacházet se soubory CSV v Pythonu

Jak zacházet se soubory CSV v Pythonu
Tento článek se bude zabývat výukovým programem pro práci se soubory „csv“ pomocí Pythonu. Výraz „csv“ znamená „hodnoty oddělené čárkou“, kde každý řádek nebo řádek obsahuje textové hodnoty oddělené čárkami. V některých případech se k oddělení hodnot místo „čárky“ používá „středník“. To však příliš nezmění pravidla formátu souborů a logika zpracování obou typů oddělovačů zůstává stejná.

Pro správu databází a tabulek se nejčastěji používá formát souboru CSV. První řádek v souboru CSV se nejčastěji používá k definování polí sloupců, zatímco všechny ostatní zbývající řádky se považují za řádky. Tato struktura umožňuje uživatelům prezentovat tabulková data pomocí souborů CSV. Soubory CSV lze upravovat v libovolném textovém editoru. Aplikace jako LibreOffice Calc však poskytují pokročilé nástroje pro úpravy, funkce řazení a filtrování.

Čtení dat ze souborů CSV pomocí Pythonu

Modul CSV v Pythonu vám umožňuje číst, zapisovat a manipulovat s jakýmikoli daty uloženými v souborech CSV. Chcete-li číst soubor CSV, budete muset použít metodu „reader“ z modulu „csv“ v Pythonu, který je obsažen ve standardní knihovně Pythonu.

Vezměte v úvahu, že máte soubor CSV obsahující následující data:

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

První řádek souboru definuje každou kategorii sloupců, v tomto případě název plodů. Druhý řádek ukládá hodnoty pod každým sloupcem (sklad v ruce). Všechny tyto hodnoty jsou odděleny čárkou. Pokud byste tento soubor otevřeli v tabulkové aplikaci, jako je LibreOffice Calc, vypadalo by to takto:

Nyní číst hodnoty z „ovoce“.csv ”pomocí pythonovského„ csv “modulu, budete muset použít metodu„ reader “v následujícím formátu:

import csv
s otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.čtečka (soubor)
pro řádek v data_reader:
tisk (řádek)

První řádek ve výše uvedeném vzorku importuje modul „csv“. Dále se příkaz „s otevřeným“ používá k bezpečnému otevření souboru uloženého na pevném disku („ovoce.CSV ”v tomto případě). Nový objekt „data_reader“ je vytvořen voláním metody „reader“ z modulu „csv“. Tato metoda „čtenáře“ bere název souboru jako povinný argument, takže odkaz na „ovoce“.csv “je předán. Dále se spustí příkaz smyčky „pro“, který vytiskne každý řádek z „ovoce“.soubor CSV. Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:

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

Pokud chcete výstupu přiřadit čísla řádků, můžete použít funkci „enumerate“, která každé položce přiřadí číslo v iterovatelném čísle (od 0, pokud se nezmění).

import csv
s otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.čtečka (soubor)
pro index řádek ve výčtu (data_reader):
tisk (index, řádek)

Proměnná „index“ udržuje počet pro každý prvek. Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:

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

Protože první řádek v souboru „csv“ obvykle obsahuje záhlaví sloupců, můžete k extrahování těchto záhlaví použít funkci „enumerate“:

import csv
s otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.čtečka (soubor)
pro index řádek ve výčtu (data_reader):
pokud index == 0:
nadpisy = řádek
tisk (nadpisy)

Blok „if“ ve výše uvedeném příkazu kontroluje, zda je index roven nule (první řádek v poli „ovoce“.soubor CSV “). Pokud ano, pak je hodnota proměnné „line“ přiřazena nové proměnné „headings“. Po spuštění výše uvedeného ukázkového kódu byste měli získat následující výstup:

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

Pamatujte, že při volání „csv.metoda „čtenář“ pomocí volitelného argumentu „oddělovač“ v následujícím formátu:

import csv
s otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.čtečka (soubor, oddělovač = ";")
pro řádek v data_reader:
tisk (řádek)

Protože v souboru CSV je každý sloupec spojen s hodnotami v řádku, možná budete chtít při čtení dat ze souboru „CSV“ vytvořit objekt „slovníku“ Pythonu. Chcete-li tak učinit, musíte použít metodu „DictReader“, jak je uvedeno v níže uvedeném kódu:

import csv
s otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.DictReader (soubor)
pro řádek v data_reader:
tisk (řádek)

Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:

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

Takže teď máte objekt slovníku, který spojuje jednotlivé sloupce s odpovídajícími hodnotami v řádcích. To funguje dobře, pokud máte pouze jeden řádek. Předpokládejme, že „ovoce.Soubor CSV ”nyní obsahuje další řádek, který určuje, kolik dní bude trvat, než zásoby ovoce zahynou.

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

Pokud máte více řádků, spuštění stejného ukázkového kódu výše vytvoří jiný výstup.

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

To nemusí být ideální, protože možná budete chtít mapovat všechny hodnoty týkající se jednoho sloupce na jeden pár klíč – hodnota ve slovníku Pythonu. Místo toho vyzkoušejte tento ukázkový kód:

import csv
s otevřeným ("ovoce.".csv ") jako soubor:
data_reader = csv.DictReader (soubor)
data_dict =
pro řádek v data_reader:
pro klíč hodnota v řádku.položky ():
data_dict.setdefault (klíč, [])
data_dict [klíč].připojit (hodnota)
tisk (data_dict)

Po spuštění výše uvedeného ukázky kódu byste měli získat následující výstup:

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

Smyčka „pro“ se používá na každém prvku objektu „DictReader“ ke smyčce přes páry klíč – hodnota. Před tím je definována nová proměnná slovníku Pythonu „data_dict“. Bude ukládat konečné mapování dat. Pod druhým blokem smyčky „pro“ se používá metoda „setdefault“ slovníku Pythonu. Tato metoda přiřadí hodnotu klíči slovníku. Pokud pár klíč – hodnota neexistuje, vytvoří se ze zadaných argumentů nový. V tomto případě bude klíči přiřazen nový prázdný seznam, pokud již neexistuje. Nakonec je „hodnota“ připojena k odpovídajícímu klíči v konečném objektu „data_dict“.

Zápis dat do souboru CSV

Chcete-li zapsat data do souboru „csv“, budete muset použít metodu „write“ z modulu „csv“. Následující příklad přidá nový řádek k existujícím „plodům.soubor CSV.

import csv
s otevřeným ("ovoce.".csv "," a ") jako soubor:
data_writer = csv.spisovatel (soubor)
data_writer.writerow ([3,1,6,4])

První příkaz otevře soubor v režimu „připojit“, označený argumentem „a“. Dále se nazývá metoda „spisovatele“ a odkaz na „ovoce“.csv ”soubor je mu předán jako argument. Metoda „writerow“ zapisuje nebo přidává do souboru nový řádek.

Pokud chcete převést slovník Pythonu na strukturu souboru „csv“ a uložit výstup do souboru „csv“, zkuste tento kód:

import csv
s otevřeným ("ovoce.".csv "," w ") jako soubor:
nadpisy = ["Mango", "banán", "jablko", "oranžová"]
data_writer = csv.DictWriter (soubor, názvy polí = nadpisy)
data_writer.writeheader ()
data_writer.writerow ("Mango": 50, "Banana": 70, "Apple": 30, "Orange": 90)
data_writer.writerow ("Mango": 3, "Banana": 1, "Apple": 6, "Orange": 4)

Po otevření prázdné „ovoce.Soubor CSV pomocí příkazu „s otevřeným“ je definována nová proměnná „záhlaví“, která obsahuje záhlaví sloupců. Nový objekt „data_writer“ je vytvořen voláním metody „DictWriter“ a předáním odkazu na „ovoce“.soubor csv a argument „názvy polí“. Na dalším řádku se záhlaví sloupců zapisují do souboru pomocí metody „writeheader“. Poslední dva příkazy přidávají nové řádky k jejich odpovídajícím nadpisům vytvořeným v předchozím kroku.

Závěr

Soubory CSV poskytují čistý způsob zápisu dat v tabulkovém formátu. Integrovaný modul „csv“ v Pythonu usnadňuje práci s daty dostupnými v souborech „csv“ a implementuje do nich další logiku.

Jak používat Xdotool ke stimulaci kliknutí myší a klávesových zkratek v systému Linux
Xdotool je bezplatný a otevřený nástroj příkazového řádku pro simulaci kliknutí myší a stisknutí kláves. Tento článek se bude věnovat krátkému průvodc...
Top 5 ergonomických produktů pro počítačové myši pro Linux
Způsobuje dlouhodobé používání počítače bolest zápěstí nebo prstů? Trpíte ztuhlými klouby a neustále si musíte třást ruce? Cítíte pálivou bolest pokaž...
Jak změnit nastavení myši a touchpadu pomocí Xinput v Linuxu
Většina linuxových distribucí je ve výchozím nastavení dodávána s knihovnou „libinput“ pro zpracování vstupních událostí v systému. Může zpracovávat v...