Arbeta med csv-filer i Python

Arbeta med csv-filer i Python

A CSV-fil (Comma Separated Values). är en vanlig textfil där varje rad representerar en datapost och fält inom varje post separeras med kommatecken. Det används ofta för kalkylblad och databaser på grund av dess enkelhet och läsbarhet.

Nedan är några operationer som vi utför när vi arbetar med Python CSV-filer i Python

Läser en CSV-fil

Läsning från en CSV-fil görs med hjälp av reader-objektet. CSV-filen öppnas som en textfil med Pythons inbyggda open()-funktion som returnerar ett filobjekt. I det här exemplet öppnar vi först CSV-filen i READ-läge. Filobjektet konverteras till csv.reader-objektet och ytterligare operation sker. Kod och detaljerad förklaring ges nedan.

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

Produktion

Arbeta med csv-filer i Python

Ovanstående exempel använder en CSV-fil aapl.csv som kan laddas ner från här .

Förklaring:

  • med öppen(...) öppnar CSV-filen i läsläge på ett säkert sätt med hjälp av en kontexthanterare.
  • csv.reader(csvfile) omvandlar filen till ett CSV-läsarobjekt.
  • nästa(csvreader) extraherar den första raden som kolumnrubriker.
  • Slinga igenom csvreader för att lägga till varje rad (som en lista) till rader.
  • Skriv ut totala radrubriker och första 5 datarader i en formaterad vy.

Läsa CSV-filer i en ordbok med csv

Vi kan läsa in en CSV-fil i en ordbok med hjälp av csv-modulen i Python och klassen csv.DictReader. Här är ett exempel:

Anta att vi har en anställda.csv fil och innehåll i den kommer att vara:

namndepartmentbirthday_month
John SmithHR juli
Alice Johnson I oktober
Bob Williams Ekonomi januari

Exempel: Detta läser varje rad som en ordbok (rubriker som nycklar) och lägger sedan till den i listan .

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  )   

Produktion:

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

Förklaring:

  • med öppen(...) öppnar filen med en kontexthanterare.
  • csv.DictReader(fil) läser varje rad som en ordbok med rubriker som nycklar.
  • data_list.append(row) lagrar varje ordbok i en lista.

Skriver till en CSV-fil

För att skriva till en CSV-fil öppnar vi först CSV-filen i WRITE-läge. Filobjektet konverteras till csv.writer-objekt och ytterligare operationer sker. Kod och detaljerad förklaring ges nedan.

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   

Förklaring:

  • fält definierar kolumnrubriker och rader innehåller data som en lista med listor.
  • med öppen(... 'w') öppnar filen i skrivläge med hjälp av en kontexthanterare.
  • csv.writer(csvfile) skapar ett skribentobjekt för att skriva till CSV.
  • Writerow(fields) skriver rubrikraden till filen.
  • Writerows (rader) skriver alla datarader till CSV på en gång.

Skriva en ordbok till en CSV-fil

För att skriva en ordbok till en CSV-fil konverteras filobjektet (csvfile) till ett DictWriter-objekt. Detaljerat exempel med förklaring och kod ges nedan.

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  )   

Produktion

Arbeta med csv-filer i Pythoncsv-fil

Tänk på att en CSV-fil ser ut så här i vanlig text:

universitetsrekorduniversitetsrekord

Förklaring:

  • med öppen(...) öppnar filen säkert med en kontexthanterare.
  • csv.DictWriter(... ) mappar ordboksnycklar till CSV-kolumner.
  • skrivhuvud() skriver kolumnrubriker.
  • Writerows (mydict) skriver alla ordböcker som CSV-rader.

Läser CSV-filer med pandor

Vi kan läsa en Python CSV filer med Pandas som använder pandas.read_csv() fungera. Här är ett exempel:

Anta att vi har en anställda.csv-fil och innehållet i den kommer att vara:

namndepartmentbirthday_month
John SmithHR juli
Alice Johnson I oktober
Bob Williams Ekonomi januari

I det här exemplet läser pd.read_csv() CSV-filen till en Pandas DataFrame. Den resulterande DataFrame kan användas för olika datamanipulerings- och analysuppgifter.

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

Produktion:

namnavdelning födelsedag_månad
0 John Smith HR juli
1 Alice Johnson IT oktober
2 Bob Williams Finans januari

Vi kan komma åt specifika kolumner filtrera data och utföra olika operationer med pandas DataFrame-funktionalitet. Om vi ​​till exempel vill komma åt kolumnen 'namn' kan vi använda df['namn'].

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

Produktion :

0 John Smith
1 Alice Johnson
2 Bob Williams
Namn: namn dtype: objekt

Skriva CSV-filer med Pandas

Vi kan använda Pandas för att skriva CSV-filer. Det kan göras genom att använda pd.DataFrame() fungera. I det här exemplet Pandas bibliotek används för att konvertera en lista med ordböcker (mydict) till en DataFrame som representerar tabelldata. DataFrame skrivs sedan till en Python CSV-fil med namnet 'output.csv' med hjälp av to_csv-metoden som skapar en strukturerad och läsbar datafil för vidare analys eller delning.

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:

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

Lagra e-postmeddelanden i CSV-filer

Vi börjar med att importera csv-modulen och använder den för att lagra namn och e-postmeddelanden som kommaseparerade värden. Med funktionen open() skapar vi en CSV-fil och skriver sedan varje rad med hjälp av ett writer-objekt med separata kolumner för namn och 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  )   

Produktion:

E-post i csvE-post i csv Skapa frågesport