1. Description du module csv
Le module csv de Python fournit une fonctionnalité pour travailler avec des fichiers CSV (Comma Separated Values). Il fournit deux classes principales pour lire et écrire des fichiers CSV : csv.reader et csv.writer:
- La classe csv.reader vous permet de lire un fichier CSV en tant que liste de listes, où chaque liste interne représente une ligne dans le fichier.
- La classe csv.writer vous permet d'écrire des données dans un fichier CSV, avec chaque ligne de données étant écrite comme une ligne séparée dans le fichier.
Le module comprend également un certain nombre d'autres fonctions pour travailler avec des fichiers CSV, telles que la possibilité de définir le délimiteur et le caractère de citation utilisés dans le fichier, et pour gérer les sauts de ligne à l'intérieur des champs.
2. Stockage des données sur un fichier csv
Prenons un petit exemple simple d'une table sql formée de 4 colonnes et quelque enregistrements. Pour stocker les données de cette table, le principe est très simple, il suffit de mettre chaque ligne de la table dans une ligne séparée sur le fichier csv et de séparer les valeurs par une virgule: d'où le sigle CSV, 'comma separated values' qui veut dire 'valeurs séparées par des virgules'
3. Les méthodes associées au module Python csv
Les principales méthodes associées au module csv Python sont :
- csv.DictReader(): Cette méthode permet de lire un fichier CSV en tant que liste de dictionnaires. Cette méthode prend en argument un objet de type file ou un nom de fichier (str)
- csv.DictWriter(): Cette méthode permet d'écrire des données dans un fichier CSV à partir d'un dictionnaire. Elle prend en argument un objet de type file ou un nom de fichier (str)
- csv.field_size_limit(): Cette méthode renvoie la limite de taille des champs en bytes.
- csv.field_size_limit(): Il renvoie la taille de champ maximale actuelle autorisée par l'analyseur.
- csv.get_dialect(): Cette méthode permet de récupérer un dialecte enregistré en utilisant son nom. Elle prend en argument un nom de dialecte.
- csv.get_dialect(): Renvoie le dialecte associé à un nom.
- csv.list_dialects(): Cette méthode permet de récupérer la liste des dialectes enregistrés dans le module csv.
- csv.list_dialects(): Renvoie les noms de tous les dialectes enregistrés.
- csv.QUOTE_* (): Ces constantes sont utilisées pour définir la manière de gérer les caractères de citation.
- csv.QUOTE_ALL(): Il demande aux objets écrivain de citer tous les champs.
- csv.QUOTE_MINIMAL(): Il instruit les objets écrivain pour ne citer que les champs qui contiennent des caractères spéciaux tels que quotechar, delimiter, etc.
- csv.QUOTE_NONE(): Il indique à l'objet écrivain de ne jamais citer les champs.
- csv.QUOTE_NONNUMERIC(): Il demande aux objets écrivain de citer tous les champs non numériques.
- csv.reader(): Cette méthode permet de lire un fichier CSV en tant que liste de listes, où chaque liste interne représente une ligne dans le fichier. Elle prend en argument un objet de type file ou un nom de fichier (str)
- csv.reader.line_num(): Cette propriété contient le numéro de la ligne actuelle lue par le csv.reader.
- csv.reader.next(): Cette méthode est similaire à csv.reader.next() mais est utilisée pour les itérateurs Python.
- csv.reader.next(): Cette méthode permet de lire la prochaine ligne d'un fichier CSV. Elle est utilisée pour parcourir un fichier ligne par ligne.
- csv.register_dialect(): Cette méthode permet de créer un dialecte personnalisé pour le module csv. Elle prend en argument un nom de dialecte et un dictionnaire de paramètres.
- csv.register_dialect(): Il associe le dialecte à un nom, et le nom doit être une chaîne ou un objet Unicode.
- csv.unregister_dialect(): Il supprime le dialecte qui est associé au nom du registre de dialecte. Si un nom n'est pas un nom de dialecte enregistré, une erreur est déclenchée.
- csv.writer(): Cette méthode permet d'écrire des données dans un fichier CSV, avec chaque ligne de données étant écrite comme une ligne séparée dans le fichier. Elle prend en argument un objet de type file ou un nom de fichier (str)
- csv.writer.writerow(): Cette méthode permet d'écrire une ligne dans un fichier CSV. Elle prend en argument une liste ou un tuple.
- csv.writer.writerows(): Cette méthode permet d'écrire plusieurs lignes dans un fichier CSV. Elle prend en argument une liste de listes ou de tuples.
- csv.writer(): Écrire les données dans un fichier csv
- csv.writerow(): Cette méthode permet d'écrire une ligne dans un fichier CSV. Elle prend en argument une liste ou un tuple.
- csv.writerows(): Cette méthode permet d'écrire plusieurs lignes dans un fichier CSV. Elle prend en argument une liste de listes ou de tuples.
Ces méthodes sont les plus utilisées mais il y en a d'autres qui sont plus spécifiques. Il est toujours possible de consulter la documentation officielle pour plus de détails.
4. Lecture d'un fichier csv
4.1 - Lecture sous forme d'une liste via la méthode csv.reader()
Pour extraire des données d'un fichier CSV, vous devez utiliser la fonction de lecture csv.reader pour générer un objet contenant les données de lecture.
La méthode de lecture csv.reader est conçue pour prendre chaque ligne du fichier et faire une liste de toutes les colonnes. Ensuite, vous choisissez simplement la colonne pour laquelle vous voulez obtenir les données sous forme de variables.
Cela semble beaucoup plus compliqué qu'il ne l'est. Pour le prouver, regardons un exemple:
Essayons de lire le contenu d'un fichier nommé data.csv:
1 2 3 4 5 |
data.csv ID , Nom , Age , Taille 1 , Natalie , 22 , 170 2 , Robert , 37 , 190 3 , Bernard , 29 , 181 |
Exemple: lecture totale
1 2 3 4 5 6 7 8 9 10 11 12 13 |
import csv with open('data.csv', 'r') as f: reader = csv.reader(f , delimiter=',') for row in reader: print (row) """ Cela affiche le contenu total du fichiers csv où chaque ligne est représentée par une liste. [' ID ', ' Nom ', ' Age ', ' Taille'] [' 1 ', ' Natalie ', ' 22 ', ' 170'] [' 2 ', ' Robert ', ' 37 ', ' 190'] [' 3 ', ' Bernard\t ', ' 29 ', ' 181'] """ |
Exemple lecture d'une colonne spécifique
1 2 3 4 5 6 7 |
import csv with open('data.csv', 'r') as f: reader = csv.reader(f , delimiter=',') print("Liste des noms : ") for row in reader: print (row[1]) # Cela affiche la liste des noms de la table. |
4.2 - Lecture sous forme d'un dictionnaire via la méthode csv.Dictreader()
Pour lire un fichier csv sous forme d'un dictionnaire, le principe est le même que celui du paragraphe précédent, mais à la différence de remplacer la méthode csv.reader() par la méthode csv.DictReader():
1 2 3 4 5 6 7 8 9 10 11 12 |
import csv with open('data.csv', 'r') as f: reader = csv.DictReader(f , delimiter=',') for row in reader: print (row) """ output: OrderedDict([(' ID', ' 1 '), (' Nom ', ' Natalie '), (' Age ', ' 22 '), (' Taille', ' 170')]) OrderedDict([(' ID', ' 2 '), (' Nom ', ' Robert '), (' Age ', ' 37 '), (' Taille', ' 190')]) OrderedDict([(' ID', ' 3 '), (' Nom ', ' Bernard '), (' Age ', ' 29 '), (' Taille', ' 181')]) """ |
4.3 - Lecture d'un fichier CSV avec Pandas
Pandas est une bibliothèque open source qui vous permet d'effectuer des manipulations de données en Python, elle vous offrent un moyen facile de créer, manipuler et supprimer les données. Vous devez installer la bibliothèque pandas avec la commande :
1 |
pip install pandas |
Sous Windows, vous exécuterez cette commande dans l'invite de commande, tandis que sous Linux dans le terminal.
La lecture d'un CSV dans un DataFrame pandas est très rapide et facile:
1 2 3 4 5 6 7 8 9 10 |
import pandas result = pandas.read_csv('data.csv') print(result) """ output: ID Nom Age Taille 0 1 Walid 19 180 1 2 Najib 30 185 2 3 Majda 27 175 """ |
5. Ecrire sur fichier CSV
Pour écrire sur un fichier csv en Python, on utilise la méthode: csv.writer() afin de créer un objet d'écriture et pour écrire une ligne, on utilise la méthode writerow():
Exemple
1 2 3 4 5 6 7 8 9 10 11 |
import csv data = [['ID', 'Nom', 'Age', 'Taille'] , ['1', 'Walid', '19', '180'], ['2', 'Najib', '30', '185'], ['3', 'Majda', '27', '175']] with open('data.csv', mode='w') as file: writer = csv.writer(file, delimiter=',') # write data for ligne in data: writer.writerow(ligne) |
6. Lecture d'un fichier csv avec Panda
Pandas permet aussi d'écrire sur un fichier csv des données provenant d'un dictionnaire Python via la classe DataFrame.
Exemple
1 2 3 4 5 6 7 8 9 10 11 12 |
from pandas import DataFrame # data sous forme d'un dictionnaire dictData = {'ID': [1 , 2 , 3], 'Nom': ['Robert', 'Albert', 'Natalie'], 'Age': [23, 37, 21], 'Taille': [180 , 175 , 170], } dataFrm = DataFrame(dictData, columns= ['ID', 'Nom', 'Age', 'Taille']) # chemin vers un fichier pour stocker les resultats export_csv = dataFrm .to_csv (r'Pandaresult.csv', index = None, header=False) print (dataFrm ) |
Voici les données qui seront écrites sur le fichiers Pandaresult.csv:
7. Conclusion
J'espère que maintenant vous avez appris les différentes techniques permettant de lire & écrire sur des fichiers csv. Les fichiers CSV sont largement utilisés dans les applications logicielles car ils sont faciles à lire et à gérer, et leur petite taille les rend relativement rapides pour le traitement et la transmission des données.
Le module csv fournit diverses méthodes et classes qui vous permettent de lire et d'écrire facilement sur un fichier csv. Et si vous souhaitez approfondir vos connaissances à propos du module csv, vous pouvez consulter la documentation officielle de Python. Nous pouvons donc conclure que CSV est le meilleur moyen pour enregistrer, visualiser et envoyer des données.
Younes Derfoufi
CRMEF OUJDA
1 thought on “Le module csv Python”