Activité 1ère NSI – Traitements des données 1/5
La méthode splitline() permet de retirer tous les caractères de frontière de la ligne (retour à la ligne par exemple quel que soit le format)
Activité 1 : les villes de France
On trouve énormément de données sur internet sous le format CSV. Une partie de ces données sont publiques. Par exemple le site www.data.gouv.fr récence un grand nombre de données publiques mises à disposition par le gouvernement et consultables par tous les citoyens. Ces données sont librement réutilisables.
Le RGPD (Règlement Général sur la Protection des Données) est un règlement de l'Union européenne entrée en vigueur en France en 2018. Il constitue le texte de référence en matière de protection des données à caractère personnel.
L’objectif de cette activité est de réaliser un module permettant de lire un fichier csv, de récupérer l’ensemble des données sous un dictionnaire et de construire un module permettant d’extraire une donnée à partir d’une référence connue.
Le site sql.sh possède une base de données publiques sur les villes Françaises accessible ici http://sql.sh/736-base- donnees-villes-francaises dont est issue le fichier villes.csv qui vous est fourni.
Cette activité sera réalisée sous Jupyter en suivant le modèle fourni. A l’issu de l’activité, enregistrer les différentes fonctions sous Spyder dans un fichier traitementcsv.py. Ce dernier resservira ensuite pour d’autres activités.
1. Ecrire une fonction recherche_descripteur(nom_fichier) qui renvoie la liste des descripteurs du fichier nom_fichier sous forme d’une liste
2. Ecrire une fonction ajouter_dico(nom_fichier, descripteurs) qui crée une liste de dictionnaires à l’aide des données du fichier sous la forme :
liste = [{descripteur1 :valeur1_1,descripteur2 :valeur2_1…},{descripteur1 :valeur1_2,descripteur2 :valeur2_2…},…]
dico 1 = ligne des données n°1 dico 2 = ligne des données n°2
3. Ecrire une fonction affiche_donnees(liste, descripteur, valeur) qui renvoie la liste des dictionnaires dont le descripteur descripteur possède la valeur valeur dans la liste liste.
Traitements des données
Activité 1ère NSI – Traitements des données 2/5
4. Structurer un programme qui demande le nom d’un fichier à l’utilisateur, affiche la liste des descripteurs, demande le nom d’un descripteur à l’utilisateur puis une valeur associée à ce descripteur et qui affiche la ligne de donnée correspondant.
Par exemple, le programme donnerait :
ou
Puis :
ou
Enfin :
Activité 1ère NSI – Traitements des données 3/5
5. Pour les plus rapides.
A partir des données du fichier, tracer le graphique des positions des différentes communes des Yvelines (en longitude/latitude), en tenant compte de la densité de population pour le codage des couleurs. Petit plus : indiquer le nom des communes dont la population est supérieure à 35.000 habitants.
Exemple de réalisation :
Activité 1ère NSI – Traitements des données 4/5
Activité 2 :
L’objectif de cette activité est de présenter la fonction de tri sorted et ses différentes options.
Cette activité sera réalisée sous Jupyter en suivant le modèle fourni.
Vous utilisez pour cela le fichier europe.csv Prolongements :
A l’issue de l’activité, proposer des fonctions permettant :
✓ D’afficher les données d’un pays sélectionné Exemple de fonctionnement :
✓ D’afficher la liste des pays ayant une population supérieure à une valeur saisie Exemple de fonctionnement :
✓ D’afficher la liste des pays ayant une superficie supérieure à une valeur saisie Exemple de fonctionnement :
Activité 1ère NSI – Traitements des données 5/5
D'où peuvent provenir les lignes vides dans un fichier CSV ?
Selon votre configuration, il se peut qu'en visualisant le contenu du fichier CSV généré vous constatiez la présence d'une ligne vide après chaque ligne de donnée.
L'explication réside dans le séparateur d'enregistrement. En effet, le séparateur d'enregistrement par défaut est CR+LF (ou "\r\n"). C'est à dire que Python adopte la convention utilisée par quelques anciens OS non-Unix – et Windows – pour les fins de lignes.
Or sous Unix et les systèmes Unix-like (Linux, MacOS X, FreeBSD, ...) seul LF sert à délimiter la fin de ligne. Pour complexifier encore les choses, d'autres OS utilisent à l'inverse uniquement CR, ou le couple complémentaire LF+CR pour signaler la fin de ligne. Face à cette confusion, certains éditeurs de texte sont tentés d'interpréter indépendamment CR puis LF comme deux séparateurs consécutifs de fin de ligne. D'où une mystérieuse ligne vide après chaque enregistrement.
Une bonne nouvelle cependant le reader CSV de Python interprète intelligemment les fins de lignes et accepte sans distinction CR, LF ou CR+LF (mais pas LF+CR) comme délimiteur d'enregistrement.
Zoom sur l’importation de modules personnels
Comme vous l’avez vu dans le cours sur les notions de variables, il est possible d’importer des modules personnalisés développées précédemment.
Vous venez de développer des fonctions de traitements CSV utiles dans de nombreux projets et vous les avez sauvegardées sous le nom traitementcsv.py. Un tel fichier est appelé un module et il va pouvoir être importé dans un autre fichier, et en particulier dans le fichier qui contient votre programme principal.
Rappel : pour utiliser vos fonctions, vous pouvez, au choix ajouter les lignes en début de script : from traitementcsv import recherche_descripteur, ajouter_dico from traitementcsv import *
Remarques :
✓ Dans le premier cas, seules les fonctions recherche_descripteur, ajouter_dico seront utilisables et visibles, dans le second cas, toutes les fonctions le seront.
✓ Dans l’appel au fichier de module, l’extension .py ne doit pas être indiquée… Python se doute bien en effet que vous comptez utiliser un fichier qui contient du code exploitable !
Activité 3 :
L’objectif de cette activité est de réaliser, en utilisant les fonctions développées lors de l’activité 1, un module permettant de recherche les doublons présents dans une table et de tester la cohérence d’une table (données manquantes, données inexploitables.
Cette activité sera réalisée sous Jupyter en suivant le modèle fourni. A l’issu de l’activité, enregistrer les nouvelles fonctions développées sous Spyder dans le traitementcsv.py. Vous vous composez ainsi un module de traitement des données utilisable dans d’autres situations et projets.