le type dictionnaire

Harry Potter

Amis & Ennemis

Sommaire

01.

Poudlard : Les différentes maisons

Analyse du fichier characters.csv

02.

Amis / Ennemis

Qui sont les amis d'Harry Potter

03.

Création d'un nouveau fichier

Ecrire le noms des amis et des ennemis de chaque personnage

1. Ouverture du fichier characters.

Téléchargement du fichier

Préparation de l'espace de travail

Préparation de l'espace de travail

  1. Créer un dossier tp_harry_{nom_eleve}
  2. Créer un fichier harry.py
Dans ce TP, nous allons étudier les principaux personnages des livres d'Harry Potter. Les données se trouvent dans un fichier nommé characters.csv
Téléchargez ici!

Il faut placer le fichier csv dans le dossier du TP.

Analyse des personnages


Pour rappel, le code suivant permet de générer une liste de dictionnaires, nommée personnages à partir du fichier CSV characters.csv. Pour chaque dictionnaire, les clés sont les valeurs des colonnes de la première ligne du fichier CSV :

import csv

with open('characters.csv','r', encoding='utf-8') as f:
    personnages = [ dict(row)  for row in csv.DictReader(f)]

                    


Combien il y a-t'il de lignes dans le fichier characters.csv ?

Parmi les clés ci-dessous laquelle n'est pas une clé relative à un dictionnaire lié à un personnage ?
  • Choisir un dictionnaire dans la liste personnages(en prenant par exemple le première élément de la liste)
  • Utiliser la méthode keys() pour obtenir les clés
  • Utiliser l'instruction print() pour afficher le résultat



Les différentes maisons

  1. Créer un dictionnaires maisons qui contient comme clés les noms des différentes maisons ("Gryffondor", "Poufsouffle", "Serdaigle" et "Serpentard" ) et comme valeurs le nombre de personnages du fichier appartenant à ces maisons.
  • Créer un dictionnaire maisons avec les clé "Gryffondor" "Poufsouffle" "Serdaigle Serpentard"
    En affectant la valeur 0 à toutes les clés

  • Exemple de création de dictionnaire : mon_dic = { cle1 : valeur1, cle2 : valeur2 }
  • A l'aide d'une boucle for, parcourir la liste personnage
  • Pour chaque élément de la liste personnage, il faut vérifier si la valeur associée à la clé home est égale (==) à l'une des maisons
  • Dans ce cas, incrémenter la valeur correspondant à la maison dans le dictionnaire maisons


Combien il y a-t'il de personnages dans la maison Poufsouffle ?

Représentation graphique
Pour mieux se représenter les données, il est courant d'utiliser des représentations graphiques.


import matplotlib.pyplot as plt

labels = ['Allemagne', 'France', 'Belgique', 'Espagne'] # Liste de labels (str)
values = [15, 80, 45, 40] # Liste de valeurs (int ou float)
colors = ['yellowgreen', 'gold', 'lightskyblue', 'lightcoral']  # Liste de couleur (str)

plt.pie(values,
        labels=labels, 
        colors=colors, 
        autopct=lambda p : '{:.2f}%  ({:,.0f})'.format(p,p * sum(values)/100)  ,
        shadow=True,
        startangle=90)

plt.axis('equal')
plt.savefig('nom_du_fichier.png')
plt.show()

        
Copier et modifier le code précédent, pour qu'il :
  1. crée un diagramme circulaire représentant le nombre de personne de chaque maison
  2. sauvegarde le diagramme dans un fichier nommé "maison_harry.png"

Il faudra changer le type des retours des méthodes keys() et values(). Il faudra changer le type en liste (list(...)).
Le résultat attendu est :


La construction de représentations graphiques, le choix de la représentation à partir de données est au cœur du métier de data-scientist

Les amis / ennemis d'Harry


Télécharger le fichier relations.csv Téléchargez ici!

Chaque ligne du fichier relations.csv contient 3 informations :
  • source : id de la personne concernée
  • target : id de la personne avec qui la source est en relation
  • type : + si les 2 protagonistes sont amis et - les 2 protagonistes sont ennemis
  1. Chercher l'id d'Harry Potter
  2. Ouvrir le fichier relations.csv et stoker les informations dans une liste de dictionnaires nommé relations
  3. Créer une liste amis qui contient tous les amis d'Harry Potter
  4. Créer une liste ennemis qui contient tous les ennemis d'Harry Potter
Combien a-t'il d'amis ? d'ennemis ?


3. Créer le fichier amis_ennemis.csv

new harry

Création d'un fichier CSV



Pour chaque personnes présente dans le fichiers characters.csv crée un dictionnaire ayant une clé nom, une clé amis et une clé ennemis
  • La valeur correspond à la clé nom doit-être le nom de la personne,
  • La valeur correspond à la clé amis est une liste contenant les noms des amis de la personne,
  • La valeur correspond à la clé ennemis est une liste contenant les noms des ennemis de la personne,
L'écriture d'un fichier CSV à partir d'une liste de dictionnaire

import csv

data_1 = {"cle1":donnee_1, "cle2":donnee_2}
data_2 = {"cle1":donnee_3, "cle2":donnee_4}
data_3 = {"cle1":donnee_5, "cle2":donnee_6}


with open("mon_fichier.csv","w") as f:
    writer = csv.DictWriter(f, fieldnames=["cle1", "cle2"])
    csv_writer.writeheader()
    csv_writer.writerow(data_1)
    csv_writer.writerow(data_2)
    csv_writer.writerow(data_3)
                


Créer un fichier amis_ennemis.csv qui contient la liste de chaque personnage ainsi que ses amis et ennemis.