Czytanie i pisanie plików CSV w Pythonie przy użyciu modułu CSV & Pandy

Spisie treści:

Anonim

Co to jest plik CSV?

Plik CSV to typ zwykłego pliku tekstowego, który wykorzystuje określoną strukturę do uporządkowania danych tabelarycznych. CSV jest popularnym formatem wymiany danych, ponieważ jest kompaktowy, prosty i ogólny. Wiele usług online umożliwia użytkownikom eksportowanie danych tabelarycznych ze strony internetowej do pliku CSV. Pliki CSV zostaną otwarte w programie Excel, a prawie wszystkie bazy danych mają narzędzie umożliwiające import z pliku CSV. Standardowy format jest definiowany przez dane w wierszach i kolumnach. Ponadto każdy wiersz jest zakończony nową linią rozpoczynającą następny wiersz. Również w wierszu każda kolumna jest oddzielona przecinkiem.

W tym samouczku dowiesz się:

  • Co to jest plik CSV?
  • Przykładowy plik CSV.
  • Moduł Python CSV
  • Funkcje modułu CSV
  • Czytanie plików CSV
  • Czytanie jako słownik
  • Pisanie do plików CSV
  • Czytanie plików CSV za pomocą Pandas
  • Pisanie do plików CSV za pomocą Pandas

Przykładowy plik CSV.

Dane w postaci tabel nazywane są również CSV (wartości oddzielone przecinkami) - dosłownie „wartości oddzielone przecinkami”. Jest to format tekstowy przeznaczony do prezentacji danych tabelarycznych. Każdy wiersz pliku to jeden wiersz tabeli. Wartości poszczególnych kolumn oddzielone są separatorem - przecinkiem (,), średnikiem (;) lub innym symbolem. CSV można łatwo odczytać i przetworzyć w Pythonie.

Rozważmy następującą Tabe

Dane tabeli

Język programowania Zaprojektowany przez Pojawiło się Rozbudowa
Pyton Guido van Rossum 1991 .py
Jawa James Gosling 1995 .Jawa
C ++ Bjarne Stroustrup 1983 .cpp

Możesz przedstawić tę tabelę w CSV, jak poniżej.

Dane CSV

Język programowania, zaprojektowany przez, pojawił się, rozszerzenie

Python, Guido van Rossum, 1991, .py

Java, James Gosling, 1995, .java

C ++, Bjarne Stroustrup, 1983, .cpp

Jak widać, każdy wiersz to nowa linia, a każda kolumna jest oddzielona przecinkiem. To jest przykład tego, jak wygląda plik CSV.

Pobierz dane CSV

Moduł Python CSV

Python udostępnia moduł CSV do obsługi plików CSV. Aby odczytać / zapisać dane, musisz przechodzić przez wiersze pliku CSV. Musisz użyć metody podziału, aby pobrać dane z określonych kolumn.

Funkcje modułu CSV

W dokumentacji modułu CSV można znaleźć następujące funkcje:

  • csv.field_size_limit - zwraca maksymalny rozmiar pola
  • csv.get_dialect - pobierz dialekt, który jest powiązany z nazwą
  • csv.list_dialects - pokaż wszystkie zarejestrowane dialekty
  • csv.reader - odczytuje dane z pliku csv
  • csv.register_dialect - skojarz dialekt z nazwą
  • csv.writer - zapisuje dane do pliku csv
  • csv.unregister_dialect - usuń dialekt powiązany z nazwą rejestru dialektów
  • csv.QUOTE_ALL - Cytuj wszystko, niezależnie od typu.
  • csv.QUOTE_MINIMAL - Cytuj pola ze znakami specjalnymi
  • csv.QUOTE_NONNUMERIC - Cytuje wszystkie pola, które nie są wartościami liczbowymi
  • csv.QUOTE_NONE - Nie cytuj niczego w wynikach

W tym samouczku skupimy się tylko na funkcjach czytnika i pisarza, które pozwalają edytować, modyfikować i manipulować danymi w pliku CSV.

Jak czytać plik CSV

Aby odczytać dane z plików CSV, musisz użyć funkcji czytnika w celu wygenerowania obiektu czytnika.

Funkcja czytnika została opracowana w celu pobrania każdego wiersza pliku i sporządzenia listy wszystkich kolumn. Następnie musisz wybrać kolumnę, dla której chcesz uzyskać zmienne dane.

