Arbejder med csv-filer i Python

Arbejder med csv-filer i Python

EN CSV-fil (Comma Separated Values). er en almindelig tekstfil, hvor hver linje repræsenterer en datapost, og felter inden for hver post er adskilt med kommaer. Det er almindeligt brugt til regneark og databaser på grund af dets enkelhed og læsbarhed.

Nedenfor er nogle handlinger, som vi udfører, mens vi arbejder med Python CSV-filer i Python

Læser en CSV-fil

Læsning fra en CSV-fil sker ved hjælp af reader-objektet. CSV-filen åbnes som en tekstfil med Pythons indbyggede open() funktion, som returnerer et filobjekt. I dette eksempel åbner vi først CSV-filen i READ-tilstand. Filobjektet konverteres til csv.reader-objektet og yderligere betjening finder sted. Kode og detaljeret forklaring er givet 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  '  )   

Produktion

Arbejder med csv-filer i Python

Ovenstående eksempel bruger en CSV-fil aapl.csv som kan downloades fra her .

Forklaring:

  • med åben(...) åbner CSV-filen i læsetilstand sikkert ved hjælp af en konteksthåndtering.
  • csv.reader(csvfil) gør filen til et CSV-læserobjekt.
  • næste(csvreader) udtrækker den første række som kolonneoverskrifter.
  • Sløjfe igennem csvreader at tilføje hver række (som en liste) til rækker.
  • Udskriv de samlede rækkeoverskrifter og de første 5 datarækker i en formateret visning.

Læsning af CSV-filer i en ordbog med csv

Vi kan læse en CSV-fil ind i en ordbog ved hjælp af csv-modulet i Python og klassen csv.DictReader. Her er et eksempel:

Antag, at vi har en medarbejdere.csv fil og indhold i den vil være:

navnafdeling fødselsdag_måned
John SmithHR juli
Alice Johnson I oktober
Bob WilliamsFinansJanuar

Eksempel: Dette læser hver række som en ordbog (overskrifter som nøgler) og føjer den derefter til 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  )   

Produktion:

{'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 åben(...) åbner filen ved hjælp af en konteksthåndtering.
  • csv.DictReader(fil) læser hver række som en ordbog med overskrifter som nøgler.
  • data_list.append(row) gemmer hver ordbog på en liste.

Skrivning til en CSV-fil

For at skrive til en CSV-fil åbner vi først CSV-filen i WRITE-tilstand. Filobjektet konverteres til csv.writer-objekt, og yderligere handlinger finder sted. Kode og detaljeret forklaring er givet 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:

  • felter definerer kolonneoverskrifterne og rækker indeholder dataene som en liste over lister.
  • med åben(... 'w') åbner filen i skrivetilstand ved hjælp af en konteksthåndtering.
  • csv.writer(csvfil) opretter et skribentobjekt til at skrive til CSV'en.
  • skriverække(felter) skriver overskriftsrækken til filen.
  • Writerows (rækker) skriver alle datarækker til CSV'en på én gang.

Skrivning af en ordbog til en CSV-fil

For at skrive en ordbog til en CSV-fil konverteres filobjektet (csvfile) til et DictWriter-objekt. Detaljeret eksempel med forklaring og kode er givet 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  )   

Produktion

Arbejder med csv-filer i Pythoncsv-fil

Overvej, at en CSV-fil ser sådan ud i almindelig tekst:

universitetsrekorduniversitetsrekord

Forklaring:

  • med åben(...) åbner filen sikkert ved hjælp af en konteksthåndtering.
  • csv.DictWriter(... ) knytter ordbogsnøgler til CSV-kolonner.
  • skrivehoved() skriver kolonneoverskrifter.
  • Writerows (mydict) skriver alle ordbøger som CSV-rækker.

Læsning af CSV-filer med pandaer

Vi kan læse en Python CSV filer med Pandaer ved hjælp af pandas.read_csv() fungere. Her er et eksempel:

Antag, at vi har en ansatte.csv-fil, og indholdet i den vil være:

navnafdeling fødselsdag_måned
John SmithHR juli
Alice Johnson I oktober
Bob WilliamsFinansJanuar

I dette eksempel læser pd.read_csv() CSV-filen ind i en Pandas DataFrame. Den resulterende DataFrame kan bruges til forskellige datamanipulations- og analyseopgaver.

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

Produktion:

navn afdeling fødselsdag_måned
0 John Smith HR juli
1 Alice Johnson IT oktober
2 Bob Williams Finans januar

Vi kan få adgang til specifikke kolonnefiltreringsdata og udføre forskellige operationer ved hjælp af pandas DataFrame-funktionalitet. For eksempel, hvis vi ønsker at få adgang til kolonnen 'navn', kan vi bruge df['navn'].

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

Produktion :

0 John Smith

2 Bob Williams
Navn: navn dtype: objekt

Skrivning af CSV-filer med pandaer

Vi kan bruge Pandas til at skrive CSV-filer. Det kan gøres ved at bruge pd.DataFrame() fungere. I dette eksempel Pandaer bibliotek bruges til at konvertere en liste over ordbøger (mydict) til en DataFrame, der repræsenterer tabeldata. DataFrame skrives derefter til en Python CSV-fil med navnet 'output.csv' ved hjælp af to_csv-metoden, hvilket skaber en struktureret og læsbar datafil til yderligere 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  )   


COE9.0Nikhil2
COE9.1Sanchit2

SE9.5 Sagar1

Lagring af e-mails i CSV-filer

Vi starter med at importere csv-modulet og bruger det til at gemme navne og e-mails som kommaseparerede værdier. Ved at bruge funktionen open() opretter vi en CSV-fil og skriver derefter hver række ved hjælp af et writer-objekt med separate kolonner til navne og e-mails.

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-mails i csvE-mails i csv Opret quiz