CSV-fájlok használata Pythonban

CSV-fájlok használata Pythonban

A CSV (vesszővel tagolt értékek) fájl egy egyszerű szöveges fájl, amelyben minden sor egy adatrekordot jelöl, és az egyes rekordokon belüli mezők vesszővel vannak elválasztva. Egyszerűsége és olvashatósága miatt gyakran használják táblázatokhoz és adatbázisokhoz.

Az alábbiakban felsorolunk néhány műveletet, amelyeket Python CSV-fájlokkal való munka közben hajtunk végre

CSV-fájl olvasása

A CSV-fájl olvasása az olvasó objektum használatával történik. A CSV-fájl szövegfájlként nyílik meg a Python beépített open() függvényével, amely egy fájlobjektumot ad vissza. Ebben a példában először megnyitjuk a CSV-fájlt OLVASÁS módban. A kód és a részletes magyarázat alább található.

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

Kimenet

CSV-fájlok használata Pythonban

A fenti példa CSV-fájlt használ aapl.csv amelyről letölthető itt .

Magyarázat:

  • nyitott (...) biztonságosan megnyitja a CSV-fájlt olvasási módban egy környezetkezelő segítségével.
  • csv.reader(csvfile) a fájlt CSV-olvasó objektummá alakítja.
  • következő(csvreader) kibontja az első sort oszlopfejlécként.
  • Hurok át csvreader az egyes sorok (listaként) sorokhoz fűzéséhez.
  • Nyomtassa ki az összes sor fejlécét és az első 5 adatsort formázott nézetben.

CSV-fájlok olvasása szótárba csv-vel

CSV-fájlt a Python csv-moduljával és a csv.DictReader osztályával tudunk szótárba olvasni. Íme egy példa:

Tegyük fel, hogy van egy alkalmazottak.csv a fájl és a benne lévő tartalom a következő lesz:

névosztályszületésnap_hónap
John SmithHRJúlius
Alice JohnsonITOoktóber
Bob Williams Pénzügy január

Példa: Ez minden sort szótárként olvas be (a fejléceket kulcsként), majd hozzáfűzi a listához.

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  )   

Kimenet:

{'name': 'John Smith' 'részleg': 'HR' 'birthday_month': 'Július'}
{'name': 'Alice Johnson' 'részleg': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'részleg': 'Pénzügy' 'birthday_month': 'január'}

Magyarázat:

  • nyitott (...) megnyitja a fájlt egy környezetkezelővel.
  • csv.DictReader(fájl) minden sort szótárként olvas, fejléceket használva kulcsként.
  • data_list.append(row) minden szótárat egy listában tárol.

Írás CSV-fájlba

CSV-fájlba íráshoz először ÍRÁS módban nyissuk meg a CSV-fájlt. A fájlobjektum csv.writer objektummá konvertálódik, és további műveletek zajlanak. A kód és a részletes magyarázat alább található.

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   

Magyarázat:

  • mezőket meghatározza az oszlopfejléceket, a sorok pedig listákként tartalmazzák az adatokat.
  • -vel nyitott (... 'w') írási módban nyitja meg a fájlt egy környezetkezelő segítségével.
  • csv.writer(csvfile) létrehoz egy író objektumot a CSV-be íráshoz.
  • írássor(mezők) beírja a fejléc sort a fájlba.
  • írássorok (sorok) az összes adatsort egyszerre írja a CSV-be.

Szótár írása CSV-fájlba

Szótár CSV-fájlba írásához a fájlobjektumot (csvfile) a rendszer DictWriter objektummá alakítja. A részletes példa magyarázattal és kóddal alább található.

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  )   

Kimenet

CSV-fájlok használata Pythonbancsv fájl

Tegyük fel, hogy egy CSV-fájl egyszerű szövegben így néz ki:

egyetemi rekordegyetemi rekord

Magyarázat:

  • nyitott (...) biztonságosan megnyitja a fájlt egy környezetkezelő segítségével.
  • csv.DictWriter(... ) leképezi a szótár kulcsait CSV oszlopokra.
  • írásfejléc() oszlopfejléceket ír.
  • írások (mydict) minden szótárat CSV-sorként ír.

CSV-fájlok olvasása Pandákkal

Olvashatunk a Python CSV fájlokat a Pandákkal pandas.read_csv() funkció. Íme egy példa:

Tegyük fel, hogy van dolgozók.csv fájlunk, és a benne lévő tartalom a következő lesz:

névosztályszületésnap_hónap
John SmithHRJúlius
Alice JohnsonITOoktóber
Bob Williams Pénzügy január

Ebben a példában a pd.read_csv() beolvassa a CSV-fájlt egy Pandas DataFrame-be. Az így kapott DataFrame különféle adatkezelési és -elemzési feladatokhoz használható.

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

Kimenet:

név osztály születésnap_hónap
0 John Smith HR július
1 Alice Johnson IT október
2 Bob Williams Pénzügy január

A pandas DataFrame funkció segítségével elérhetjük az egyes oszlopok szűrési adatait, és különféle műveleteket hajthatunk végre. Például, ha el akarjuk érni a 'név' oszlopot, használhatjuk a df['name'] parancsot.

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

Kimenet :

0 Kovács János
1 Alice Johnson
2 Bob Williams
Név: név dtype: objektum

CSV-fájlok írása Pandákkal

A Pandas segítségével CSV-fájlokat írhatunk. Használatával meg lehet tenni pd.DataFrame() funkció. Ebben a példában a Pandák A könyvtár a szótárak listájának (mydict) átalakítására szolgál táblázatos adatokat reprezentáló DataFrame-mé. A DataFrame ezután egy „output.csv” nevű Python CSV-fájlba kerül a to_csv metódussal, így strukturált és olvasható adatfájl jön létre további elemzéshez vagy megosztáshoz.

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  )   

Kimeneti CSV-fájl:

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

E-mailek tárolása CSV-fájlokban

Kezdjük a csv modul importálásával, és arra használjuk, hogy neveket és e-maileket vesszővel elválasztott értékekként tároljunk. Az open() függvénnyel létrehozunk egy CSV fájlt, majd minden sort írunk egy író objektum segítségével, külön oszlopokkal a nevek és e-mail címek számára.

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  )   

Kimenet:

E-mailek csv-benE-mailek csv-ben Kvíz létrehozása