Exercice traitement des données : NBA
L’exercice suivant porte sur des données concernant le championnat de Basketball Américain NBA.
Fichier à télécharger : nba.csv (source : https://www.geeksforgeeks.org/python-pandas-dataframe/)
Module csv
- Charger le fichier CSV dans une liste de dictionnaires (utiliser la fonction DictReader()) nommée nba
- Écrire une fonction taille_metre() permettant de convertir la chaîne de caractère indiquant la taille du joueur (donnée en pieds (ft) et pouces (in)) en un flottant signifiant la taille en mètres (arrondir à deux chiffres après la virgule).
1 ft = 0.3048 m et 1 in = 25.4 mm
par exemple taille_metre(‘6-10’) doit renvoyer 2.08 - Écrire une fonction masse_kg() permettant de convertir la masse du joueur (donnée en livres (lb)) en kilogrammes (arrondir à un chiffre après la virgule).
1 lb = 0.4536 kg
par exemple masse_kg(185) doit renvoyer 83.9
Top 10
Écrire les expressions Python permettant d’afficher sous la forme (Nom, Valeur), le top 10 des joueurs :
- les plus jeunes
- les plus grands
- les plus lourds
- les mieux payés
Module pandas
- Charger le fichier CSV dans une trame de données (DataFrame ) nommée nba.
- Créer un nouveau champ Masse intégrant la conversion d’unité.
Il n’est pas possible de faire de même pour la conversion de la taille. En effet, le champ Height n’est pas de type numérique, la série nba.Height ne possède pas les propriétés des array de numpy : on ne peut donc pas utiliser la méthode .split() par exemple. Il va falloir procéder autrement pour créer un nouveau champ Taille .
- Écrire une fonction conv_metre() qui attend un paramètre de type pandas.Series (en l’occurrence la série contenant les tailles des joueurs en pieds et pouces) et renvoie une nouvelle série (pandas.Series) contenant les tailles des joueurs en mètre.
Filtrage
- Écrire une instruction permettant d’obtenir une trame de données composée des noms des joueurs, de leur équipe et de leur taille. La trame doit être triée dans l’ordre croissant des équipes et dans l’ordre décroissant des tailles.
- Écrire une instruction permettant d’avoir la liste, sans répétition, de toutes les équipes.
- Écrire une fonction moyenne_tailles() permettant d’obtenir une série contenant les moyennes des tailles des joueurs de chaque équipe (dans le même ordre que la liste des noms des équipes établie précédemment).
- A partir de la liste des équipes et de la série des moyennes des tailles établies précédemment, créer une nouvelle trame de données. La trame doit être triée dans l’ordre décroissant des moyennes des tailles.
Team Taille 26 Minnesota Timberwolves 2.042857 15 Dallas Mavericks 2.027333 10 Chicago Bulls 2.026000 4 Toronto Raptors 2.023333 2 New York Knicks 2.022500 ...
Corrélations
L’objectif de cette partie est de rechercher des corrélations entre les différentes caractéristiques des joueurs …
Afin de pouvoir afficher des graphiques, il faut importer les bibliothèques numpy et matplotlib :
import numpy import matplotlib.pyplot as plt
- Tracer le graphique représentant la taille des joueurs en fonction de leur masse. Y-a-t’il une corrélation ?
- Ajouter un nouveau champ IMC à la trame de données nba .
IMC = masse/taille²
- Tracer le graphique représentant l’IMC des joueurs en fonction de leur masse. Y-a-t’il une corrélation ?
Fusions
- En utilisant les données du fichier cities.csv, chargées dans une trame de données villes , réaliser la fusion des deux table de sorte d’obtenir une trame de données comprenant :
- les champs Team et College de nba ;
- les champs Name, Longitude, Latitude de villes.
- Tracer sur un même graphique les positions géographiques des équipes et des colleges, de deux coiuleurs différentes.