Darbs ar csv failiem programmā Python

Darbs ar csv failiem programmā Python

A CSV fails (komatatdalītās vērtības). ir vienkārša teksta fails, kurā katra rinda apzīmē datu ierakstu un katrā ierakstā esošie lauki ir atdalīti ar komatiem. Tā vienkāršības un lasāmības dēļ to parasti izmanto izklājlapām un datu bāzēm.

Tālāk ir norādītas dažas darbības, kuras mēs veicam, strādājot ar Python CSV failiem programmā Python

CSV faila lasīšana

Lasīšana no CSV faila tiek veikta, izmantojot lasītāja objektu. CSV fails tiek atvērts kā teksta fails ar Python iebūvēto open() funkciju, kas atgriež faila objektu. Šajā piemērā vispirms atveram CSV failu READ režīmā faila objekts tiek pārveidots par objektu csv.reader un notiek tālāka darbība. Kods un detalizēts skaidrojums ir sniegts zemāk.

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

Izvade

Darbs ar csv failiem programmā Python

Iepriekš minētajā piemērā tiek izmantots CSV fails aapl.csv kuru var lejupielādēt no šeit .

Paskaidrojums:

  • ar atvērtu (...) droši atver CSV failu lasīšanas režīmā, izmantojot konteksta pārvaldnieku.
  • csv.reader(csvfile) pārvērš failu par CSV lasītāja objektu.
  • nākamais (csvreader) izvelk pirmo rindu kā kolonnu galvenes.
  • Izvelciet cauri csv lasītājs lai katru rindu (kā sarakstu) pievienotu rindām.
  • Drukājiet kopējo rindu galvenes un pirmās 5 datu rindas formatētā skatā.

CSV failu lasīšana vārdnīcā, izmantojot csv

Mēs varam nolasīt CSV failu vārdnīcā, izmantojot Python csv moduli un csv.DictReader klasi. Šeit ir piemērs:

Pieņemsim, ka mums ir a darbinieki.csv fails un saturs tajā būs:

nosaukums nodaļadzimšanas diena_mēnesis
Džons Smits, Jūlijs
Alise Džonsone oktobrī
Bobs ViljamssFinance janvāris

Piemērs: Tas nolasa katru rindu kā vārdnīcu (galvenes kā taustiņus), pēc tam pievieno to sarakstam .

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  )   

Izvade:

{'name': 'Džons Smits' 'department': 'HR' 'birthday_month': 'Jūlijs'}
{'name': 'Alise Džonsone' 'department': 'IT' 'birthday_month': 'October'}
{'name': 'Bob Williams' 'department': 'Finanšu' 'birthday_month': 'janvāris'}

Paskaidrojums:

  • ar atvērtu (...) atver failu, izmantojot konteksta pārvaldnieku.
  • csv.DictReader(fails) nolasa katru rindu kā vārdnīcu, izmantojot galvenes kā taustiņus.
  • datu_saraksts.append(rinda) katru vārdnīcu saglabā sarakstā.

Notiek rakstīšana CSV failā

Lai rakstītu CSV failā, vispirms atveram CSV failu WRITE režīmā. Faila objekts tiek pārveidots par objektu csv.writer un notiek turpmākās darbības. Kods un detalizēts skaidrojums ir sniegts zemāk.

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   

Paskaidrojums:

  • lauki definē kolonnu galvenes, un rindas satur datus kā sarakstu sarakstu.
  • ar atvērts (... 'w') atver failu rakstīšanas režīmā, izmantojot konteksta pārvaldnieku.
  • csv.writer(csvfile) izveido rakstīšanas objektu rakstīšanai CSV.
  • rakstīšanas rinda (lauki) ieraksta failā galvenes rindu.
  • rakstīšanas rindas (rindas) ieraksta visas datu rindas uzreiz CSV.

Vārdnīcas rakstīšana CSV failā

Lai rakstītu vārdnīcu CSV failā, faila objekts (csvfile) tiek pārveidots par DictWriter objektu. Tālāk ir sniegts detalizēts piemērs ar skaidrojumu un 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  )   

Izvade

Darbs ar csv failiem programmā Pythoncsv failu

Apsveriet, ka CSV fails vienkāršā tekstā izskatās šādi:

universitātes rekordsuniversitātes rekords

Paskaidrojums:

  • ar atvērtu (...) droši atver failu, izmantojot konteksta pārvaldnieku.
  • csv.DictWriter(... ) kartē vārdnīcas atslēgas uz CSV kolonnām.
  • rakstīšanas galvene () raksta kolonnu galvenes.
  • raksti (midikts) raksta visas vārdnīcas kā CSV rindas.

CSV failu lasīšana, izmantojot pandas

Mēs varam lasīt a Python CSV failus ar Pandas, izmantojot pandas.read_csv() funkciju. Šeit ir piemērs:

Pieņemsim, ka mums ir fails darbinieki.csv, un tā saturs būs:

nosaukums nodaļadzimšanas diena_mēnesis
Džons Smits, Jūlijs
Alise Džonsone oktobrī
Bobs ViljamssFinance janvāris

Šajā piemērā pd.read_csv() nolasa CSV failu Pandas DataFrame. Iegūto DataFrame var izmantot dažādiem datu apstrādes un analīzes uzdevumiem.

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

Izvade:

vārda nodaļas dzimšanas diena_mēnesis
0 Džons Smits HR jūlijā
1 Alise Džonsone IT oktobris
2. Bobs Viljamss, finanses, janvāris

Mēs varam piekļūt konkrētu kolonnu filtrēšanas datiem un veikt dažādas darbības, izmantojot pandas DataFrame funkcionalitāti. Piemēram, ja mēs vēlamies piekļūt kolonnai 'name', mēs varam izmantot df['name'].

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

Izvade :

0 Džons Smits
1 Alise Džonsone
2 Bobs Viljamss
Nosaukums: nosaukums dtype: objekts

CSV failu rakstīšana, izmantojot Pandas

Mēs varam izmantot Pandas, lai rakstītu CSV failus. To var izdarīt, izmantojot pd.DataFrame() funkciju. Šajā piemērā Pandas bibliotēka tiek izmantota, lai pārvērstu vārdnīcu sarakstu (mydict) DataFrame, kas attēlo tabulas datus. Pēc tam DataFrame tiek ierakstīts Python CSV failā ar nosaukumu “output.csv”, izmantojot metodi to_csv, izveidojot strukturētu un lasāmu datu failu turpmākai analīzei vai koplietošanai.

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  )   

Izvadīt CSV failu:

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

E-pasta ziņojumu glabāšana CSV failos

Vispirms importējam csv moduli un izmantojam to, lai saglabātu vārdus un e-pasta adreses kā komatu atdalītas vērtības. Izmantojot funkciju open(), mēs izveidojam CSV failu un pēc tam ierakstām katru rindu, izmantojot rakstīšanas objektu ar atsevišķām kolonnām vārdiem un e-pastiem.

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  )   

Izvade:

E-pasti csv formātāE-pasti csv formātā Izveidojiet viktorīnu