les Fichiers CSV En Python

1 - A propos des Fichiers CSV

Le sigle CSV signifie 'comma separated values' qui veut dire 'valeurs séparées par des virgules', qui est défini comme un format de fichier simple qui utilise une structuration spécifique pour organiser les données tabulaires. Il stocke des données tabulaires telles qu'une feuille de calcul ou une base de données en texte brut et a un format commun pour l'échange de données. Le fichier csv s'ouvre sous forme d'une feuille Excel et les données des lignes et des colonnes définissent le format standard.

2 - Comment stocker les données sur un fichiers csv





Prenons un petit exemple simple d'une table sql formée de colonne 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 - Fonctions associées au module Python CSV

Le  module CSV consiste à gérer les fichiers CSV pour lecture, écriture et obtention  des données à partir des colonnes spécifiées. Il existe différents types de fonctions CSV:

  1. csv.field_size_limit:   Il renvoie la taille de champ maximale actuelle autorisée par l'analyseur.
  2. csv.get_dialect:  Renvoie le dialecte associé à un nom.
  3. csv.list_dialects:   Renvoie les noms de tous les dialectes enregistrés.
  4. csv.reader:   Lire les données d'un fichier csv
  5. csv.register_dialect:   Il associe le dialecte à un nom, et le nom doit être une chaîne ou un objet Unicode.
  6. csv.writer:   Écrire les données dans un fichier csv
  7. 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.
  8. csv.QUOTE_ALL:   Il demande aux objets écrivain de citer tous les champs.
  9. 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.
  10. csv.QUOTE_NONNUMERIC:  Il demande aux objets écrivain de citer tous les champs non numériques.
  11. csv.QUOTE_NONE:  Il indique à l'objet écrivain de ne jamais citer les champs.

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:

data.csv
 ID ,   Nom      ,    Age   ,  Taille
 1  ,   Natalie  ,    22    ,  170
 2  ,   Robert   ,    37    ,  190
 3  ,   Bernard	 ,    29    ,  181

Exemple: lecture totale

import csv
with open('data.csv', 'r') as f:
    reader = csv.reader(f , delimiter=',')
    for row in reader:
            print (row)

Ce qui 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

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

Ce qui 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():

import csv
with open('data.csv', 'r') as f:
    reader = csv.DictReader(f , delimiter=',')
    for row in reader:
            print (row)

Ce qui affiche après exécution:

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 :

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:

import pandas
result = pandas.read_csv('data.csv')
print(result)

Ce qui affiche:

         ID Nom Age Taille
     1  Walid  19  180
     2  Najib  30  185
2     3  Majda  27  175

5 - Ecriture 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:

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

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:

     ID   Nom   Age   Taille
0       1   Robert   23   180
1       2   Albert   37   175
2      3   Natalie   21   170

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 “les Fichiers CSV En Python

Leave a Reply