Aller au contenu

Activité de découverte du format CSV

Dans ce chapitre (et le suivant), vous allez devoir :

  • enregistrer, créer et exploiter des fichiers au format CSV ;
  • importer les données d'un fichier CSV dans un programme Python ;
  • exporter des informations issues d'un programme vers un fichier au format CSV ;
  • sélectionner et extraire des données parmi toutes les données importées ;
  • trier les données selon certains critères ;
  • fusionner des données (jointure de tables).

Préparation du répertoire de travail

Dossier NSI_Tables_Donnees 1. Dans votre répertoire courant, créez un dossier nommé [NSI_Tables_Donnees].
2. Dans ce dossier, enregistrez les fichiers CSV ainsi que les programmes réalisés au cours de ce chapitre (et du suivant).

Activité n°1 - Du tableur au format CSV

  1. Ouvrez le logiciel LibreOffice Calc.
  2. Dans une feuille de calcul, copiez/collez les données suivantes, relatives à la collection des jeux « Zelda » parus sur consoles de salon :

    titre console sortie_japon sortie_france développeur nombre_rééditions
    The Legend of Zelda NES 1986 1988 Nintendo 6
    Zelda II: The Adventure of Link NES 1987 1990 Nintendo 6
    A Link to the Past Super NES 1991 1992 Nintendo 3
    Zelda: The Wand of Gamelon Philips CD-I 1993 1993 Animation Magic 0
    Link: The Faces of Evil Philips CD-I 1993 1993 Animation Magic 0
    Zelda’s Adventure Philips CD-I 1994 1994 Viridis 0
    Ocarina of Time Nintendo 64 1998 1998 Nintendo 5
    Majora’s Mask Nintendo 64 2000 2000 Nintendo 4
    The Wind Waker GameCube 2002 2003 Nintendo 1
    Four Swords Adventures GameCube 2004 2005 Nintendo 0
    Twilight Princess GameCube 2006 2006 Nintendo 1
    Skyward Sword Wii 2011 2011 Nintendo 0
    Hyrule Warriors Wii U 2014 2014 Omega Force 2
    Breath of the Wild Switch 2017 2017 Nintendo 0

  3. Enregistrez une première fois ce tableau au format .ods (format LibreOffice Calc) sous le nom Zelda_Consoles.ods.

    Fichier obtenu

    Le fichier au format .ods : Tableur Zelda

  4. Enregistrez une seconde fois ce tableau à l'aide de la commande [Fichier/Enregistrer sous].

    1. Dans le menu déroulant [Type], sélectionnez [Texte CSV].
    2. Dans la fenêtre [Export de fichiers texte] choisissez le [Jeu de Caractères] « Unicode (UTF-8) » et vérifiez que le [Séparateur de champ] est bien la virgule « , ».
  5. Ouvrez ensuite le fichier CSV ainsi créé avec un éditeur de texte (Notepad++ sous Windows, l'éditeur de texte usuel ou Geany sous Linux) et observez comment les données sont enregistrées.

    Fichier obtenu

    Le fichier au format CSV avec la virgule comme séparateur : Tableur Zelda On peut constater que les champs ne sont pas entourés de guillemets (puisqu'on ne l'a pas précisé à l'enregistrement du fichier CSV).

  6. Ouvrez le fichier Zelda_Consoles.ods à l'aide de LibreOffice Calc.

  7. Enregistrez ce fichier au format CSV mais en choisissant cette fois-ci la tabulation comme séparateur.
    Vérifier le résultat avec l'éditeur de texte.

    Fichier obtenu

    Le fichier au format CSV avec la tabulation comme séparateur : Tableur Zelda

Activité n°2 - Gestion des séparateurs

Le site de l'INSEE permet de télécharger des données au format CSV.

  1. Téléchargez et enregistrez dans votre répertoire de travail le fichier esperanceVieFemme.csv qui porte sur l'espérance de vie des femmes en France.

    Source

    Ce fichier a été téléchargé à cette adresse.

  2. Ouvrez ce fichier avec un bon éditeur de texte (donc pas le bloc-note de base de Windows).
    Quel est le séparateur de données utilisé ?

    Séparateur

    On constate que le séparateur de données utilisé n'est pas la virgule mais le point virgule.
    C'est souvent le cas dans un fichier CSV français puisqu'on réserve traditionnellement la virgule à un rôle de séparateur décimal.

    Toutefois, dans le fichier csv, on peut constater que c'est le point qui a bien été utilisé comme séparateur décimal.

  3. Ouvrez ensuite ce fichier avec un tableur (LibreOffice Calc de préférence).

    Importation

    Le séparateur du fichier étant le point-virgule, faites attention à bien sélectionner le point-virgule comme séparateur à l'ouverture avec LibreOffice : Importation LibreOffice Calc

  4. Ouvrez à nouveau le fichier avec un (bon) éditeur de texte.

    1. A l'aide du menu [Recherche] -> [Remplacer...], remplacez les points « . » utilisés comme séparateur décimal par des virgules.
    2. Ajoutez également une donnée à la ligne n°4, dans une nouvelle cellule sur la droite où vous entrerez simplement le nombre 89,65 : Importation LibreOffice Calc
    3. Sauvegardez ce fichier et fermez l'éditeur de texte.
  5. Ouvrez ce fichier modifié avec un tableur (LibreOffice Calc je rappelle) en choisissant virgule et point-virgule comme séparateur de données.
    Que constatez-vous ? A votre avis, pourquoi?

    Fichier modifié et conséquences

    Le fichier CSV modifié est téléchargeable en cliquant ici

    Voici une capture d'écran de ce fichier ouvert avec LibreOffice : Importation LibreOffice Calc

    En ligne 4, les valeurs 89 et 65 ont été entrées dans des cellules supplémentaires en colonnes D et E. Ces valeurs ont été bien séparées comme s'il s'agissait de deux données distinctes puisqu'on a

    • ajouté au fichier le nombre 89,65,
    • et déclaré la virgule et le point-virgule comme séparateurs.

    Les autres données de la colonne B n'ont pas été séparées malgré la virgule car elles sont encapsulées dans des guillemets " " qui en font une unité et permettent d'annuler le rôle de séparateur de la virgule.

A retenir

Lorsqu'on ouvre un fichier CSV avec un tableur, en sélectionnant la virgule comme séparateur de données, on constate que les données qui sont les unes en-dessous des autres dans le fichier texte initial constituent les données d'une même colonne dans le tableur.

De même les données qui sont sur une même ligne du fichier texte, séparées par une virgule, sont sur une même ligne du fichier tableur.

A noter

Tous les fichiers CSV utilisés dorénavant dans les exercices et les activités utiliseront la virgule comme séparateur de données.