logo

Le rugby

Nous allons travailler sur les données contenues dans le fichier JoueursTop14.csv.

Exercice 1 : extraction des données

Analyser le fichier JoueurTop14.csv avec notepad++ par exemple.
Ecrire une fonction liste_joueurs de paramètre un fichier csv et qui renvoie une liste de dictionnaires contenant les données 'Poste', 'Taille (en cm)' et 'Poids (en kg)' du fichier.

Voir une solution

Exercice 2 : liste des postes

Ecrire une fonction postes qui a pour paramètre la liste des joueurs et qui renvoie un dictionnaire dont les clés sont les postes et les valeurs 0, plus tard cela correspondra au nombre de postes.

Voir une solution

Exercice 3

Ecrire une fonction liste_joueurs_par_rapportqui a les paramètres taille, poids, liste des joueurs qui renvoie une liste de dictionnaires ayant deux clés le poste et la distance par rapport aux 'taille' et 'poids' saisis.

Voir une solution

Exercice 4

Ecrire une fonction KNN qui a les paramètres k le nombre de voisins, taille, poids, liste des joueurs qui renvoie le dictionnaire des postes mis à jour.

Voir une solution

Ecercice 5

Ecrire une fonction prediction qui a les paramètres taille, poids, k le nombre de voisins, liste des joueurs, qui renvoie une prédiction sur le 'Poste' le plus adapté...

Voir une solution

Avec un graphique

Voici le nuage de points de cette série réalisée avec le module matplotlib
Il faut être dans un repère orthonormé pour utiliser la distance euclidienne

Voici le code :

import matplotlib.pyplot as plt

def representation(data=joueurs):
    for i in range(len(data)):
        lacouleur="tab:"
        if(data[i]['Poste']=="Talonneur"):
            lacouleur+="blue"
            lemarker="x"
            label="Avant"
        elif(data[i]['Poste']=="Pilier"):
            lacouleur+="red"
            lemarker="+"
            label="Mêlée"
        elif(data[i]['Poste']=="2ème ligne"):
            lacouleur+="red"
            lemarker="+"
            label="2ème ligne"
        elif(data[i]['Poste']=="3ème ligne"):
            lacouleur+="green"
            lemarker="1"
            label="3ème ligne"
        elif(data[i]['Poste']=="Mêlée"):
            lacouleur+="purple"
            lemarker="."
            label="Mêlée"
        elif(data[i]['Poste']=="Ouverture"):
            lacouleur+="purple"
            lemarker="."
            label="Ouverture"
        elif(data[i]['Poste']=="Centre"):
            lacouleur+="brown"
            lemarker="*"
            label="Centre"
        elif(data[i]['Poste']=="Ailier"):
            lacouleur+="blue"
            lemarker="*"
            label="Ailier"
        else :
            lacouleur+="orange"
            lemarker="^"
            label="Arrière"
        plt.plot(int(data[i]['Poids']), int(data[i]['Taille']), color=lacouleur,marker=lemarker,label=label)
    plt.xlabel("Poids (en kg)")
    plt.ylabel("Taille (en cm)")
    plt.axis('equal') #pour avoir un repère orthonormé
    plt.show()

representation()