Praca z plikami CSV w Pythonie
A Plik CSV (wartości rozdzielane przecinkami). to zwykły plik tekstowy, w którym każda linia reprezentuje rekord danych, a pola w każdym rekordzie są oddzielone przecinkami. Jest powszechnie używany w arkuszach kalkulacyjnych i bazach danych ze względu na swoją prostotę i czytelność.
Poniżej znajdują się niektóre operacje, które wykonujemy podczas pracy z plikami CSV Pythona w Pythonie
Odczyt pliku CSV
Odczyt z pliku CSV odbywa się za pomocą obiektu czytnika. Plik CSV jest otwierany jako plik tekstowy za pomocą wbudowanej funkcji open() Pythona, która zwraca obiekt pliku. W tym przykładzie najpierw otwieramy plik CSV w trybie READ. Obiekt pliku jest konwertowany do obiektu csv.reader i następuje dalsza operacja. Poniżej znajduje się kod i szczegółowe wyjaśnienie.
Python import csv filename = 'aapl.csv' # File name fields = [] # Column names rows = [] # Data rows with open ( filename 'r' ) as csvfile : csvreader = csv . reader ( csvfile ) # Reader object fields = next ( csvreader ) # Read header for row in csvreader : # Read rows rows . append ( row ) print ( 'Total no. of rows: %d ' % csvreader . line_num ) # Row count print ( 'Field names are: ' + ' ' . join ( fields )) print ( ' n First 5 rows are: n ' ) for row in rows [: 5 ]: for col in row : print ( ' %10s ' % col end = ' ' ) print ( ' n ' )
Wyjście
Powyższy przykład wykorzystuje plik CSV aapl.csv z którego można pobrać Tutaj .
Wyjaśnienie:
- z otwartym(...) bezpiecznie otwiera plik CSV w trybie odczytu za pomocą menedżera kontekstu.
- csv.reader (plik csv) zamienia plik w obiekt czytnika CSV.
- następny (csvreader) wyodrębnia pierwszy wiersz jako nagłówki kolumn.
- Przejdź przez pętlę csvreader aby dołączyć każdy wiersz (jako listę) do wierszy.
- Wydrukuj nagłówki wszystkich wierszy i pierwszych 5 wierszy danych w sformatowanym widoku.
Czytanie plików CSV do słownika za pomocą pliku CSV
Plik CSV możemy wczytać do słownika wykorzystując moduł csv w Pythonie oraz klasę csv.DictReader. Oto przykład:
Załóżmy, że mamy pracownicy.csv plik i zawartość w nim będzie:
nazwany działurodziny_miesiąc
John SmithHRlipiec
Alice JohnsonITpaździernik
Bob WilliamsFinanse styczeń
Przykład: Spowoduje to odczytanie każdego wiersza jako słownika (nagłówki jako klucze), a następnie dodanie go do listy.
Python import csv with open ( 'employees.csv' mode = 'r' ) as file : csv_reader = csv . DictReader ( file ) # Create DictReader data_list = [] # List to store dictionaries for row in csv_reader : data_list . append ( row ) for data in data_list : print ( data )
Wyjście:
{'name': 'John Smith' 'department': 'HR' 'urodziny_miesiąc': 'lipiec'}
{'imię i nazwisko': 'Alice Johnson' 'dział': 'IT' 'miesiąc_urodzin': 'październik'}
{'name': 'Bob Williams' 'department': 'Finanse' 'miesiąc_urodzin': 'styczeń'}
Wyjaśnienie:
- z otwartym(...) otwiera plik za pomocą menedżera kontekstu.
- csv.DictReader(plik) czyta każdy wiersz jako słownik, używając nagłówków jako kluczy.
- data_list.append(wiersz) przechowuje każdy słownik na liście.
Zapis do pliku CSV
Aby zapisać do pliku CSV, najpierw otwieramy plik CSV w trybie WRITE. Obiekt pliku jest konwertowany na obiekt csv.writer i wykonywane są dalsze operacje. Poniżej znajduje się kod i szczegółowe wyjaśnienie.
Python import csv # Define header and data rows fields = [ 'Name' 'Branch' 'Year' 'CGPA' ] rows = [ [ 'Nikhil' 'COE' '2' '9.0' ] [ 'Sanchit' 'COE' '2' '9.1' ] [ 'Aditya' 'IT' '2' '9.3' ] [ 'Sagar' 'SE' '1' '9.5' ] [ 'Prateek' 'MCE' '3' '7.8' ] [ 'Sahil' 'EP' '2' '9.1' ] ] filename = 'university_records.csv' with open ( filename 'w' ) as csvfile : csvwriter = csv . writer ( csvfile ) # Create writer object csvwriter . writerow ( fields ) # Write header csvwriter . writerows ( rows ) # Write multiple rows
Wyjaśnienie:
- pola definiuje nagłówki kolumn i wierszy zawiera dane w postaci listy list.
- z otwórz(... 'w') otwiera plik w trybie zapisu przy użyciu menedżera kontekstu.
- csv.writer (plik csv) tworzy obiekt piszący do zapisu w pliku CSV.
- napisz(pola) zapisuje wiersz nagłówka do pliku.
- zapisuje wiersze (wiersze) zapisuje wszystkie wiersze danych jednocześnie w pliku CSV.
Zapisanie słownika do pliku CSV
Aby zapisać słownik w pliku CSV, obiekt pliku (csvfile) jest konwertowany na obiekt DictWriter. Szczegółowy przykład z wyjaśnieniem i kodem podano poniżej.
Python # importing the csv module import csv # my data rows as dictionary objects mydict = [{ 'branch' : 'COE' 'cgpa' : '9.0' 'name' : 'Nikhil' 'year' : '2' } { 'branch' : 'COE' 'cgpa' : '9.1' 'name' : 'Sanchit' 'year' : '2' } { 'branch' : 'IT' 'cgpa' : '9.3' 'name' : 'Aditya' 'year' : '2' } { 'branch' : 'SE' 'cgpa' : '9.5' 'name' : 'Sagar' 'year' : '1' } { 'branch' : 'MCE' 'cgpa' : '7.8' 'name' : 'Prateek' 'year' : '3' } { 'branch' : 'EP' 'cgpa' : '9.1' 'name' : 'Sahil' 'year' : '2' }] # field names fields = [ 'name' 'branch' 'year' 'cgpa' ] # name of csv file filename = 'university_records.csv' # writing to csv file with open ( filename 'w' ) as csvfile : # creating a csv dict writer object writer = csv . DictWriter ( csvfile fieldnames = fields ) # writing headers (field names) writer . writeheader () # writing data rows writer . writerows ( mydict )
Wyjście
plik csv Weź pod uwagę, że plik CSV wygląda tak w postaci zwykłego tekstu:
rekord uniwersytecki Wyjaśnienie:
- z otwartym(...) otwiera plik bezpiecznie za pomocą menedżera kontekstu.
- csv.DictWriter(... ) mapuje klucze słownika na kolumny CSV.
- nagłówek zapisu() zapisuje nagłówki kolumn.
- pisze(mydykt) zapisuje wszystkie słowniki jako wiersze CSV.
Odczytywanie plików CSV za pomocą Pand
Możemy przeczytać A Plik CSV w Pythonie pliki za pomocą Pand pandy.read_csv() funkcjonować. Oto przykład:
Załóżmy, że mamy plik Employees.csv, a jego zawartość będzie następująca:
nazwany działurodziny_miesiąc
John SmithHRlipiec
Alice JohnsonITpaździernik
Bob WilliamsFinanse styczeń
W tym przykładzie pd.read_csv() wczytuje plik CSV do ramki danych Pandas. Powstałą ramkę DataFrame można wykorzystać do różnych zadań manipulacji i analizy danych.
Python import pandas as pd # Read the CSV file into a DataFrame df = pd . read_csv ( 'employees.csv' ) # Display the DataFrame print ( df )
Wyjście:
nazwa działu miesiąc urodzin
0 John Smith HR lipiec
1 Alice Johnson IT Październik
2 Bob Williams Finanse, styczeń
Możemy uzyskać dostęp do danych filtrujących określone kolumny i wykonywać różne operacje, korzystając z funkcjonalności Pandas DataFrame. Na przykład, jeśli chcemy uzyskać dostęp do kolumny „nazwa”, możemy użyć df[„nazwa”].
Python # Access the 'name' column names = df [ 'name' ] print ( names )
Wyjście :
0 Johna Smitha
1 Alicja Johnson
2 Boba Williamsa
Nazwa: nazwa dtyp: obiekt
Zapisywanie plików CSV za pomocą Pand
Możemy używać Pand do pisania plików CSV. Można to zrobić za pomocą pd.DataFrame() funkcjonować. W tym przykładzie Pandy Biblioteka służy do konwersji listy słowników (mydict) na ramkę DataFrame reprezentującą dane tabelaryczne. Ramka danych jest następnie zapisywana w pliku CSV w języku Python o nazwie „output.csv” przy użyciu metody to_csv, tworząc ustrukturyzowany i czytelny plik danych do dalszej analizy lub udostępniania.
Python import pandas as pd mydict = [ { 'branch' : 'COE' 'cgpa' : '9.0' 'name' : 'Nikhil' 'year' : '2' } { 'branch' : 'COE' 'cgpa' : '9.1' 'name' : 'Sanchit' 'year' : '2' } { 'branch' : 'IT' 'cgpa' : '9.3' 'name' : 'Aditya' 'year' : '2' } { 'branch' : 'SE' 'cgpa' : '9.5' 'name' : 'Sagar' 'year' : '1' } { 'branch' : 'MCE' 'cgpa' : '7.8' 'name' : 'Prateek' 'year' : '3' } { 'branch' : 'EP' 'cgpa' : '9.1' 'name' : 'Sahil' 'year' : '2' } ] # Create a DataFrame from the list of dictionaries df = pd . DataFrame ( mydict ) # Write the DataFrame to a CSV file df . to_csv ( 'output.csv' index = False )
Wyjściowy plik CSV:
nazwagałęzicgpanarok
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2
Przechowywanie wiadomości e-mail w plikach CSV
Zaczynamy od zaimportowania modułu csv i użycia go do przechowywania nazw i adresów e-mail jako wartości oddzielonych przecinkami. Używając funkcji open() tworzymy plik CSV, a następnie zapisujemy każdy wiersz za pomocą obiektu Writer z oddzielnymi kolumnami na nazwiska i adresy e-mail.
Python # importing the csv module import csv # field names fields = [ 'Name' 'Email' ] # data rows of csv file rows = [ [ 'Nikhil' '[email protected]' ] [ 'Sanchit' '[email protected]' ] [ 'Aditya' '[email protected]' ] [ 'Sagar' '[email protected]' ] [ 'Prateek' '[email protected]' ] [ 'Sahil' '[email protected]' ]] # name of csv file filename = 'email_records.csv' # writing to csv file with open ( filename 'w' ) as csvfile : # creating a csv writer object csvwriter = csv . writer ( csvfile ) # writing the fields csvwriter . writerow ( fields ) # writing the data rows csvwriter . writerows ( rows )
Wyjście:
E-maile w formacie CSV Utwórz quiz