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
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
fichier csv Considérez qu'un fichier CSV ressemble à ceci en texte brut :
dossier 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 csv Créer un quiz