Le traitement de données structurées
Sciences numériques et technologie
Utilisation de python pour le traitement des données
Après avoir vu différents types de données, nous allons maintenant, à l'aide du langage de programmation Python, apprendre à effectuer des traitements sur ces données.
Ouvrez le logiciel Thonny que vous utilisez pour programmer en Python
Pour traiter des données, nous allons utiliser la bibliothèque Python Pandas. Une bibliothèque Python permet de rajouter des fonctionnalités par rapport au langage de base. La bibliothèque Pandas est donc très utilisée pour tout ce qui touche au traitement des données.
Pour nos premiers pas avec Pandas, nous allons utiliser des données très simples au format CSV : ces données sont contenues dans le fichier identites.csv.
Entraînement 1
Pour pouvoir utiliser un fichier externe, vous allez devoir enregistrer dans le même répertoire votre fichier python et le fichier de données que nous allons utiliser.
- Enregistrer le fichier de données identites.csv sur votre clé USB dans le répertoire SNT/DONNEES/
- Créer un fichier python avec le code suivant et l'enregistrer dans le dans le même répertoire:
import pandas identites=pandas.read_csv("identites.csv")
Le code ci-dessus est très simple :
- Avec la première ligne, nous importons la bibliothèque pandas afin de pouvoir l'utiliser
- À la deuxième ligne, nous créons une variable "iden" qui va contenir les données présentes dans le fichier "identites.csv"
Entraînement 2
Modifier votre programme pour pouvoir afficher la variable identites
Voir une solutionUne colonne a été ajoutée par rapport à ce que nous obtenions avec le tableur :
Les nombres présents dans cette colonne sont appelés des index. Chaque ligne du tableau a un index (première ligne : index 0, deuxième ligne index 1...)
ATTENTION : les index commencent à 0 et pas à 1
Les colonnes possèdes également des index, dans notre exemple ces index correspondent au "nom" (index de la première colonne), au "prenom" (index de la deuxième colonne) et à "date_naissance" (index de la troisième colonne)
En résumé : les lignes possèdent des index (0,1,2..), les colonnes possèdent des champs ("nom", "prenom",...)
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 l'instruction 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 loc[index,champ]
Le programme suivant permet de récupérer le le prénom de M. Dupont (index 1):
import pandas
identites=pandas.read_csv("identites.csv")
print(identites)
print("-------------------------")
info=identites.loc[1,'prenom']
print(info)
Entraînement 3
Modifiez le programme du pour que la variable info contienne "12/06/1978"
Entraînement 4
Il est possible de récupérer toutes les lignes d'une colonne, il suffit de remplacer la partie "index" de "loc" par ":"
Modifier votre programme pour que la variable "info_nom" contienne bien toutes les données de la colonne d'index "nom", autrement dit, tous les noms.
Entraînement 5
Il est possible de récupérer toutes les colonnes d'une ligne particulière, cette fois en remplaçant la partie "champ" de "loc" par ":"
Modifier votre programme pour que la variable "info_ligne_2" contienne bien toutes les données de la dernière ligne (index 2)
Afin d'avoir des exemples plus complexes à traiter, dans la suite, nous allons travailler sur les données contenues dans le fichier ville_virgule.csv.
Entraînement 6
Vérifier que le programme suivant, la variable "info_villes" contient bien les données contenues dans le fichier ville_virgule.csv.
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
Comme vous pouvez le constater, il manque des données dans le tableau qui s'affiche dans la console Ide (les données manquantes sont symbolisées par des ...), en effet, le tableau contient trop données pour qu'il soit entièrement affiché dans la console Ide. Heureusement, il existe une solution :
Dans Ide, dans la fenêtre située juste au-dessus de la console, vous allez trouver un onglet "Explorateur de variables". Cliquez sur cet onglet, vous devriez alors obtenir ceci :
Double-cliquez sur "info_villes" et vous devriez alors voir apparaître une nouvelle fenêtre qui contiendra un tableau avec l'ensemble des données.
En explorant le tableau, vous devriez, notamment dans les colonnes l'altitude mini et maxi, voir apparaître un étrange "nan" pour les dernières villes du tableau. "nan" signifie "not a number", ici, cela veut tout simplement dire que certaines données sont manquantes.
Nous allons maintenant introduire des conditions dans la sélection des villes. Imaginez par exemple que vous désirez obtenir un tableau contenant toutes les villes qui ont une altitude minimum supérieure à 1500 m pour cela on sélectionnera uniquement les lignes qui auront la valeur du descripteur "alt_min" supérieure à 1500.
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
nom_alt=info_villes.loc[info_villes["alt_min"]>1500,["nom","alt_min"]]
Entraînement 7
En vous inspirant de ce qui a été fait précédemment, écrivez un programme qui permettra d'avoir les villes qui ont une densité d'habitant inférieure à 50 (dans le tableau ainsi créé, on aura 3 colonnes : le nom de la ville, la densité de la population et l'altitude minimum)
Il est possible de combiner plusieurs facteurs de sélection en utilisant un "et"("&") ou un "ou"("|").
nom_alt=info_villes.loc[(info_villes["alt_min"]>1500) & (info_villes["dens"]>50),["nom","dens","alt_min"]]
Vous devriez constater qu'il y a, en France, une seule ville avec une densité de population supérieure à 50 et une altitude minimum supérieure à 1500 m.
Il est aussi possible d'effectuer des calculs sur des colonnes, par exemple des moyennes. Il suffit d'utiliser l'instruction "mean" pour effectuer une moyenne :
moyenne_alt_min=info_villes.loc[:,"alt_min"].mean()
Vous devriez constater que l'altitude minimum moyenne est de 193 m en France. Je rappelle que dans "loc[:,"alt_min"]" le ":" signifie que l'on considère toutes les lignes du tableau. De plus le "alt_min" que le calcul de la moyenne porte bien sur les données du descripteur "alt_min".
Entraînement 8
Écrivez un programme permettant de calculer le nombre moyen d'habitants en 2012
Pour l'instant nous avons calculé une moyenne sur l'ensemble des lignes, il est aussi possible d'imposer une condition sur les lignes qui seront utilisées pour le calcul.
nbe_hab=info_villes.loc[info_villes["alt_min"]>1500,"nb_hab_2012"].mean()
print(nbe_hab)
Vous devriez constater que les villes ayant une altitude minimum supérieure à 1500 m avaient en moyenne 350 habitants en 2012.
Il est aussi possible de trier le tableau en fonction des valeurs d'un descripteur. Il suffit d'utiliser l'instruction "sort_values"
tri_alt_min=info_villes.sort_values(by=["alt_min"])
Vous devriez obtenir un nouveau tableau de données "tri_alt_min" trié dans l'ordre croissant des altitudes minimums.
Il est aussi possible de trier par ordre décroissant en ajoutant "ascending=False" :
tri_alt_min=info_villes.sort_values(by=["alt_min"], ascending=False)
Entraînement 9
Quelle est la ville ayant l'altitude minimum la plus importante de France ? (Indiquer la réponse en commentaire dans votre programme)