Brzmi o wiele bardziej skomplikowanie niż w rzeczywistości. Spójrzmy na ten przykład, a przekonamy się, że praca z plikiem csv nie jest taka trudna.

#import necessary modulesimport csvwith open('X:\data.csv','rt')as f:data = csv.reader(f)for row in data:print(row)

Po wykonaniu powyższego programu wynik będzie:

['Programming language; Designed by; Appeared; Extension']['Python; Guido van Rossum; 1991; .py']['Java; James Gosling; 1995; .java']['C++; Bjarne Stroustrup;1983;.cpp']

Jak czytać plik CSV jako słownik

Możesz także użyć DictReader do czytania plików CSV. Wyniki są interpretowane jako słownik, w którym wiersz nagłówka jest kluczem, a inne wiersze są wartościami.

Rozważmy następujący kod

#import necessary modulesimport csvreader = csv.DictReader(open("file2.csv"))for raw in reader:print(raw)

Wynikiem tego kodu jest:

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 w ten sposób odczytanie danych z pliku CSV jest dużo prostsze niż wcześniejsza metoda. Jednak nie jest to najlepszy sposób odczytu danych.

Jak napisać plik CSV

Gdy masz zestaw danych, które chcesz przechowywać w pliku CSV, musisz użyć funkcji writer (). Aby iterować dane po wierszach (liniach), musisz użyć funkcji writerow ().

Rozważmy następujący przykład. Zapisujemy dane do pliku „writeData.csv”, gdzie separatorem jest 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'])

Wynik w pliku csv to:

Programming language, Designed by, Appeared, ExtensionPython, Guido van Rossum, 1991, .pyJava, James Gosling, 1995, .javaC++, Bjarne Stroustrup,1983,.cpp

Czytanie plików CSV za pomocą Pandas

Pandas to biblioteka open source, która pozwala na manipulowanie danymi w Pythonie. Pandy zapewniają łatwy sposób tworzenia, manipulowania i usuwania danych.

Musisz zainstalować bibliotekę pandas za pomocą polecenia pip install pandas . W systemie Windows wykonasz to polecenie w wierszu polecenia w systemie Linux w terminalu.

Wczytanie pliku CSV do pandy DataFrame jest bardzo szybkie i łatwe:

#import necessary modulesimport pandasresult = pandas.read_csv('X:\data.csv')print(result)

Wynik:

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp 

Bardzo przydatna biblioteka. W zaledwie trzech wierszach kodu uzyskasz ten sam wynik, co wcześniej. Pandy wiedzą, że pierwsza linia pliku CSV zawierała nazwy kolumn i użyje ich automatycznie.

Pisanie do plików CSV za pomocą Pandas

Pisanie do pliku CSV za pomocą Pandas jest tak łatwe, jak czytanie. Tutaj możesz się w tym przekonać. Najpierw musisz utworzyć DataFrame na podstawie poniższego kodu.

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)

Oto wynik

Programming language, Designed by, Appeared, Extension0 Python, Guido van Rossum, 1991, .py1 Java, James Gosling, 1995, .java2 C++, Bjarne Stroustrup,1983,.cpp

Plik CSV jest tworzony w określonej lokalizacji.

Wniosek

Teraz już wiesz, jak używać metody „csv”, a także czytać i zapisywać dane w formacie CSV. Pliki CSV są szeroko stosowane w aplikacjach, ponieważ są łatwe do odczytania i zarządzania, a ich niewielki rozmiar sprawia, że ​​są stosunkowo szybkie w przetwarzaniu i transmisji.

Moduł csv zapewnia różne funkcje i klasy, które pozwalają na łatwe czytanie i pisanie. Możesz zajrzeć do oficjalnej dokumentacji Pythona i znaleźć kilka bardziej interesujących wskazówek i modułów. CSV to najlepszy sposób na zapisywanie, przeglądanie i wysyłanie danych. Właściwie nie jest to takie trudne do nauczenia, jak się wydaje na początku. Ale przy odrobinie praktyki opanujesz to.

Pandy to świetna alternatywa dla czytania plików CSV.

Istnieją również inne sposoby analizowania plików tekstowych za pomocą bibliotek, takich jak ANTLR, PLY i PlyPlus. Wszystkie mogą obsługiwać bardzo wymagające przetwarzanie, a jeśli prosta manipulacja na łańcuchach nie działa, istnieją wyrażenia regularne, których możesz użyć.