Python

Comment gérer les fichiers CSV en Python

Comment gérer les fichiers CSV en Python
Cet article couvrira un didacticiel sur la gestion des fichiers "csv" à l'aide de Python. Le terme « csv » signifie « valeurs séparées par des virgules » où chaque ligne ou ligne contient des valeurs basées sur du texte délimitées par des virgules. Dans certains cas, « point virgule » est également utilisé au lieu de « virgule » pour séparer les valeurs. Cependant, cela ne fait pas beaucoup de différence pour les règles de format de fichier et la logique pour gérer les deux types de séparateurs reste la même.

Le format de fichier CSV est le plus couramment utilisé pour la maintenance des bases de données et des feuilles de calcul. La première ligne d'un fichier CSV est le plus souvent utilisée pour définir les champs de colonne tandis que toutes les autres lignes restantes sont considérées comme des lignes. Cette structure permet aux utilisateurs de présenter des données tabulaires à l'aide de fichiers CSV. Les fichiers CSV peuvent être modifiés dans n'importe quel éditeur de texte. Cependant, des applications comme LibreOffice Calc fournissent des outils d'édition avancés, des fonctions de tri et de filtrage.

Lecture de données à partir de fichiers CSV à l'aide de Python

Le module CSV en Python vous permet de lire, écrire et manipuler toutes les données stockées dans des fichiers CSV. Pour lire un fichier CSV, vous devrez utiliser la méthode "reader" du module "csv" de Python qui est inclus dans la bibliothèque standard de Python.

Considérez que vous disposez d'un fichier CSV contenant les données suivantes :

Mangue, Banane, Pomme, Orange
50,70,30,90

La première ligne du fichier définit chaque catégorie de colonne, nom des fruits dans ce cas. La deuxième ligne stocke les valeurs sous chaque colonne (stock en main). Toutes ces valeurs sont délimitées par une virgule. Si vous deviez ouvrir ce fichier dans un tableur comme LibreOffice Calc, cela ressemblerait à ceci :

Maintenant, pour lire les valeurs de « fruits.csv" en utilisant le module "csv" de Python, vous devrez utiliser la méthode "reader" au format suivant :

importer csv
avec open("fruits.csv") en tant que fichier :
lecteur_données = csv.lecteur(fichier)
pour la ligne dans data_reader :
imprimer (ligne)

La première ligne de l'exemple ci-dessus importe le module "csv". Ensuite, l'instruction "with open" est utilisée pour ouvrir en toute sécurité un fichier stocké sur votre disque dur ("fruits.csv" dans ce cas). Un nouvel objet "data_reader" est créé en appelant la méthode "reader" depuis le module "csv". Cette méthode de « lecteur » prend un nom de fichier comme argument obligatoire, de sorte que la référence à « fruits.csv" lui est transmis. Ensuite, une instruction de boucle "for" est exécutée pour imprimer chaque ligne des "fruits.fichier csv". Après avoir exécuté l'exemple de code mentionné ci-dessus, vous devriez obtenir le résultat suivant :

['50', '70', '30', '90']

Si vous souhaitez attribuer des numéros de ligne à la sortie, vous pouvez utiliser la fonction « énumérer » qui attribue un numéro à chaque élément dans un itérable (à partir de 0 sauf modification).

importer csv
avec open("fruits.csv") en tant que fichier :
lecteur_données = csv.lecteur(fichier)
pour index, ligne dans énumérer (data_reader):
imprimer (index, ligne)

La variable « index » conserve le compte pour chaque élément. Après avoir exécuté l'exemple de code mentionné ci-dessus, vous devriez obtenir le résultat suivant :

0 ['Mangue', 'Banane', 'Pomme', 'Orange']
1 ['50', '70', '30', '90']

Étant donné que la première ligne d'un fichier « csv » contient généralement des en-têtes de colonne, vous pouvez utiliser la fonction « énumérer » pour extraire ces en-têtes :

importer csv
avec open("fruits.csv") en tant que fichier :
lecteur_données = csv.lecteur(fichier)
pour index, ligne dans énumérer (data_reader):
si indice == 0 :
en-têtes = ligne
imprimer (titres)

Le bloc "if" dans l'instruction ci-dessus vérifie si l'indice est égal à zéro (première ligne dans "fruits.csv"). Si oui, alors la valeur de la variable « ligne » est affectée à une nouvelle variable « rubriques ». Après avoir exécuté l'exemple de code ci-dessus, vous devriez obtenir le résultat suivant :

['Mangue', 'Banane', 'Pomme', 'Orange']

Notez que vous pouvez utiliser votre propre délimiteur lorsque vous appelez « csv.reader" en utilisant un argument "delimiter" facultatif au format suivant :

importer csv
avec open("fruits.csv") en tant que fichier :
lecteur_données = csv.lecteur(fichier, délimiteur=";")
pour la ligne dans data_reader :
imprimer (ligne)

Étant donné que dans un fichier csv, chaque colonne est associée à des valeurs dans une ligne, vous souhaiterez peut-être créer un objet "dictionnaire" Python lors de la lecture des données d'un fichier "csv". Pour ce faire, vous devez utiliser la méthode « DictReader », comme indiqué dans le code ci-dessous :

importer csv
avec open("fruits.csv") en tant que fichier :
lecteur_données = csv.DictReader(fichier)
pour la ligne dans data_reader :
imprimer (ligne)

