Jak obsługiwać pliki CSV w Python

Jak obsługiwać pliki CSV w Python
W tym artykule obejmie samouczek dotyczący obsługi plików „CSV” za pomocą Pythona. Termin „CSV” oznacza „wartości oddzielone przecinkami”, w których każdy wiersz lub linia zawiera wartości tekstowe wyznaczone przez przecinki. W niektórych przypadkach zamiast „przecinka” jest również używany „półkolis”. Nie ma to jednak większego znaczenia w regułach formatu plików, a logika do obsługi obu typów separatorów pozostaje taka sama.

Format pliku CSV jest najczęściej używany do utrzymywania baz danych i arkuszy kalkulacyjnych. Pierwsza linia w pliku CSV jest najczęściej używana do definiowania pól kolumnowych, podczas gdy każde inne pozostałe linie są uważane za wiersze. Ta struktura pozwala użytkownikom prezentować dane tabelaryczne za pomocą plików CSV. Pliki CSV można edytować w dowolnym edytorze tekstu. Jednak aplikacje takie jak LibreOffice Calc zapewniają zaawansowane narzędzia do edycji, sortowanie i filtrowanie funkcji.

Czytanie danych z plików CSV za pomocą Pythona

Moduł CSV w Python umożliwia czytanie, pisanie i manipulowanie wszelkimi danymi przechowywanymi w plikach CSV. Aby odczytać plik CSV, musisz użyć metody „czytnika” z modułu „CSV” Pythona, który jest zawarty w standardowej bibliotece Pythona.

Zastanów się, że masz plik CSV zawierający następujące dane:

Mango, banan, jabłko, pomarańcz
50,70,30,90

Pierwszy wiersz pliku określa każdą kategorię kolumny, nazwa owoców w tym przypadku. Druga linia przechowuje wartości pod każdą kolumną (zapas w ręku). Wszystkie te wartości są ograniczone przez przecinek. Gdybyś otworzył ten plik w aplikacji arkusza kalkulacyjnego, takiej jak LibreOffice Calc, wyglądałoby to tak:

Teraz odczytanie wartości z „owoców.Plik CSV ”Korzystając z modułu„ CSV ”Pythona, musisz użyć metody„ Reader ”w następującym formacie:

