Prérequis : maîtriser les bases de la programmation Python (variables, entrées/sorties)
Contexte de la mise en œuvre de l'activité : en classe, en présence de l'enseignant
Ressources, matériel, documents nécessaires :
- Bibliothèque Python : pandas
- Un dossier contenant le fichier "villes_virgule.csv" et le programme à réaliser
Présentation
On trouve énormément de données sur Internet. Une partie de ces données sont publiques.
Par exemple le site data.gouv.fr recense un grand nombre de données librement réutilisables. Ces données sont souvent contenues dans un fichier au format CSV, ce qui est très courant sur Internet.
Cette activité va vous permettre d'extraire des informations utiles d'un tel fichier.
Liens utiles
https://www.data.gouv.fr/
https://www.data.gouv.fr/Description et exemple d'un fichier CSV
Comma-separated values, connu sous le sigle CSV, est un format informatique ouvert représentant des données tabulaires sous forme de valeurs séparées par des virgules.
Un fichier CSV est un fichier texte, par opposition aux formats dits "binaires". Chaque ligne du texte correspond à une ligne du tableau et les virgules correspondent aux séparations entre les colonnes. Les portions de texte séparées par une virgule correspondent ainsi aux contenus des cellules du tableau.
Voici un exemple du contenu d'un fichier CSV :
nom,prenom,date_naissance
Durand,Jean-Pierre,23/05/1985
Dupont,Christophe,15/12/1967
Terta,Henry,12/06/1978
Nous avons ici 3 personnes :
Jean-Pierre Durand qui est né le 23/05/1985
Christophe Dupont qui est né le 15/12/1967
Henry Terta qui est né le 12/06/1978
"nom", "prenom" et "date_naissance" sont appelés des descripteurs alors que, "Durand", "Dupont" et "Terta" sont les valeurs du descripteur "nom".
ATTENTION : La virgule est un standard pour les données anglo-saxonnes, mais pas pour les données aux normes françaises. En effet, en français, la virgule est le séparateur des chiffres décimaux. Il serait impossible de différencier les virgules des décimaux et les virgules de séparation des informations. C’est pourquoi on utilise un autre séparateur : le point-virgule (;). Dans certains cas cela peut engendrer quelques problèmes, vous devrez donc rester vigilants sur le type de séparateur utilisé.
Préparation
Créez un dossier de travail dans lequel vous placerez le fichier csv ainsi que le fichier py. Téléchargez le fichier CSV en le renommant "villes_virgule.csv" et ouvrez le avec NodePad++ (ou un autre éditeur de texte).
1. Combien de villes sont répertoriées ?
2. Donnez la surface et la population de Paris en 2012.
3. Ouvrez ce fichier avec un tableur tel que Excel ou Libre office Calc (jeu de caractère unicode utf-8) de manière à visualiser et travailler sur les différentes colonnes.
- Sur Excel, sélectionnez toute la colonne, puis "Données" et "Convertir" puis choisissez la virgule comme séparateur (vérifiez dans les options avancées du format que le point décimal soit sélectionné). Voir vidéo "excel_csv"
- Sur Libre office Calc, sélectionnez la langue anglaise et la virgule comme séparateur.
4. Triez le tableau par densité de population de la moins forte à la plus forte. Combien de villes ont une densité supérieure à 10 000 habitants par kilomètre carré ?
Pour traiter des données, nous allons utiliser la bibliothèque Python Pandas qui permet la manipulation et l'analyse des données. On donne :
import pandas
villes = pandas.read_csv("villes_virgule.csv") #L’objet « villes » contient le fichier
Il est possible de récupérer certaines données du tableau, par exemple, certaines lignes, certaines colonnes ou bien encore des valeurs uniques. Pour cela, il suffit d'utiliser la méthode « loc » avec les index des lignes et les index des colonnes. Le principe de fonctionnement de « loc » est relativement simple puisque l'on aura une instruction de la forme « villes.loc[index_ligne, index_colonne] ».
On peut aussi récupérer toutes les lignes d’une colonne « villes.loc[:, index_colonne] » ou toutes les colonnes d’une ligne « villes.loc[index_ligne, :] ». Index_ligne ou index_colonne peut prendre la forme d’un numéro ou d’un test.
Exemple:
print(villes.loc[villes["nom"]=="Paris", ["dens"]])
print("************************")
print(villes.loc[30437, :])
La méthode mean() permet de calculer une moyenne. On l’utilise avec « villes.loc[index_ligne, index_colonne].mean() »
Importer un fichier csv dans Excel - Vidéo
villes_virgule.csv - Fichier csv
Traitement des données avec Python
5. Réalisez le programme qui permet d’afficher la/les ville(s) inférieure(s) à 50 000 m2 (attention, l'unité est le km2 dans le fichier)
6. Indiquez la plus petite surface répertoriée.
7. Écrivez un programme permettant de calculer le nombre moyen d'habitants en 2012.