Työskentely csv-tiedostojen kanssa Pythonissa

Työskentely csv-tiedostojen kanssa Pythonissa

A CSV (Comma Separated Values) -tiedosto on pelkkä tekstitiedosto, jossa jokainen rivi edustaa tietotietuetta ja jokaisen tietueen kentät on erotettu pilkuilla. Sitä käytetään yleisesti laskentataulukoissa ja tietokantoissa sen yksinkertaisuuden ja luettavuuden vuoksi.

Alla on joitain toimintoja, joita suoritamme työskennellessämme Python CSV -tiedostojen kanssa Pythonissa

CSV-tiedoston lukeminen

CSV-tiedostosta lukeminen tapahtuu lukuobjektin avulla. CSV-tiedosto avataan tekstitiedostona Pythonin sisäänrakennetulla open()-funktiolla, joka palauttaa tiedostoobjektin. Tässä esimerkissä avataan ensin CSV-tiedosto READ-tilassa tiedostoobjekti muunnetaan csv.reader-objektiksi ja suoritetaan jatkotoimenpiteitä. Koodi ja yksityiskohtainen selitys annetaan alla.

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

Lähtö

Työskentely csv-tiedostojen kanssa Pythonissa

Yllä oleva esimerkki käyttää CSV-tiedostoa aapl.csv josta voi ladata tässä .

Selitys:

  • auki (...) avaa CSV-tiedoston lukutilassa turvallisesti kontekstinhallinnan avulla.
  • csv.reader(csvfile) muuttaa tiedoston CSV-lukijaobjektiksi.
  • seuraava (csvreader) poimii ensimmäisen rivin sarakeotsikoiksi.
  • Kierrä läpi csv-lukija liittääksesi jokaisen rivin (luettelona) riveihin.
  • Tulosta kokonaisrivien otsikot ja ensimmäiset 5 tietoriviä muotoillussa näkymässä.

CSV-tiedostojen lukeminen sanakirjaksi csv:llä

Pythonin csv-moduulin ja csv.DictReader-luokan avulla voimme lukea CSV-tiedoston sanakirjaan. Tässä on esimerkki:

Oletetaan, että meillä on a työntekijät.csv tiedosto ja sen sisällä oleva sisältö ovat:

nimiosastosyntymäpäivä_kuukausi
John SmithHRheinäkuu
Alice JohnsonITOlokakuu
Bob WilliamsFinance tammikuussa

Esimerkki: Tämä lukee jokaisen rivin sanakirjana (otsikot avaimina) ja lisää sen sitten luetteloon.

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  )   

Lähtö:

{'name': 'John Smith' 'osasto': 'HR' 'birthday_month': 'Heinäkuu'}
{'name': 'Alice Johnson' 'osasto': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'osasto': 'Rahoitus' 'birthday_month': 'Tammikuu'}

Selitys:

  • auki (...) avaa tiedoston kontekstinhallinnan avulla.
  • csv.DictReader(tiedosto) lukee jokaisen rivin sanakirjana käyttämällä otsikoita avaimina.
  • data_list.append(row) tallentaa jokaisen sanakirjan luetteloon.

Kirjoitetaan CSV-tiedostoon

Kirjoittaaksesi CSV-tiedostoon avaamme ensin CSV-tiedoston WRITE-tilassa. Tiedostoobjekti muunnetaan csv.writer-objektiksi ja tehdään lisätoimintoja. Koodi ja yksityiskohtainen selitys annetaan alla.

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   

Selitys:

  • kentät määrittää sarakeotsikot ja rivit sisältävät tiedot luetteloina.
  • kanssa auki (... 'w') avaa tiedoston kirjoitustilassa kontekstinhallinnan avulla.
  • csv.writer(csv-tiedosto) luo kirjoitusobjektin CSV-tiedostoon kirjoittamista varten.
  • kirjoitusrivi(kentät) kirjoittaa otsikkorivin tiedostoon.
  • kirjoitusrivit (rivit) kirjoittaa kaikki tietorivit CSV-tiedostoon kerralla.

Sanakirjan kirjoittaminen CSV-tiedostoon

Sanakirjan kirjoittamiseksi CSV-tiedostoon tiedostoobjekti (csvfile) muunnetaan DictWriter-objektiksi. Yksityiskohtainen esimerkki selityksineen ja koodiineen annetaan alla.

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  )   

Lähtö

Työskentely csv-tiedostojen kanssa Pythonissacsv-tiedosto

Oletetaan, että CSV-tiedosto näyttää tältä pelkkänä tekstinä:

yliopiston ennätysyliopiston ennätys

Selitys:

  • auki (...) avaa tiedoston turvallisesti kontekstinhallinnan avulla.
  • csv.DictWriter(... ) yhdistää sanakirjan avaimet CSV-sarakkeisiin.
  • kirjoitusotsikko() kirjoittaa sarakkeiden otsikot.
  • kirjoitukset (mydict) kirjoittaa kaikki sanakirjat CSV-riveinä.

CSV-tiedostojen lukeminen Pandoilla

Voimme lukea a Python CSV tiedostot Pandalla käyttäen pandas.read_csv() toiminto. Tässä on esimerkki:

Oletetaan, että meillä on työntekijät.csv-tiedosto ja sen sisältämä sisältö on:

nimiosastosyntymäpäivä_kuukausi
John SmithHRheinäkuu
Alice JohnsonITOlokakuu
Bob WilliamsFinance tammikuussa

Tässä esimerkissä pd.read_csv() lukee CSV-tiedoston Pandas DataFrame -kehykseen. Tuloksena olevaa DataFramea voidaan käyttää erilaisiin tietojen käsittely- ja analysointitehtäviin.

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

Lähtö:

nimi osasto syntymäpäivä_kuukausi
0 John Smith HR heinäkuu
1 Alice Johnson IT lokakuu
2 Bob Williams Finance tammikuuta

Voimme käyttää tiettyjä sarakkeiden suodatustietoja ja suorittaa erilaisia ​​​​toimintoja käyttämällä panda DataFrame -toimintoa. Jos esimerkiksi haluamme päästä 'nimi'-sarakkeeseen, voimme käyttää df['nimi'].

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

Lähtö :

0 John Smith
1 Alice Johnson
2 Bob Williams
Nimi: nimi dtype: objekti

CSV-tiedostojen kirjoittaminen Pandan kanssa

Voimme käyttää Pandaja CSV-tiedostojen kirjoittamiseen. Se voidaan tehdä käyttämällä pd.DataFrame() toiminto. Tässä esimerkissä Pandat kirjastoa käytetään sanakirjojen luettelon (mydict) muuntamiseen DataFrame-kehykseksi, joka edustaa taulukkotietoja. DataFrame kirjoitetaan sitten Python CSV -tiedostoon nimeltä "output.csv" käyttämällä to_csv-menetelmää, jolloin luodaan jäsennelty ja luettava tietotiedosto jatkoanalyysiä tai jakamista varten.

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  )   

Tulosta CSV-tiedosto:

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

Sähköpostien tallentaminen CSV-tiedostoihin

Aloitamme tuomalla csv-moduulin ja tallennamme siihen nimet ja sähköpostit pilkuilla erotettuina arvoina. Luomme open()-funktion avulla CSV-tiedoston ja kirjoitamme sitten jokaisen rivin käyttämällä kirjoitusobjektia, jossa on erilliset sarakkeet nimille ja sähköpostiosoitteille.

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  )   

Lähtö:

Sähköpostit csv-muodossaSähköpostit csv-muodossa Luo tietokilpailu