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.
Pour éviter les répétitions, utiliser la méthode .unique()  qui s’applique à une série et non une trame de données.
  • Écrire une instruction permettant d’avoir la liste, sans répétition, de toutes les équipes.
Pour calculer une moyenne, utiliser la méthode .mean()  qui peut s’appliquer à une série.
  • É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.

 

Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

code