Darbas su csv failais Python

Darbas su csv failais Python

A CSV (kableliais atskirtų reikšmių) failą yra paprasto teksto failas, kuriame kiekviena eilutė žymi duomenų įrašą, o laukai kiekviename įraše yra atskirti kableliais. Dėl savo paprastumo ir skaitomumo jis dažniausiai naudojamas skaičiuoklėms ir duomenų bazėms.

Toliau pateikiamos kelios operacijos, kurias atliekame dirbdami su Python CSV failais Python

CSV failo skaitymas

Skaitymas iš CSV failo atliekamas naudojant skaitymo objektą. CSV failas atidaromas kaip tekstinis failas su Python integruota open() funkcija, kuri grąžina failo objektą. Šiame pavyzdyje pirmiausia atidarome CSV failą READ režimu, failo objektas konvertuojamas į csv.reader objektą ir atliekama tolesnė operacija. Kodas ir išsamus paaiškinimas pateikti žemiau.

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

Išvestis

Darbas su csv failais Python

Aukščiau pateiktame pavyzdyje naudojamas CSV failas aapl.csv iš kurios galima parsisiųsti čia .

Paaiškinimas:

  • su atvira (...) saugiai atidaro CSV failą skaitymo režimu, naudojant konteksto tvarkyklę.
  • csv.reader(csvfile) paverčia failą CSV skaitytuvo objektu.
  • kitas (csvreader) ištraukia pirmąją eilutę kaip stulpelių antraštes.
  • Persukite kilpą csvreader pridėti kiekvieną eilutę (kaip sąrašą) prie eilučių.
  • Suformatuotame rodinyje spausdinkite visų eilučių antraštes ir pirmas 5 duomenų eilutes.

CSV failų skaitymas į žodyną naudojant csv

CSV failą galime perskaityti į žodyną naudodami Python programoje esantį csv modulį ir klasę csv.DictReader. Štai pavyzdys:

Tarkime, kad turime a darbuotojai.csv failas ir turinys jame bus:

vardo skyriaus gimtadienis_mėnesis
Johnas Smithas, liepos mėn
Alice JohnsonITOspalio mėn
Bob WilliamsFinanceSausio mėn

Pavyzdys: Kiekviena eilutė nuskaitoma kaip žodynas (antraštės kaip raktai), tada pridedama prie sąrašo .

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  )   

Išvestis:

{'name': 'John Smith' 'department': 'HR' 'birthday_month': 'Liepos'}
{'name': 'Alice Johnson' 'department': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'department': 'Finance' 'birthday_month': 'Sausis'}

Paaiškinimas:

  • su atvira (...) atidaro failą naudodamas konteksto tvarkyklę.
  • csv.DictReader(failas) skaito kiekvieną eilutę kaip žodyną, naudodamas antraštes kaip klavišus.
  • data_list.append(row) saugo kiekvieną žodyną sąraše.

Rašoma į CSV failą

Norėdami rašyti į CSV failą, pirmiausia atidarome CSV failą WRITE režimu. Failo objektas konvertuojamas į csv.writer objektą ir vyksta tolesnės operacijos. Kodas ir išsamus paaiškinimas pateikti žemiau.

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   

Paaiškinimas:

  • laukus apibrėžia stulpelių antraštes, o eilutėse pateikiami duomenys kaip sąrašų sąrašas.
  • su atidaryti (... 'w') atidaro failą rašymo režimu, naudodamas konteksto tvarkyklę.
  • csv.writer(csvfile) sukuria rašymo objektą, skirtą rašyti į CSV.
  • rašymo eilutė (laukai) į failą įrašo antraštės eilutę.
  • rašymo eilutės (eilutės) iš karto įrašo visas duomenų eilutes į CSV.

Žodyno rašymas į CSV failą

Norint įrašyti žodyną į CSV failą, failo objektas (csvfile) konvertuojamas į DictWriter objektą. Žemiau pateikiamas išsamus pavyzdys su paaiškinimu ir kodu.

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  )   

Išvestis

Darbas su csv failais Pythoncsv failą

Apsvarstykite, kad CSV failas paprastu tekstu atrodo taip:

universiteto rekordasuniversiteto rekordas

Paaiškinimas:

  • su atvira (...) saugiai atidaro failą naudojant konteksto tvarkyklę.
  • csv.DictWriter(... ) susieja žodyno raktus į CSV stulpelius.
  • rašymo antraštė () rašo stulpelių antraštes.
  • raštai (midiktas) rašo visus žodynus kaip CSV eilutes.

CSV failų skaitymas naudojant Pandas

Galime perskaityti a Python CSV failai su Pandas naudojant pandas.read_csv() funkcija. Štai pavyzdys:

Tarkime, kad turime failą darbuotojai.csv, o jo turinys bus:

vardo skyriaus gimtadienis_mėnesis
Johnas Smithas, liepos mėn
Alice JohnsonITOspalio mėn
Bob WilliamsFinanceSausio mėn

Šiame pavyzdyje pd.read_csv() nuskaito CSV failą į Pandas DataFrame. Gautas DataFrame gali būti naudojamas įvairioms duomenų apdorojimo ir analizės užduotims atlikti.

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

Išvestis:

vardo skyriaus gimtadienis_mėnesis
0 John Smith HR liepos mėn
1 Alice Johnson IT Spalio d
2 Bobo Williamso finansai sausio 2 d

Naudodami pandos DataFrame funkcionalumą galime pasiekti konkrečių stulpelių filtravimo duomenis ir atlikti įvairias operacijas. Pavyzdžiui, jei norime pasiekti stulpelį „pavadinimas“, galime naudoti df['name'].

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

Išvestis :

0 Džonas Smitas
1 Alisa Džonson
2 Bobas Williamsas
Vardas: pavadinimas dtype: objektas

CSV failų rašymas naudojant Pandas

CSV failams rašyti galime naudoti Pandas. Tai galima padaryti naudojant pd.DataFrame() funkcija. Šiame pavyzdyje Pandos biblioteka naudojama konvertuoti žodynų sąrašą (mydict) į DataFrame, vaizduojantį lentelės duomenis. Tada „DataFrame“ įrašomas į Python CSV failą pavadinimu „output.csv“, naudojant to_csv metodą, sukuriant struktūrizuotą ir skaitomą duomenų failą tolesnei analizei arba bendrinimui.

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  )   

Išvesties CSV failas:

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

Laiškų saugojimas CSV failuose

Pirmiausia importuojame csv modulį ir naudojame jį vardams ir el. laiškams saugoti kaip kableliais atskirtas reikšmes. Naudodami funkciją open() sukuriame CSV failą ir įrašome kiekvieną eilutę naudodami rašytuvo objektą su atskirais vardų ir el. pašto stulpeliais.

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  )   

Išvestis:

Laiškai csv formatuLaiškai csv formatu Sukurti viktoriną