Travailler avec des fichiers csv en Python

Travailler avec des fichiers csv en Python

UN Fichier CSV (valeurs séparées par des virgules) est un fichier texte brut dans lequel chaque ligne représente un enregistrement de données et les champs de chaque enregistrement sont séparés par des virgules. Il est couramment utilisé pour les feuilles de calcul et les bases de données en raison de sa simplicité et de sa lisibilité.

Vous trouverez ci-dessous quelques opérations que nous effectuons lorsque nous travaillons avec des fichiers Python CSV en Python

Lire un fichier CSV

La lecture à partir d'un fichier CSV s'effectue à l'aide de l'objet lecteur. Le fichier CSV est ouvert en tant que fichier texte avec la fonction open() intégrée de Python qui renvoie un objet fichier. Dans cet exemple, nous ouvrons d'abord le fichier CSV en mode READ, l'objet fichier est converti en objet csv.reader et d'autres opérations ont lieu. Le code et l’explication détaillée sont donnés ci-dessous.

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

Sortir

Travailler avec des fichiers csv en Python

L'exemple ci-dessus utilise un fichier CSV aapl.csv qui peut être téléchargé à partir de ici .

Explication:

  • avec ouvert(...) ouvre le fichier CSV en mode lecture en toute sécurité à l'aide d'un gestionnaire de contexte.
  • csv.reader (fichier csv) transforme le fichier en un objet lecteur CSV.
  • suivant (csvreader) extrait la première ligne comme en-tête de colonne.
  • Boucler lecteur csv pour ajouter chaque ligne (sous forme de liste) aux lignes.
  • Imprimez les en-têtes des lignes totales et les 5 premières lignes de données dans une vue formatée.

Lire des fichiers CSV dans un dictionnaire avec CSV

Nous pouvons lire un fichier CSV dans un dictionnaire en utilisant le module csv en Python et la classe csv.DictReader. Voici un exemple :

Supposons que nous ayons un employés.csv le fichier et le contenu qu'il contient seront :

département nomméanniversaire_mois
John SmithHRJuillet
Alice JohnsonITOctobre
Bob WilliamsFinanceJanvier

Exemple: Cela lit chaque ligne comme un dictionnaire (les en-têtes comme clés), puis l'ajoute à list .

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  )   

Sortir:

{'name' : 'John Smith' 'department' : 'HR' 'birthday_month' : 'Juillet'}
{'nom' : 'Alice Johnson' 'département' : 'informatique' 'anniversaire_mois' : 'octobre'}
{'name' : 'Bob Williams' 'department' : 'Finance' 'birthday_month' : 'Janvier'}

Explication:

  • avec ouvert(...) ouvre le fichier à l'aide d'un gestionnaire de contexte.
  • csv.DictReader(fichier) lit chaque ligne comme un dictionnaire en utilisant les en-têtes comme clés.
  • data_list.append (ligne) stocke chaque dictionnaire dans une liste.

Écrire dans un fichier CSV

Pour écrire dans un fichier CSV, nous ouvrons d'abord le fichier CSV en mode WRITE. L'objet fichier est converti en objet csv.writer et d'autres opérations ont lieu. Le code et l’explication détaillée sont donnés ci-dessous.

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   

Explication:

  • champs définit les en-têtes de colonnes et les lignes contiennent les données sous forme de liste de listes.
  • avec ouvert(... 'w') ouvre le fichier en mode écriture à l'aide d'un gestionnaire de contexte.
  • csv.writer (fichier csv) crée un objet écrivain pour écrire dans le CSV.
  • écrireligne(champs) écrit la ligne d'en-tête dans le fichier.
  • écrire des lignes (lignes) écrit toutes les lignes de données dans le CSV en même temps.

Écrire un dictionnaire dans un fichier CSV

Pour écrire un dictionnaire dans un fichier CSV, l'objet fichier (csvfile) est converti en objet DictWriter. Un exemple détaillé avec explication et code est donné ci-dessous.

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  )   

Sortir

Travailler avec des fichiers csv en Pythonfichier csv

Considérez qu'un fichier CSV ressemble à ceci en texte brut :

dossier universitairedossier universitaire

Explication:

  • avec ouvert(...) ouvre le fichier en toute sécurité à l'aide d'un gestionnaire de contexte.
  • csv.DictWriter(... ) mappe les clés du dictionnaire aux colonnes CSV.
  • en-tête d'écriture() écrit les en-têtes de colonnes.
  • écrire des lignes (mydict) écrit tous les dictionnaires sous forme de lignes CSV.

Lire des fichiers CSV avec Pandas

On peut lire un Python CSV fichiers avec Pandas utilisant pandas.read_csv() fonction. Voici un exemple :

Supposons que nous ayons un fichier employes.csv et que son contenu soit :

département nomméanniversaire_mois
John SmithHRJuillet
Alice JohnsonITOctobre
Bob WilliamsFinanceJanvier

Dans cet exemple, pd.read_csv() lit le fichier CSV dans un Pandas DataFrame. Le DataFrame résultant peut être utilisé pour diverses tâches de manipulation et d’analyse de données.

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

Sortir:

nom du département anniversaire_mois
0 John Smith RH Juillet
1 Alice Johnson IT octobre
2 Bob Williams Finances janvier

Nous pouvons accéder à des colonnes spécifiques, filtrer les données et effectuer diverses opérations à l'aide de la fonctionnalité Pandas DataFrame. Par exemple, si nous voulons accéder à la colonne 'name', nous pouvons utiliser df['name'].

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

Sortir :

0 John Smith
1Alice Johnson
2Bob Williams
Nom : nom type : objet

Écrire des fichiers CSV avec Pandas

Nous pouvons utiliser Pandas pour écrire des fichiers CSV. Cela peut être fait en utilisant pd.DataFrame() fonction. Dans cet exemple, le Pandas La bibliothèque est utilisée pour convertir une liste de dictionnaires (mydict) en un DataFrame représentant des données tabulaires. Le DataFrame est ensuite écrit dans un fichier Python CSV nommé « output.csv » à l'aide de la méthode to_csv, créant un fichier de données structuré et lisible pour une analyse ou un partage plus approfondi.

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  )   

Fichier CSV de sortie :

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

Stockage des e-mails dans des fichiers CSV

Nous commençons par importer le module csv et l'utilisons pour stocker les noms et les e-mails sous forme de valeurs séparées par des virgules. À l'aide de la fonction open(), nous créons un fichier CSV, puis écrivons chaque ligne à l'aide d'un objet écrivain avec des colonnes séparées pour les noms et les 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  )   

Sortir:

E-mails en csvE-mails en csv Créer un quiz