Rad s csv datotekama u Pythonu

Rad s csv datotekama u Pythonu

A CSV (vrijednosti odvojene zarezima) datoteka je obična tekstualna datoteka u kojoj svaki redak predstavlja zapis podataka, a polja unutar svakog zapisa odvojena su zarezima. Obično se koristi za proračunske tablice i baze podataka zbog svoje jednostavnosti i čitljivosti.

Ispod su neke operacije koje izvodimo tijekom rada s Python CSV datotekama u Pythonu

Čitanje CSV datoteke

Čitanje iz CSV datoteke vrši se pomoću objekta čitača. CSV datoteka otvara se kao tekstualna datoteka s Pythonovom ugrađenom funkcijom open() koja vraća objekt datoteke. U ovom primjeru prvo otvaramo CSV datoteku u načinu rada READ, objekt datoteke pretvara se u objekt csv.reader i odvija se daljnja operacija. Kod i detaljno objašnjenje dani su u nastavku.

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

Izlaz

Rad s csv datotekama u Pythonu

Gornji primjer koristi CSV datoteku aapl.csv koji se može preuzeti sa ovdje .

Obrazloženje:

  • s otvorenim (...) otvara CSV datoteku u načinu čitanja sigurno pomoću upravitelja konteksta.
  • csv.čitač(csvdatoteka) pretvara datoteku u objekt čitača CSV-a.
  • sljedeći (csvreader) izdvaja prvi redak kao zaglavlja stupaca.
  • Prođite kroz petlju csvreader za dodavanje svakog retka (kao popisa) redovima.
  • Ispis ukupnih zaglavlja redaka i prvih 5 podatkovnih redaka u formatiranom prikazu.

Čitanje CSV datoteka u rječnik pomoću csv

Možemo pročitati CSV datoteku u rječnik pomoću csv modula u Pythonu i klase csv.DictReader. Evo primjera:

Pretpostavimo da imamo a zaposlenici.csv datoteka i sadržaj unutar nje bit će:

ime odjela rođendan_mjesec
John SmithHR Srpanj
Alice JohnsonITO listopad
Bob WilliamsFinancesiječanj

Primjer: Ovo čita svaki redak kao rječnik (zaglavlja kao ključeve), a zatim ga dodaje popisu.

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  )   

Izlaz:

{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'srpanj'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'listopad'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'siječanj'}

Obrazloženje:

  • s otvorenim (...) otvara datoteku pomoću upravitelja konteksta.
  • csv.DictReader(datoteka) čita svaki redak kao rječnik koristeći zaglavlja kao ključeve.
  • popis_podataka.dodaj(redak) pohranjuje svaki rječnik na popis.

Zapisivanje u CSV datoteku

Za pisanje u CSV datoteku najprije otvorimo CSV datoteku u WRITE modu. Objekt datoteke pretvara se u objekt csv.writer i odvijaju se daljnje operacije. Kod i detaljno objašnjenje dani su u nastavku.

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   

Obrazloženje:

  • polja definira zaglavlja stupaca i retke sadrži podatke kao popis popisa.
  • s otvoriti (... 'w') otvara datoteku u načinu pisanja pomoću upravitelja konteksta.
  • csv.writer(csvfile) stvara objekt pisca za pisanje u CSV.
  • redak za pisanje (polja) zapisuje redak zaglavlja u datoteku.
  • pisci (redovi) zapisuje sve retke podataka u CSV odjednom.

Pisanje rječnika u CSV datoteku

Za pisanje rječnika u CSV datoteku objekt datoteke (csvfile) pretvara se u objekt DictWriter. Detaljan primjer s objašnjenjem i kodom dan je u nastavku.

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  )   

Izlaz

Rad s csv datotekama u Pythonucsv datoteka

Uzmite u obzir da CSV datoteka izgleda ovako u običnom tekstu:

sveučilišni rekordsveučilišni rekord

Obrazloženje:

  • s otvorenim (...) sigurno otvara datoteku pomoću upravitelja konteksta.
  • csv.DictWriter(... ) preslikava ključeve rječnika u CSV stupce.
  • zaglavlje pisanja() piše zaglavlja stupaca.
  • writerows(mydict) zapisuje sve rječnike kao CSV retke.

Čitanje CSV datoteka s Pandama

Možemo pročitati a Python CSV datoteke pomoću Panda pandas.read_csv() funkcija. Evo primjera:

Pretpostavimo da imamo datoteku zaposlenih.csv i sadržaj unutar nje će biti:

ime odjela rođendan_mjesec
John SmithHR Srpanj
Alice JohnsonITO listopad
Bob WilliamsFinancesiječanj

U ovom primjeru pd.read_csv() čita CSV datoteku u Pandas DataFrame. Rezultirajući DataFrame može se koristiti za različite zadatke manipulacije podacima i analize.

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

Izlaz:

naziv odjel rođendan_mjesec
0 John Smith HR srpnja
1 Alice Johnson IT listopad
2 Bob Williams Financije Siječanj

Možemo pristupiti podacima filtriranja određenih stupaca i izvoditi razne operacije pomoću funkcionalnosti pandas DataFrame. Na primjer, ako želimo pristupiti stupcu 'name' možemo koristiti df['name'].

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

Izlaz :

0 John Smith
1 Alice Johnson
2 Bob Williams
Ime: ime dtip: objekt

Pisanje CSV datoteka s Pandas

Pande možemo koristiti za pisanje CSV datoteka. To se može učiniti korištenjem pd.DataFrame() funkcija. U ovom primjeru Pande biblioteka se koristi za pretvaranje popisa rječnika (mydict) u DataFrame koji predstavlja tablične podatke. DataFrame se zatim zapisuje u Python CSV datoteku pod nazivom 'output.csv' pomoću metode to_csv stvarajući strukturiranu i čitljivu podatkovnu datoteku za daljnju analizu ili dijeljenje.

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  )   

Izlazna CSV datoteka:

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

Pohranjivanje e-pošte u CSV datoteke

Počinjemo s uvozom csv modula i koristimo ga za pohranjivanje imena i e-mailova kao vrijednosti odvojenih zarezom. Pomoću funkcije open() stvaramo CSV datoteku i zatim pišemo svaki red pomoću objekta pisca s odvojenim stupcima za imena i adrese e-pošte.

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  )   

Izlaz:

E-poruke u csvE-poruke u csv Napravi kviz