Université Nord-Américaine privée
Institut International de Technologie
Département Informatique
Travaux pratiques n°1 #numpy/ pandas/matplotlib & seaborn
Matière : Fouille de données Enseignants: Taoufik Ben Abdallah
Discipline : 2ème année Génie Informatique Tarek Ben Said
Année Universitaire : 2024-2025 / S1
L’objectif de ce TP est de revoir les prérequis essentiels pour introduire les concepts de data mining
et de machine learning, en mettant l’accent sur l’utilisation des bibliothèques numpy, pandas,
matplotlib et seaborn. Au cours de ce TP, vous explorerez, traiterez et visualiserez les données
d’un jeu de données contenant des informations sur 213 athlètes, disponible dans le fichier
"athlete.csv". Chaque athlète est décrit par les attributs suivants : Gender, Age, Height/Weight
et Sport. Le sexe peut être soit "M" pour Homme, soit "F" pour Femme, et le sport peut être
"Athlétisme", "Gymnastique", "Football", "Basketball" ou "Judo". L’attribut Age peut
contenir des valeurs indéfinies, marquées par « X ».
Le Tableau 1 montre un extrait du jeu de données présent dans le fichier "athlete.csv"
Gender Age Height/ Weight Sport
0 M 24 180.0/80.0 Basketball
1 M 23 170.0/60.0 Judo
2 M 28 175.0/64.0 Gymnastics
3 M 28 175.0/64.0 Gymnastics
4 M X 175.0/64.0 Basket
... ... ... ... ...
Tableau 1 : Extrait du jeu de données athlete.csv
Travail à Faire :
1/ Charger le jeu de données "athlete.csv" dans un DataFrame nommé 𝐝𝐝𝐝𝐝_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚, puis afficher
sa taille et les types de données de chaque attribut
2/ Diviser les valeurs de la colonne Height/Weight dans 𝐝𝐝𝐝𝐝_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚 en deux colonnes distinctes en
utilisant le caractère "/" comme séparateur. Ajouter ensuite ces deux nouvelles colonnes, nommées
Height et Weight, à 𝐝𝐝𝐝𝐝_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚 en les plaçant en deuxième et troisième position (NB. Ces
colonnes remplaceront la colonne Height/Weight existante)
3/ Remplacer les valeurs «Basket» par «Basketball» dans la colonne Sport de d𝐟𝐟_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚.
Afficher les 5 premières lignes de d𝐟𝐟_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚
4/ Renommer la colonne "Gender" en "Sex" dans d𝐟𝐟_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚. Afficher les 3 dernières lignes de
d𝐟𝐟_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚
5/ Afficher le sport le plus fréquemment pratiqué pour chaque sexe (M et F). Utiliser crosstab de pandas
6/ Créer une série, nommé 𝐒𝐒_𝐇𝐇𝐇𝐇, en utilisant les valeurs de hauteur (Height) et de poids (Weight)
selon la formule suivante : Height-Weight-100. Ensuite, ajouter une colonne nommée "State"
en dernière position dans 𝐝𝐝𝐝𝐝_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚. Cette colonne doit contenir 3 valeurs discrètes : «perfect»
si la valeur correspondante dans 𝐒𝐒_𝐇𝐇𝐇𝐇 est comprise entre 0 et 10 inclus, «Excessive» si la valeur
est supérieure à 10, et «Insufficiency» si la valeur est inférieure à 0
1/2
Travaux pratiques n°1 2024-2025
7/ Créer une figure de dimensions 3×11 pouces comprenant deux axes alignés horizontalement. Le
premier axe, intitulé «HIST», doit afficher un histogramme montrant la répartition des athlètes selon
leur sport. Le deuxième axe, intitulé «PIE», doit afficher un diagramme en secteurs illustrant la
distribution des athlètes en fonction de leur état (State).
8/ Remplacer les valeurs « X » dans la colonne Age par la moyenne des âges des athlètes ayant le même
sexe et le même sport que l’athlète concerné. Convertir la colonne Age de 𝐝𝐝𝐝𝐝_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚 en type entier.
Afficher ensuite d𝐟𝐟_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚
9/ Trier les observations de 𝐝𝐝𝐝𝐝_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚 par ordre décroissant selon la colonne Age et réinitialiser les
indices des lignes
10/ Écrire une fonction tracer_courbe(age=16) qui prend un paramètre age (par défaut age=16)
et retourne un graphique montrant le poids maximum des athlètes en fonction de leur âge à partir de
d𝐟𝐟_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚. La fonction doit également marquer la valeur du poids maximum des athlètes pour
l’âge spécifié (si cet âge existe dans les données). Tester cette fonction
11/ Tracer un histogramme montrant la distribution des athlètes en fonction de 4 intervalles d’âge.
Indiquer les valeurs des intervalles sur les axes des x (xticks) du graphique
12/ Supprimer les athlètes dont l’âge appartient à l’intervalle d’âge ayant le moins d’occurrences
13/ Tracer le nuage de points (scatter) de Height en fonction de Weight ainsi que de Height en
fonction d’Age. Ajouter une légende à la figure et supprimer les titres des axis
14/ Transformer les colonnes Height et Weight de 𝐝𝐝𝐝𝐝_𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚𝐚 en deux tableaux (ndarray): le premier,
un tableau 1D nommé 𝐗𝐗, pour la colonne Height, et le second, un tableau 2D nommé 𝐘𝐘, pour la
colonne Weight
Bon Travail
2/2