Praca z plikami CSV w Pythonie

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

Praca z plikami CSV w Pythonie

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

Praca z plikami CSV w Pythonieplik csv

Weź pod uwagę, że plik CSV wygląda tak w postaci zwykłego tekstu:

rekord uniwersyteckirekord 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 CSVE-maile w formacie CSV Utwórz quiz