Delo z datotekami csv v Pythonu

Delo z datotekami csv v Pythonu

A Datoteka CSV (vrednosti, ločene z vejico). je datoteka z navadnim besedilom, kjer vsaka vrstica predstavlja podatkovni zapis, polja znotraj vsakega zapisa pa so ločena z vejicami. Zaradi svoje preprostosti in berljivosti se pogosto uporablja za preglednice in zbirke podatkov.

Spodaj je nekaj operacij, ki jih izvajamo med delom z datotekami Python CSV v Pythonu

Branje datoteke CSV

Branje iz datoteke CSV poteka z uporabo predmeta reader. Datoteka CSV se odpre kot besedilna datoteka z vgrajeno Pythonovo funkcijo open(), ki vrne predmet datoteke. V tem primeru najprej odpremo datoteko CSV v načinu READ, datotečni objekt se pretvori v objekt csv.reader in izvede se nadaljnja operacija. Koda in podrobna razlaga sta podani spodaj.

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

Izhod

Delo z datotekami csv v Pythonu

Zgornji primer uporablja datoteko CSV aapl.csv ki jih je mogoče prenesti s tukaj .

Pojasnilo:

  • z odprtim (...) varno odpre datoteko CSV v načinu branja z upraviteljem konteksta.
  • csv.reader(csvfile) spremeni datoteko v predmet bralnika CSV.
  • naslednji (csvreader) ekstrahira prvo vrstico kot naslove stolpcev.
  • Skozi zanko csvreader da dodate vsako vrstico (kot seznam) vrsticam.
  • Natisni skupne glave vrstic in prvih 5 podatkovnih vrstic v oblikovanem pogledu.

Branje datotek CSV v slovar s csv

Datoteko CSV lahko preberemo v slovar z uporabo modula csv v Pythonu in razreda csv.DictReader. Tukaj je primer:

Recimo, da imamo a zaposleni.csv datoteka in vsebina v njej bosta:

imeoddelkarojstni_dan_mesec
John SmithHRJulij
Alice Johnson oktober
Bob WilliamsFinanceJanuar

primer: To prebere vsako vrstico kot slovar (glave kot ključe), nato pa jo doda seznamu.

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  )   

Izhod:

{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'julij'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'oktober'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'januar'}

Pojasnilo:

  • z odprtim (...) odpre datoteko z upraviteljem konteksta.
  • csv.DictReader(datoteka) prebere vsako vrstico kot slovar z uporabo glav kot ključev.
  • data_list.append(vrstica) shrani vsak slovar na seznam.

Pisanje v datoteko CSV

Za pisanje v datoteko CSV najprej odpremo datoteko CSV v načinu WRITE. Objekt datoteke se pretvori v objekt csv.writer in izvedejo se nadaljnje operacije. Koda in podrobna razlaga sta podani spodaj.

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   

Pojasnilo:

  • polja definira glave stolpcev in vrstice, ki vsebujejo podatke kot seznam seznamov.
  • z odprto (... 'w') odpre datoteko v načinu pisanja z upraviteljem konteksta.
  • csv.writer(csvfile) ustvari pisalni objekt za pisanje v CSV.
  • writerow(polja) zapiše naslovno vrstico v datoteko.
  • pisne vrstice (vrstice) zapiše vse podatkovne vrstice v CSV hkrati.

Pisanje slovarja v datoteko CSV

Za pisanje slovarja v datoteko CSV se objekt datoteke (csvfile) pretvori v objekt DictWriter. Podroben primer z razlago in kodo je podan spodaj.

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  )   

Izhod

Delo z datotekami csv v Pythonucsv datoteko

Upoštevajte, da je datoteka CSV v navadnem besedilu videti takole:

univerzitetni zapisuniverzitetni zapis

Pojasnilo:

  • z odprtim (...) varno odpre datoteko z upraviteljem konteksta.
  • csv.DictWriter(... ) preslika slovarske ključe v stolpce CSV.
  • pisna glava() piše naslove stolpcev.
  • writerows(mydict) zapiše vse slovarje kot vrstice CSV.

Branje datotek CSV s Pandas

Lahko preberemo a Python CSV datoteke z uporabo Pandas pandas.read_csv() funkcijo. Tukaj je primer:

Recimo, da imamo datoteko zaposlenih.csv in vsebina v njej bo:

imeoddelkarojstni_dan_mesec
John SmithHRJulij
Alice Johnson oktober
Bob WilliamsFinanceJanuar

V tem primeru pd.read_csv() prebere datoteko CSV v Pandas DataFrame. Nastali DataFrame se lahko uporablja za različne naloge obdelave podatkov in analize.

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

Izhod:

ime oddelka rojstni dan_mesec
0 John Smith HR julij
1 Alice Johnson IT oktober
2. Bob Williams Finance januar

S funkcijo pandas DataFrame lahko dostopamo do podatkov filtriranja določenih stolpcev in izvajamo različne operacije. Na primer, če želimo dostopati do stolpca 'name', lahko uporabimo df['name'].

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

Izhod :

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

Pisanje datotek CSV s Pandas

Pande lahko uporabimo za pisanje datotek CSV. To je mogoče storiti z uporabo pd.DataFrame() funkcijo. V tem primeru je Pande knjižnica se uporablja za pretvorbo seznama slovarjev (mydict) v DataFrame, ki predstavlja tabelarične podatke. DataFrame se nato zapiše v datoteko Python CSV z imenom 'output.csv' z uporabo metode to_csv, ki ustvari strukturirano in berljivo podatkovno datoteko za nadaljnjo analizo ali skupno rabo.

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  )   

Izhodna datoteka CSV:

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

Shranjevanje e-pošte v datoteke CSV

Začnemo z uvozom modula csv in ga uporabimo za shranjevanje imen in e-poštnih naslovov kot vrednosti, ločenih z vejico. S funkcijo open() ustvarimo datoteko CSV in nato vsako vrstico zapišemo s predmetom pisca z ločenimi stolpci za imena in e-poštna sporočila.

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  )   

Izhod:

E-pošta v csvE-pošta v csv Ustvari kviz