Arbeide med csv-filer i Python

Arbeide med csv-filer i Python

EN CSV-fil (Comma Separated Values). er en ren tekstfil der hver linje representerer en datapost og felt i hver post er atskilt med komma. Den brukes ofte til regneark og databaser på grunn av sin enkelhet og lesbarhet.

Nedenfor er noen operasjoner som vi utfører mens vi jobber med Python CSV-filer i Python

Leser en CSV-fil

Lesing fra en CSV-fil gjøres ved å bruke leserobjektet. CSV-filen åpnes som en tekstfil med Pythons innebygde open()-funksjon som returnerer et filobjekt. I dette eksemplet åpner vi først CSV-filen i READ-modus. Filobjektet konverteres til csv.reader-objektet og videre operasjon finner sted. Kode og detaljert forklaring er gitt nedenfor.

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

Produksjon

Arbeide med csv-filer i Python

Eksempelet ovenfor bruker en CSV-fil aapl.csv som kan lastes ned fra her .

Forklaring:

  • med åpen(...) åpner CSV-filen i lesemodus trygt ved hjelp av en kontekstbehandling.
  • csv.reader(csvfil) gjør filen til et CSV-leserobjekt.
  • neste(csvreader) trekker ut den første raden som kolonneoverskrifter.
  • Sløyfe gjennom csvreader å legge til hver rad (som en liste) til rader.
  • Skriv ut totalt radoverskrifter og første 5 datarader i en formatert visning.

Lese CSV-filer i en ordbok med csv

Vi kan lese en CSV-fil inn i en ordbok ved å bruke csv-modulen i Python og csv.DictReader-klassen. Her er et eksempel:

Anta at vi har en ansatte.csv fil og innhold i den vil være:

navnavdelingbursdag_måned
John SmithHR juli
Alice Johnson I oktober
Bob WilliamsFinansJanuar

Eksempel: Dette leser hver rad som en ordbok (overskrifter som nøkler) og legger den til i listen .

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  )   

Produksjon:

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

Forklaring:

  • med åpen(...) åpner filen ved hjelp av en kontekstbehandling.
  • csv.DictReader(fil) leser hver rad som en ordbok ved å bruke overskrifter som taster.
  • data_list.append(row) lagrer hver ordbok i en liste.

Skriver til en CSV-fil

For å skrive til en CSV-fil åpner vi først CSV-filen i WRITE-modus. Filobjektet konverteres til csv.writer-objekt og videre operasjoner finner sted. Kode og detaljert forklaring er gitt nedenfor.

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   

Forklaring:

  • felt definerer kolonneoverskriftene og radene inneholder dataene som en liste over lister.
  • med åpen(... 'w') åpner filen i skrivemodus ved hjelp av en kontekstbehandling.
  • csv.writer(csvfile) oppretter et forfatterobjekt for å skrive til CSV-en.
  • skriverad(felt) skriver overskriftsraden til filen.
  • Writerows (rader) skriver alle datarader til CSV-en samtidig.

Skrive en ordbok til en CSV-fil

For å skrive en ordbok til en CSV-fil konverteres filobjektet (csvfile) til et DictWriter-objekt. Detaljert eksempel med forklaring og kode er gitt nedenfor.

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  )   

Produksjon

Arbeide med csv-filer i Pythoncsv-fil

Tenk på at en CSV-fil ser slik ut i ren tekst:

universitetsrekorduniversitetsrekord

Forklaring:

  • med åpen(...) åpner filen trygt ved hjelp av en kontekstbehandling.
  • csv.DictWriter(... ) tilordner ordboknøkler til CSV-kolonner.
  • skrivehode() skriver kolonneoverskrifter.
  • Writerows (mydict) skriver alle ordbøker som CSV-rader.

Lese CSV-filer med pandaer

Vi kan lese en Python CSV filer med Pandaer som bruker pandas.read_csv() funksjon. Her er et eksempel:

Anta at vi har en ansatte.csv-fil og innholdet i den vil være:

navnavdelingbursdag_måned
John SmithHR juli
Alice Johnson I oktober
Bob WilliamsFinansJanuar

I dette eksemplet leser pd.read_csv() CSV-filen inn i en Pandas DataFrame. Den resulterende DataFrame kan brukes til ulike datamanipulasjons- og analyseoppgaver.

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

Produksjon:

navneavdeling bursdag_måned
0 John Smith HR juli
1 Alice Johnson IT oktober
2 Bob Williams finans januar

Vi kan få tilgang til spesifikke kolonnefiltreringsdata og utføre ulike operasjoner ved å bruke pandas DataFrame-funksjonalitet. For eksempel hvis vi ønsker å få tilgang til 'navn'-kolonnen, kan vi bruke df['navn'].

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

Produksjon :

0 John Smith
1 Alice Johnson
2 Bob Williams
Navn: navn dtype: objekt

Skrive CSV-filer med pandaer

Vi kan bruke Pandas til å skrive CSV-filer. Det kan gjøres ved å bruke pd.DataFrame() funksjon. I dette eksemplet Pandaer bibliotek brukes til å konvertere en liste over ordbøker (mydict) til en DataFrame som representerer tabelldata. DataFrame skrives deretter til en Python CSV-fil kalt 'output.csv' ved å bruke to_csv-metoden for å lage en strukturert og lesbar datafil for videre analyse eller deling.

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  )   

Utdata CSV-fil:

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

Lagre e-poster i CSV-filer

Vi starter med å importere csv-modulen og bruker den til å lagre navn og e-post som kommadelte verdier. Ved å bruke open()-funksjonen lager vi en CSV-fil og skriver deretter hver rad ved å bruke et writer-objekt med separate kolonner for navn og e-post.

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  )   

Produksjon:

E-post i csvE-post i csv Lag quiz