Après avoir exécuté l'exemple de code mentionné ci-dessus, vous devriez obtenir le résultat suivant :

'Mangue' : '50', 'Banane' : '70', 'Pomme' : '30', 'Orange' : '90'

Alors maintenant, vous avez un objet dictionnaire qui associe des colonnes individuelles à leurs valeurs correspondantes dans les lignes. Cela fonctionne bien si vous n'avez qu'une seule ligne. Supposons que les « fruits.csv" comprend désormais une ligne supplémentaire qui spécifie combien de jours il faudra pour que le stock de fruits périsse.

Mangue, Banane, Pomme, Orange
50,70,30,90
3,1,6,4

Lorsque vous avez plusieurs lignes, l'exécution du même exemple de code ci-dessus produira une sortie différente.

'Mangue' : '50', 'Banane' : '70', 'Pomme' : '30', 'Orange' : '90'
'Mangue' : '3', 'Banane' : '1', 'Pomme' : '6', 'Orange' : '4'

Cela peut ne pas être idéal car vous souhaiterez peut-être mapper toutes les valeurs appartenant à une colonne à une paire clé-valeur dans un dictionnaire Python. Essayez plutôt cet exemple de code :

importer csv
avec open("fruits.csv") en tant que fichier :
lecteur_données = csv.DictReader(fichier)
data_dict =
pour la ligne dans data_reader :
pour clé, valeur en ligne.éléments():
data_dict.setdefault(clé, [])
data_dict[clé].ajouter (valeur)
imprimer (data_dict)

Après avoir exécuté l'exemple de code mentionné ci-dessus, vous devriez obtenir le résultat suivant :

'Mangue' : ['50', '3'], 'Banane' : ['70', '1'], 'Pomme' : ['30', '6'], 'Orange' : ['90 ', '4']

Une boucle "for" est utilisée sur chaque élément de l'objet "DictReader" pour boucler sur les paires clé-valeur. Une nouvelle variable de dictionnaire Python "data_dict" est définie avant cela. Il stockera les mappages de données finaux. Sous le deuxième bloc de boucle "for", la méthode "setdefault" du dictionnaire Python est utilisée. Cette méthode attribue une valeur à une clé de dictionnaire. Si la paire clé-valeur n'existe pas, une nouvelle est créée à partir des arguments spécifiés. Donc dans ce cas, une nouvelle liste vide sera affectée à une clé si elle n'existe pas déjà. Enfin, "value" est ajouté à sa clé correspondante dans l'objet final "data_dict".

Écrire des données dans un fichier CSV

Pour écrire des données dans un fichier "csv", vous devrez utiliser la méthode "writer" du module "csv". L'exemple ci-dessous ajoutera une nouvelle ligne aux "fruits.fichier csv".

importer csv
avec open("fruits.csv", "a") en tant que fichier :
data_writer = csv.écrivain(fichier)
rédacteur_données.écrireligne([3,1,6,4])

La première instruction ouvre le fichier en mode « ajout », indiqué par l'argument « a ». Ensuite, la méthode "writer" est appelée et la référence à "fruits.csv" lui est passé en argument. La méthode "writerow" écrit ou ajoute une nouvelle ligne au fichier.

Si vous souhaitez convertir le dictionnaire Python en une structure de fichier "csv" et enregistrer la sortie dans un fichier "csv", essayez ce code :

importer csv
avec open("fruits.csv", "w") en tant que fichier :
rubriques = ["Mangue", "Banane", "Pomme", "Orange"]
data_writer = csv.DictWriter (fichier, noms de champs = en-têtes)
rédacteur_données.en-tête d'écriture()
rédacteur_données.writerow("Mangue": 50, "Banane": 70, "Pomme": 30, "Orange": 90)
rédacteur_données.writerow("Mangue": 3, "Banane": 1, "Pomme": 6, "Orange": 4)

Après avoir ouvert un « fruits.csv" à l'aide d'une instruction "with open", une nouvelle variable "headings" est définie qui contient les en-têtes de colonnes. Un nouvel objet "data_writer" est créé en appelant la méthode "DictWriter" et en lui passant la référence au "fruits.csv" et un argument "fieldnames". Dans la ligne suivante, les en-têtes de colonnes sont écrits dans le fichier à l'aide de la méthode "writeheader". Les deux dernières instructions ajoutent de nouvelles lignes à leurs en-têtes correspondants créés à l'étape précédente.

Conclusion

Les fichiers CSV offrent un moyen pratique d'écrire des données au format tabulaire. Le module "csv" intégré de Python permet de gérer facilement les données disponibles dans les fichiers "csv" et d'y implémenter une logique supplémentaire.

OpenTTD contre Simutrans
Créer votre propre simulation de transport peut être amusant, relaxant et extrêmement attrayant. C'est pourquoi vous devez vous assurer que vous essay...
Tutoriel OpenTTD
OpenTTD est l'un des jeux de simulation d'entreprise les plus populaires. Dans ce jeu, vous devez créer une merveilleuse entreprise de transport. Cepe...
SuperTuxKart pour Linux
SuperTuxKart est un excellent titre conçu pour vous apporter l'expérience Mario Kart gratuitement sur votre système Linux. C'est assez stimulant et am...