Práca so súbormi csv v Pythone

Práca so súbormi csv v Pythone

A Súbor CSV (Comma Separated Values). je obyčajný textový súbor, kde každý riadok predstavuje dátový záznam a polia v každom zázname sú oddelené čiarkami. Bežne sa používa pre tabuľky a databázy kvôli svojej jednoduchosti a čitateľnosti.

Nižšie sú uvedené niektoré operácie, ktoré vykonávame pri práci so súbormi Python CSV v Pythone

Čítanie súboru CSV

Čítanie zo súboru CSV sa vykonáva pomocou objektu reader. Súbor CSV sa otvorí ako textový súbor so vstavanou funkciou open() Pythonu, ktorá vráti objekt súboru. V tomto príklade najprv otvoríme súbor CSV v režime READ objekt súboru sa skonvertuje na objekt csv.reader a prebehne ďalšia operácia. Kód a podrobné vysvetlenie je uvedené nižšie.

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  '  )   

Výstup

Práca so súbormi csv v Pythone

Vyššie uvedený príklad používa súbor CSV aapl.csv z ktorej sa dá stiahnuť tu .

Vysvetlenie:

  • s otvoreným (...) bezpečne otvorí súbor CSV v režime čítania pomocou kontextového manažéra.
  • csv.reader(csvfile) zmení súbor na objekt čítačky CSV.
  • ďalší(csvreader) extrahuje prvý riadok ako hlavičky stĺpcov.
  • Prejdite cez slučku csvreader pridať každý riadok (ako zoznam) k riadkom.
  • Vytlačte hlavičky celkového počtu riadkov a prvých 5 riadkov s údajmi vo formátovanom zobrazení.

Čítanie súborov CSV do slovníka s csv

Súbor CSV môžeme načítať do slovníka pomocou modulu csv v Pythone a triedy csv.DictReader. Tu je príklad:

Predpokladajme, že máme a zamestnanci.csv súbor a obsah v ňom budú:

namedepartmentbirthday_month
John SmithHRJúl
Alice JohnsonITOktóber
Bob Williams Finance Január

Príklad: Toto prečíta každý riadok ako slovník (hlavičky ako kľúče) a potom ho pripojí k zoznamu .

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  )   

výstup:

{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'Júl'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'Október'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'Január'}

Vysvetlenie:

  • s otvoreným (...) otvorí súbor pomocou kontextového manažéra.
  • csv.DictReader(súbor) prečíta každý riadok ako slovník s použitím hlavičiek ako kľúčov.
  • data_list.append(riadok) ukladá každý slovník do zoznamu.

Zápis do súboru CSV

Aby sme mohli zapisovať do súboru CSV, najprv súbor CSV otvoríme v režime WRITE. Objekt súboru sa skonvertuje na objekt csv.writer a prebiehajú ďalšie operácie. Kód a podrobné vysvetlenie je uvedené nižšie.

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   

Vysvetlenie:

  • poliach definuje hlavičky stĺpcov a riadky obsahuje údaje ako zoznam zoznamov.
  • s otvoriť (... 'w') otvorí súbor v režime zápisu pomocou kontextového manažéra.
  • csv.writer(csvfile) vytvorí objekt Writer na zápis do CSV.
  • writerow(polia) zapíše riadok hlavičky do súboru.
  • spisovatelia (riadky) zapíše všetky dátové riadky do CSV naraz.

Zápis slovníka do súboru CSV

Ak chcete zapísať slovník do súboru CSV, objekt súboru (csvfile) sa skonvertuje na objekt DictWriter. Podrobný príklad s vysvetlením a kódom je uvedený nižšie.

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  )   

Výstup

Práca so súbormi csv v Pythonecsv súbor

Zvážte, že súbor CSV vyzerá ako obyčajný text takto:

univerzitný záznamuniverzitný záznam

Vysvetlenie:

  • s otvoreným (...) bezpečne otvorí súbor pomocou kontextového manažéra.
  • csv.DictWriter(... ) mapuje kľúče slovníka na stĺpce CSV.
  • writeheader() píše hlavičky stĺpcov.
  • spisovatelia (mydict) zapíše všetky slovníky ako riadky CSV.

Čítanie súborov CSV s Pandami

Môžeme čítať a Python CSV súbory s použitím Pandas pandas.read_csv() funkciu. Tu je príklad:

Predpokladajme, že máme súbor staff.csv a obsah v ňom bude:

namedepartmentbirthday_month
John SmithHRJúl
Alice JohnsonITOktóber
Bob Williams Finance Január

V tomto príklade pd.read_csv() načíta súbor CSV do Pandas DataFrame. Výsledný DataFrame možno použiť na rôzne úlohy manipulácie s údajmi a analýzy.

Python
   import   pandas   as   pd   # Read the CSV file into a DataFrame   df   =   pd  .  read_csv  (  'employees.csv'  )   # Display the DataFrame   print  (  df  )   

výstup:

názov oddelenia narodeniny_mesiac
0 John Smith HR Júl
1 Alice Johnson IT október
2 Bob Williams Finance Január

Pomocou funkcie pandas DataFrame môžeme pristupovať k špecifickým stĺpcom, filtrovať dáta a vykonávať rôzne operácie. Napríklad, ak chceme získať prístup k stĺpcu 'name', môžeme použiť df['name'].

Python
   # Access the 'name' column   names   =   df  [  'name'  ]   print  (  names  )   

Výstup :

0 John Smith
1 Alice Johnsonová
2 Bob Williams
Name: name dtype: object

Písanie CSV súborov s Pandas

Pandy môžeme použiť na písanie CSV súborov. Dá sa to urobiť pomocou pd.DataFrame() funkciu. V tomto príklade pandy knižnica sa používa na konverziu zoznamu slovníkov (mydict) do DataFrame reprezentujúceho tabuľkové údaje. DataFrame sa potom zapíše do súboru Python CSV s názvom „output.csv“ pomocou metódy to_csv, čím sa vytvorí štruktúrovaný a čitateľný súbor údajov na ďalšiu analýzu alebo zdieľanie.

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  )   

Výstupný súbor CSV:

branchcgpannamerok
COE9.0Nikhil2
COE9.1Sanchit2
IT9.3Aditya2
SE9.5Sagar1
MCE7.8Prateek3
EP9.1Sahil2

Ukladanie e-mailov do súborov CSV

Začneme importovaním modulu csv a použijeme ho na ukladanie mien a e-mailov ako hodnoty oddelené čiarkou. Pomocou funkcie open() vytvoríme súbor CSV a potom napíšeme každý riadok pomocou objektu Writer so samostatnými stĺpcami pre mená a e-maily.

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  )   

výstup:

E-maily vo formáte csvE-maily vo formáte csv Vytvoriť kvíz