Importuj CSV
z otwartymi („owoce.csv ") jako plik:
data_reader = CSV.czytnik (plik)
dla linii w data_reader:
wydruku (linia)

Pierwszy wiersz w powyższej próbce importuje moduł „CSV”. Następnie instrukcja „z otwartym” służy do bezpiecznego otwarcia pliku przechowywanego na dysku twardym („owoce.CSV ”w tym przypadku). Nowy obiekt „Data_reader” jest tworzony przez wywołanie metody „czytnika” z modułu „CSV”. Ta metoda „czytelnika” bierze nazwę pliku jako obowiązkowy argument, więc odniesienie do „owoców.CSV ”jest przekazywany. Następnie uruchomiono instrukcję pętli „for”, aby wydrukować każdą linię z „owoców.plik CSV ”. Po uruchomieniu próbki kodu wymienionego powyżej, należy uzyskać następujące dane wyjściowe:

[„50”, „70”, „30”, „90”]

Jeśli chcesz przypisać numery linii do wyjścia, możesz użyć funkcji „Enumerate”, która przypisuje liczbę do każdego elementu w iterowalnym (zaczynając od 0, chyba że się zmieni).

Importuj CSV
z otwartymi („owoce.csv ") jako plik:
data_reader = CSV.czytnik (plik)
W przypadku indeksu linia w wyliczaniu (data_reader):
Drukuj (indeks, linia)

Zmienna „indeksowa” utrzymuje liczbę dla każdego elementu. Po uruchomieniu próbki kodu wymienionego powyżej, należy uzyskać następujące dane wyjściowe:

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

Ponieważ pierwszy wiersz w pliku „CSV” zwykle zawiera nagłówki kolumn, możesz użyć funkcji „wyliczania”, aby wyodrębnić te nagłówki:

Importuj CSV
z otwartymi („owoce.csv ") jako plik:
data_reader = CSV.czytnik (plik)
W przypadku indeksu linia w wyliczaniu (data_reader):
Jeśli indeks == 0:
nagłówki = linia
Drukuj (nagłówki)

Blok „If” w powyższym instrukcji sprawdza, czy indeks jest równy zero (pierwszy wiersz w „owocach.plik CSV ”). Jeśli tak, to wartość zmiennej „linii” jest przypisana do nowej zmiennej „nagłówki”. Po uruchomieniu powyższej próbki kodu należy uzyskać następujące dane wyjściowe:

[„Mango”, „Banana”, „Apple”, „Orange”]

Pamiętaj, że możesz użyć własnego ogranicznika podczas dzwonienia „CSV.Metoda czytnika ”za pomocą opcjonalnego argumentu„ delimiter ”w następującym formacie:

Importuj CSV
z otwartymi („owoce.csv ") jako plik:
data_reader = CSV.czytnik (plik, delimiter = ";")
dla linii w data_reader:
wydruku (linia)

Ponieważ w pliku CSV każda kolumna jest powiązana z wartościami w wierszu, możesz utworzyć obiekt Python „Słownik” podczas czytania danych z pliku „CSV”. Aby to zrobić, musisz użyć metody „DicTreader”, jak pokazano w poniższym kodzie:

Importuj CSV
z otwartymi („owoce.csv ") jako plik:
data_reader = CSV.DicTreader (plik)
dla linii w data_reader:
wydruku (linia)

Po uruchomieniu próbki kodu wymienionego powyżej, należy uzyskać następujące dane wyjściowe:

„Mango”: „50”, „banan”: „70”, „Apple”: „30”, „Orange”: „90”

Więc teraz masz obiekt słownika, który kojarzy poszczególne kolumny z odpowiednimi wartościami w wierszach. Działa to dobrze, jeśli masz tylko jeden rząd. Załóżmy, że „owoce.Plik CSV ”zawiera teraz dodatkowy wiersz, który określa, ile dni zajmie zapasy owoców.

Mango, banan, jabłko, pomarańcz
50,70,30,90
3,1,6,4

Gdy masz wiele wierszy, uruchomienie tego samego kodu powyżej wytworzy inne dane wyjściowe.

„Mango”: „50”, „banan”: „70”, „Apple”: „30”, „Orange”: „90”
„Mango”: „3”, „banan”: „1”, „Apple”: „6”, „Orange”: „4”

Może to nie być idealne, ponieważ możesz chcieć mapować wszystkie wartości dotyczące jednej kolumny na jedną parę wartości klucza w słowniku Python. Zamiast tego wypróbuj ten kod::

Importuj CSV
z otwartymi („owoce.csv ") jako plik:
data_reader = CSV.DicTreader (plik)
data_dict =
dla linii w data_reader:
Dla klucza wartość w linii.rzeczy():
data_dict.setdefault (klucz, [])
data_dict [klucz].Dodatek (wartość)
print (data_dict)

Po uruchomieniu próbki kodu wymienionego powyżej, należy uzyskać następujące dane wyjściowe:

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

Pętla „dla” jest używana na każdym elemencie obiektu „DicTreader” do zapętlania par kluczowych. Wcześniej zdefiniowana jest nowa zmienna słownika Pythona „data_dict”. Będzie przechowywać ostateczne mapowania danych. W drugim bloku pętli „for” stosuje się metodę „SetDefault” Pythona. Ta metoda przypisuje wartość do klucza słownika. Jeśli para kluczowej wartości nie istnieje, nowa jest tworzona z określonych argumentów. W takim przypadku nowa pusta lista zostanie przypisana do klucza, jeśli jeszcze nie istnieje. Na koniec „wartość” jest dołączona do odpowiedniego klucza w końcowym obiekcie „data_dict”.

Zapisanie danych do pliku CSV

Aby zapisać dane do pliku „CSV”, musisz użyć metody „Writer” z modułu „CSV”. Poniższy przykład dołączy nowy wiersz do istniejących „owoców.plik CSV ”.

Importuj CSV
z otwartymi („owoce.csv ",„ a ”) jako plik:
data_writer = CSV.pisarz (plik)
data_writer.pisarz ([3,1,6,4])

Pierwsza instrukcja otwiera plik w trybie „Dodatek”, oznaczony argumentem „A”. Następnie wywoływana jest metoda „pisarza” i odniesienie do „owoców.plik CSV ”jest przekazywany jako argument. Metoda „Writerow” zapisuje lub dodaje nowy wiersz do pliku.

Jeśli chcesz przekonwertować Słownik Python na strukturę pliku „CSV” i zapisz wyjście w pliku „CSV”, wypróbuj ten kod:

Importuj CSV
z otwartymi („owoce.csv ",„ w ”) jako plik:
Headings = [„Mango”, „Banana”, „Apple”, „Orange”]
data_writer = CSV.DictWriter (plik, fieldNames = nagłówki)
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 otwarciu pustych „owoców.Plik CSV ”za pomocą instrukcji„ z otwartą ”, zdefiniowano nową zmienną„ nagłówki ”, które zawierają nagłówki kolumn. Nowy obiekt „Data_Writer” jest tworzony przez wywołanie metody „DictWriter” i przekazanie jej odniesienia do „owoców.plik CSV ”i argument„ FieldNames ”. W następnym wierszu nagłówki kolumn są zapisywane do pliku za pomocą metody „Writeheader”. Dwa ostatnie stwierdzenia dodają nowe wiersze do odpowiadających im nagłówków utworzonych w poprzednim kroku.

Wniosek

Pliki CSV zapewniają schludny sposób zapisywania danych w formacie tabelarycznym. Wbudowany moduł „CSV” Pythona ułatwia obsługę danych dostępnych w plikach „CSV” i wdrażanie na nim dalszej logiki.