Formats de données : csv

Les fichiers csv sont des fichiers textes permettant de stocker des données structurées comme une feuille excel.

Le format csv est utilisé pour stocker des données sous la forme d'une table. Par exemple :

Prénom, nom, note
Harry, Cover, 12.5
Alain, Bessil, 7
Elvire, Sacuti, 15
Aimée, Nêms, 20
Gordon, Zola, 10

Un fichier csv :

  • est un fichier texte
  • chaque ligne du fichier est composée d'une donnée
  • chaque donnée est composée de champs séparés par un délimiteur
  • chaque donnée à :
    • le même nombre de champs
    • le même délimiteur

Format csv

Le format csv peut sembler bien défini, mais il n'en est rien.

Il est crucial de toujours soigneusement vérifier le format csv de vos données.

Par exemple :

Enfin :

En python, tout ceci est bien sur paramétrable.

Utilisez un plugin vscode pour pouvoir visualiser clairement les fichiers csv.

Il en existe de nombreux. J'ai installé le tout simple rainbow CSV pour rapidement connaître le format csv d'un fichier particulier.

Python et fichier csv

Pour la suite, on supposera que l'on ait dans le dossier du projet courant le fichier notes.csv contenant :

Prénom, nom, note
Harry, Cover, 12.5
Alain, Bessil, 7
Elvire, Sacuti, 15
Aimée, Nêms, 20
Gordon, Zola, 10

Lecture d'un fichier

le code ci-après lit le fichier csv et le place dans une liste de listes si la ligne contient bien 3 champs. Puis on convertit le dernier élément en entier.

import csv

donnees = []

f = open("notes.csv", newline='')
lecteur = csv.reader(f)
for ligne in lecteur:
    donnees.append(ligne)

Par défaut, tout attribut sera considéré comme une chaîne de caractères. Il faut convertir chaque champ à son bon type. Si vous voulez traiter à part les chaînes de caractères, il faut les entourer de ".

  1. import csv pour pouvoir utiliser le module csv
  2. ouvrir le fichier à lire avec open avec une gestion de la fin de ligne.
  3. placer ce fichier dans un reader dont le but est de lire le fichier et de le structurer en utilisant ses paramètres.
  4. lire le fichier ligne à ligne. A chaque utilisation vous obtiendrez une liste contenant les différents champs de la ligne lue.

Le reader python permet de lire une chaîne de caractères et de l'interpréter selon le format csv. Il possède de nombreuses options permettant de gérer les multiples cas particuliers. Parmi les plus usités :

Séparer les noms de colonne des données

Pour lire une unique ligne, on peut utiliser la commande next. Le code suivant lit la première ligne, qui contient les noms des différentes colonnes, puis lit les autres données en transformant le dernier champ (la note) en float.

import csv


donnees = []

f = open("notes.csv")
lecteur = csv.reader(f)
titres = next(lecteur)  # lit une unique ligne
for ligne in lecteur:    # continue la lecture
    ligne[2] = float(ligne[2])  # convertit la note en flottant
    donnees.append(ligne)

Le lecteur de csv fonctionne avec tout itérateur. Il fonctionne donc aussi en remplaçant le fichier f par une liste de chaînes de caractères par exemple.

Écrire des fichiers csv

Ajoutons la note de Mlle Debbie Scott qui a eu 13.5

Il faut ouvrir le fichier en ajout. Si vous l'ouvrez juste en écriture tout votre fichier disparaît.

import csv
with open('notes.csv', 'a', newline='') as f:
    écrivain = csv.writer(f)
    écrivain.writerow(['Debbie', 'Scott', 13.5])

Exercices

Codes postaux

Téléchargez la base officielle des codes postaux au format csv à partir de cette page.

En utilisant ce fichier csv :

  1. Quel est le format de ce fichier ?
  2. Ouvrez ce fichier et déterminez :
    • A quel code postal est associé la charmante bourgade d'OTTERSWILLER ?
    • Combien de fois apparaît la ville de Marseille dans le fichier ? Et pourquoi ?

Prénoms

En utilisant cette page, récupérez le fichier des naissances en France (hors Mayotte) depuis 1900.

En utilisant ce fichier :

  1. Quel le prénom le plus donné chez les garçons et chez les filles l'année de votre naissance ? Et en 2022 ?
  2. Représentez graphiquement l'évolution au cours du temps (de l'année 1900 à 2022) de votre prénom (ou d'un prénom que vous aimez bien)

Utilisez-maintenant le fichier des prénoms ventilés par département :

Créez un dictionnaire dont les clés sont le numéro de département et la valeur, le nombre de fois où votre prénom a été donné dans ce département pour toutes les années.

Dans quel département votre prénom a-t-il été le plus donné ?