Contexte : Un élève de première NSI du lycée Mauriac a suivi une année de cours avec les élèves de Poudlard. Les matières suivies sont : ‘Potions’, ‘Botanique’, ‘étude des Moldus’, ‘Sortilèges’, ‘Vol sur Balai’ NSI (Numérologie Sorcellerie Illusionnisme)
Par soucis d’équité les notes entre 0 et 20 sont tirées de façon aléatoire.
1) Fichier csv et tableur
Ouvrir le fichier poudlard.csv avec notepad++ ou un autre éditeur de texte et justifier l’appellation de l’extension .csv du fichier
La virgule est le séparateur par défaut mais on peut rencontrer aussi d’autres séparateurs.
Le sigle CSV signifie Comma-Separated Values et désigne un fichier texte dont les valeurs sont séparées par des virgules.
La virgule est le séparateur par défaut mais il existe d’autres séparateurs
Vous pouvez ouvrir le fichier avec n’importe quel éditeur de texte et avec le bloc note ou notepad++ par exemple
- Quel est le séparateur utilisé ?
- Que contient la première ligne?
- Inscrivez vous à poudlard en modifiant le fichier csv à l’aide du bloc note

Vous pouvez aussi ouvrir le fichier avec un tableur
LibreOffice vous proposera des options pour l’ouvrir correctement. Vous pouvez en particulier choisir le séparateur
Sur Excel il faut d’abord ouvrir le tableur puis aller dans l’onglet données


2) Fichier csv et python
Comparez en testant les deux méthodes ci-dessous pour lire un fichier csv
Fichier = open('poudlard.csv','r') eleves=Fichier.readlines() Fichier.close()
import csv eleves=[] with open('216.csv',newline='')as csvfile: s=csv.DictReader(csvfile,delimiter=';') for line in s: eleves.append(dict(line))
En utilisant vos connaissances sur les listes et les dictionnaires complétez la variable eleves en attribuant toutes les notes de façon aléatoire.
Corrigés et compléments
1) import du fichier csv dans votre drive
On exécute les deux lignes de code ci-dessus puis on sélectionne les fichiers que l’on souhaite utiliser dans le notebook.
from google.colab import files
data_to_load = files.upload()
2) Lecture du fichier csv : méthode 1
On crée un tableau eleves contenent chacune des lignes du fichier csv
file=open('poudlard.csv','r',encoding = "UTF8")
eleves=[]
for line in file:
eleves .append(line)
eleves
['Nom;Classe;Sorcier?\n', 'Abbot, Hannah ; Poufsouffle ; Né-moldu\n', 'Bones, Susan ; Poufsouffle ; Né-moldu\n', 'Boot, Terry ; Serdaigle ; Né-sorcier\n', 'Brocklehurst, Mandy ; Serdaigle ; Né-moldu\n', 'Brown, Lavender ; Gryffondor ; Né-moldu\n', 'Bulstrode, Milicent ; Serpentard ; Né-moldu\n', 'Corner, Michael ; Poufsouffle ; Né-sorcier\n', 'Cornjual, Stephen ; Serdaigle ; Né-sorcier\n', 'Crabbe, Vincent ; Serpentard ; Né-sorcier\n', 'Dawis, Tracy ; Serpentard ; Né-moldu\n', 'Eheulhule, Keven ; Serdaigle ; Né-sorcier\n', 'Finch-Fletchley, Justin ; Poufsouffle ; Né-moldu\n', 'Finnegan, Seamus ; Gryffondor ; Né-sorcier\n', 'Goldstein, Anthony ; Serdaigle ; Né-sorcier\n', 'Goyle, Gregory ; Serpentard ; Né-sorcier\n', 'Granger, Hermione ; Gryffondor ;\n', 'Greengrass, Amelaie ; Serpentard ; Né-moldu\n', 'Hopkins, Wayne ; Poufsouffle ; Né-sorcier\n', 'Jones, Megan ; Poufsouffle ; Né-moldu\n', 'Le, Su ; Serdaigle ; Né-moldu\n', 'Longbottom, Neville ; Gryffondor ; Né-sorcier\n', 'MacDougal, Morag ; Poufsouffle ; Né-moldu\n', 'Malfoy, Draco ; Serpentard ; Né-sorcier\n', 'Midwidgeon, Eloise ; Poufsouffle ; Né-sorcier\n', 'Nott, Theodore ; Serpentard ; Né-sorcier\n', 'MacMillan, Ernie ; Poufsouffle ; Né-moldu\n', 'Parkinson, Pansy ; Serpentard ; Né-sorcier\n', 'Patil, Padma ; Serdaigle ; Né-sorcier\n', 'Patil, Parvati ; Gryffondor ; Né-sorcier\n', 'Perks, Sally-Anne ; Serdaigle ; Né-moldu\n', 'Potter, Harry ; Gryffondor ; Né-sorcier\n', 'Thomas, Dean ; Gryffondor ; Né-moldu\n', 'Turpin, Lisa ; Serdaigle ; Né-sorcier\n', 'Smith, Zacharius ; Poufsouffle ; Né-moldu\n', 'Weasley, Ronald ; Gryffondor ; Né-sorcier\n', 'Zambini, Blaise ; Serpentard ; Né-sorcier ']
La première valeur contient les index des colonnes comme dans le fichier csv.Ensuite chacune des lignes est enregistrée dans une variable de type str
On peut refaire la même chose avec une liste en compréhension
file=open('poudlard.csv','r',encoding = "ISO-8859-1")
eleves=[line for line in file]
file.close()
eleves[17]
'Greengrass, Amelaie ; Serpentard ; Né-moldu\n'
Les valeurs d’une ligne sont séparés par des « ; » On peut séparer les valeurs d’une ligne dans un tableau
eleves[17].split(",")
['Greengrass', ' Amelaie ; Serpentard ; Né-moldu\n']
On peut généraliser
file=open('poudlard.csv','r',encoding = "UTF8")
eleves=[line.split(';') for line in file]
file.close()
for val in eleves:
print(val)
['Nom', 'Classe', 'Sorcier?\n'] ['Abbot, Hannah ', ' Poufsouffle ', ' Né-moldu\n'] ['Bones, Susan ', ' Poufsouffle ', ' Né-moldu\n'] ['Boot, Terry ', ' Serdaigle ', ' Né-sorcier\n'] ['Brocklehurst, Mandy ', ' Serdaigle ', ' Né-moldu\n'] ['Brown, Lavender ', ' Gryffondor ', ' Né-moldu\n'] ['Bulstrode, Milicent ', ' Serpentard ', ' Né-moldu\n'] ['Corner, Michael ', ' Poufsouffle ', ' Né-sorcier\n'] ['Cornjual, Stephen ', ' Serdaigle ', ' Né-sorcier\n'] ['Crabbe, Vincent ', ' Serpentard ', ' Né-sorcier\n'] ['Dawis, Tracy ', ' Serpentard ', ' Né-moldu\n'] ['Eheulhule, Keven ', ' Serdaigle ', ' Né-sorcier\n'] ['Finch-Fletchley, Justin ', ' Poufsouffle ', ' Né-moldu\n'] ['Finnegan, Seamus ', ' Gryffondor ', ' Né-sorcier\n'] ['Goldstein, Anthony ', ' Serdaigle ', ' Né-sorcier\n'] ['Goyle, Gregory ', ' Serpentard ', ' Né-sorcier\n'] ['Granger, Hermione ', ' Gryffondor ', '\n'] ['Greengrass, Amelaie ', ' Serpentard ', ' Né-moldu\n'] ['Hopkins, Wayne ', ' Poufsouffle ', ' Né-sorcier\n'] ['Jones, Megan ', ' Poufsouffle ', ' Né-moldu\n'] ['Le, Su ', ' Serdaigle ', ' Né-moldu\n'] ['Longbottom, Neville ', ' Gryffondor ', ' Né-sorcier\n'] ['MacDougal, Morag ', ' Poufsouffle ', ' Né-moldu\n'] ['Malfoy, Draco ', ' Serpentard ', ' Né-sorcier\n'] ['Midwidgeon, Eloise ', ' Poufsouffle ', ' Né-sorcier\n'] ['Nott, Theodore ', ' Serpentard ', ' Né-sorcier\n'] ['MacMillan, Ernie ', ' Poufsouffle ', ' Né-moldu\n'] ['Parkinson, Pansy ', ' Serpentard ', ' Né-sorcier\n'] ['Patil, Padma ', ' Serdaigle ', ' Né-sorcier\n'] ['Patil, Parvati ', ' Gryffondor ', ' Né-sorcier\n'] ['Perks, Sally-Anne ', ' Serdaigle ', ' Né-moldu\n'] ['Potter, Harry ', ' Gryffondor ', ' Né-sorcier\n'] ['Thomas, Dean ', ' Gryffondor ', ' Né-moldu\n'] ['Turpin, Lisa ', ' Serdaigle ', ' Né-sorcier\n'] ['Smith, Zacharius ', ' Poufsouffle ', ' Né-moldu\n'] ['Weasley, Ronald ', ' Gryffondor ', ' Né-sorcier\n'] ['Zambini, Blaise ', ' Serpentard ', ' Né-sorcier ']
3) Lecture du fichier csv : méthode 2
import csv
eleves=[]
with open('poudlard.csv',newline='',encoding = "UTF8") as csvfile:
s=csv.DictReader(csvfile,delimiter=';')
for line in s:
eleves.append(dict(line))
eleves
[{'Nom': 'Abbot, Hannah ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Bones, Susan ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Boot, Terry ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Brocklehurst, Mandy ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Brown, Lavender ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Bulstrode, Milicent ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Corner, Michael ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Cornjual, Stephen ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Crabbe, Vincent ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Dawis, Tracy ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Eheulhule, Keven ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Finch-Fletchley, Justin ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Finnegan, Seamus ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Goldstein, Anthony ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Goyle, Gregory ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Granger, Hermione ', 'Classe': ' Gryffondor ', 'Sorcier?': ''}, {'Nom': 'Greengrass, Amelaie ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Hopkins, Wayne ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Jones, Megan ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Le, Su ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Longbottom, Neville ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'MacDougal, Morag ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Malfoy, Draco ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Midwidgeon, Eloise ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Nott, Theodore ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'MacMillan, Ernie ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Parkinson, Pansy ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Patil, Padma ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Patil, Parvati ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Perks, Sally-Anne ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Potter, Harry ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Thomas, Dean ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Turpin, Lisa ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Smith, Zacharius ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu'}, {'Nom': 'Weasley, Ronald ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier'}, {'Nom': 'Zambini, Blaise ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier '}]
On constate que eleves est une liste de dictionnaires
On récupère une valeur de la liste et on vérifie que c’est bien un dictionnaire
eleves[15]
{'Nom': 'Granger, Hermione ', 'Classe': ' Gryffondor ', 'Sorcier?': ''}
type(eleves[15])
dict
Il n’y a plus la première ligne du fichier csv contenant les champs.Les champs sont les clefs des dictionnaires.Ceci explique le décalage pour Hermione qui passe de l’indice 17 à l’indice 16.On peut utiliser les clefs pour récupérer des valeurs. Quel élève se trouve en ligne 16 ?
eleves[15]['Nom']
'Granger, Hermione '
Hermione est-elle une moldu?
eleves[15]['Sorcier?']
''
Quelle est la note d’Hermione en botanique ?
eleves[16]['Botanique']
--------------------------------------------------------------------------- KeyError Traceback (most recent call last) <ipython-input-26-961206a30514> in <cell line: 1>() ----> 1 eleves[16]['Botanique'] KeyError: 'Botanique'
Hermione n’a pas de note. Attribuons la note 19 à Hermione en botanique
eleves[16]['Botanique']=19
eleves[16]
{'Nom': 'Greengrass, Amelaie ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-moldu', 'Botanique': 19}
comment générer une note aleatoire ?
import random
note=random.randint(0,20)
print(note)
13
Comment générer une liste de n notes aléatoires ?
import random
n=10
notes=[]
for i in range(n):
notes.append(random.randint(0,20))
print(notes)
[0, 16, 17, 14, 9, 1, 3, 20, 2, 3]
Comment générer une liste de n notes aléatoires avec une liste en compréhension ?
import random
n=10
notes=[random.randint(0,20) for _ in range(n)]
print(notes)
pour un élève ici Hermione on peut générer une note aléatoire pour chacune des 5 matières
import random
matieres=['Potions', 'Botanique','étude des Moldus', 'Sortilèges', 'Vol sur Balai']
notes=[random.randint(10,20) for val in matieres]
for i in range(5):
eleves[15][matieres[i]]=notes[i]
eleves[15]
{'Nom': 'Granger, Hermione ', 'Classe': ' Gryffondor ', 'Sorcier?': '', 'Potions': 10, 'Botanique': 12, 'étude des Moldus': 14, 'Sortilèges': 11, 'Vol sur Balai': 19}
On génére une note aléatoire pour chacun des élèves dans chacune des matières
import random
matieres=['Potions', 'Botanique','étude des Moldus', 'Sortilèges', 'Vol sur Balai']
for eleve in eleves:
for i in range(5):
notes=[random.randint(10,20) for val in matieres]
eleve[matieres[i]]=notes[i]
eleves
[{'Nom': 'Abbot, Hannah ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu', 'Potions': 19, 'Botanique': 15, 'étude des Moldus': 11, 'Sortilèges': 15, 'Vol sur Balai': 11}, {'Nom': 'Bones, Susan ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu', 'Potions': 10, 'Botanique': 14, 'étude des Moldus': 16, 'Sortilèges': 12, 'Vol sur Balai': 14}, {'Nom': 'Boot, Terry ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier', 'Potions': 17, 'Botanique': 13, 'étude des Moldus': 11, 'Sortilèges': 13, 'Vol sur Balai': 12}, {'Nom': 'Brocklehurst, Mandy ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-moldu', 'Potions': 16, 'Botanique': 11, 'étude des Moldus': 20, 'Sortilèges': 10, 'Vol sur Balai': 14}, {'Nom': 'Brown, Lavender ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-moldu', 'Potions': 11, 'Botanique': 15, 'étude des Moldus': 17, 'Sortilèges': 11, 'Vol sur Balai': 16}, {'Nom': 'Bulstrode, Milicent ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-moldu', 'Potions': 20, 'Botanique': 12, 'étude des Moldus': 19, 'Sortilèges': 19, 'Vol sur Balai': 15}, {'Nom': 'Corner, Michael ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-sorcier', 'Potions': 10, 'Botanique': 18, 'étude des Moldus': 16, 'Sortilèges': 11, 'Vol sur Balai': 11}, {'Nom': 'Cornjual, Stephen ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier', 'Potions': 13, 'Botanique': 11, 'étude des Moldus': 11, 'Sortilèges': 13, 'Vol sur Balai': 14}, {'Nom': 'Crabbe, Vincent ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier', 'Potions': 17, 'Botanique': 11, 'étude des Moldus': 10, 'Sortilèges': 14, 'Vol sur Balai': 18}, {'Nom': 'Dawis, Tracy ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-moldu', 'Potions': 12, 'Botanique': 10, 'étude des Moldus': 13, 'Sortilèges': 10, 'Vol sur Balai': 10}, {'Nom': 'Eheulhule, Keven ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier', 'Potions': 11, 'Botanique': 18, 'étude des Moldus': 13, 'Sortilèges': 14, 'Vol sur Balai': 10}, {'Nom': 'Finch-Fletchley, Justin ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu', 'Potions': 18, 'Botanique': 16, 'étude des Moldus': 20, 'Sortilèges': 20, 'Vol sur Balai': 14}, {'Nom': 'Finnegan, Seamus ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier', 'Potions': 12, 'Botanique': 18, 'étude des Moldus': 10, 'Sortilèges': 17, 'Vol sur Balai': 10}, {'Nom': 'Goldstein, Anthony ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier', 'Potions': 10, 'Botanique': 14, 'étude des Moldus': 19, 'Sortilèges': 20, 'Vol sur Balai': 11}, {'Nom': 'Goyle, Gregory ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier', 'Potions': 15, 'Botanique': 11, 'étude des Moldus': 19, 'Sortilèges': 11, 'Vol sur Balai': 19}, {'Nom': 'Granger, Hermione ', 'Classe': ' Gryffondor ', 'Sorcier?': '', 'Potions': 15, 'Botanique': 12, 'étude des Moldus': 15, 'Sortilèges': 17, 'Vol sur Balai': 12}, {'Nom': 'Greengrass, Amelaie ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-moldu', 'Botanique': 15, 'Potions': 13, 'étude des Moldus': 12, 'Sortilèges': 16, 'Vol sur Balai': 14}, {'Nom': 'Hopkins, Wayne ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-sorcier', 'Potions': 15, 'Botanique': 12, 'étude des Moldus': 14, 'Sortilèges': 13, 'Vol sur Balai': 14}, {'Nom': 'Jones, Megan ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu', 'Potions': 14, 'Botanique': 12, 'étude des Moldus': 11, 'Sortilèges': 20, 'Vol sur Balai': 20}, {'Nom': 'Le, Su ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-moldu', 'Potions': 16, 'Botanique': 13, 'étude des Moldus': 14, 'Sortilèges': 14, 'Vol sur Balai': 17}, {'Nom': 'Longbottom, Neville ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier', 'Potions': 13, 'Botanique': 19, 'étude des Moldus': 10, 'Sortilèges': 12, 'Vol sur Balai': 10}, {'Nom': 'MacDougal, Morag ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu', 'Potions': 17, 'Botanique': 15, 'étude des Moldus': 17, 'Sortilèges': 13, 'Vol sur Balai': 12}, {'Nom': 'Malfoy, Draco ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier', 'Potions': 19, 'Botanique': 20, 'étude des Moldus': 20, 'Sortilèges': 17, 'Vol sur Balai': 12}, {'Nom': 'Midwidgeon, Eloise ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-sorcier', 'Potions': 17, 'Botanique': 13, 'étude des Moldus': 17, 'Sortilèges': 13, 'Vol sur Balai': 13}, {'Nom': 'Nott, Theodore ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier', 'Potions': 16, 'Botanique': 15, 'étude des Moldus': 16, 'Sortilèges': 13, 'Vol sur Balai': 10}, {'Nom': 'MacMillan, Ernie ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu', 'Potions': 16, 'Botanique': 15, 'étude des Moldus': 11, 'Sortilèges': 10, 'Vol sur Balai': 13}, {'Nom': 'Parkinson, Pansy ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier', 'Potions': 19, 'Botanique': 18, 'étude des Moldus': 13, 'Sortilèges': 11, 'Vol sur Balai': 18}, {'Nom': 'Patil, Padma ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier', 'Potions': 17, 'Botanique': 14, 'étude des Moldus': 16, 'Sortilèges': 10, 'Vol sur Balai': 14}, {'Nom': 'Patil, Parvati ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier', 'Potions': 10, 'Botanique': 13, 'étude des Moldus': 15, 'Sortilèges': 17, 'Vol sur Balai': 19}, {'Nom': 'Perks, Sally-Anne ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-moldu', 'Potions': 11, 'Botanique': 19, 'étude des Moldus': 13, 'Sortilèges': 19, 'Vol sur Balai': 13}, {'Nom': 'Potter, Harry ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier', 'Potions': 16, 'Botanique': 14, 'étude des Moldus': 18, 'Sortilèges': 19, 'Vol sur Balai': 14}, {'Nom': 'Thomas, Dean ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-moldu', 'Potions': 13, 'Botanique': 13, 'étude des Moldus': 15, 'Sortilèges': 10, 'Vol sur Balai': 10}, {'Nom': 'Turpin, Lisa ', 'Classe': ' Serdaigle ', 'Sorcier?': ' Né-sorcier', 'Potions': 20, 'Botanique': 14, 'étude des Moldus': 11, 'Sortilèges': 16, 'Vol sur Balai': 16}, {'Nom': 'Smith, Zacharius ', 'Classe': ' Poufsouffle ', 'Sorcier?': ' Né-moldu', 'Potions': 17, 'Botanique': 11, 'étude des Moldus': 20, 'Sortilèges': 10, 'Vol sur Balai': 10}, {'Nom': 'Weasley, Ronald ', 'Classe': ' Gryffondor ', 'Sorcier?': ' Né-sorcier', 'Potions': 18, 'Botanique': 20, 'étude des Moldus': 15, 'Sortilèges': 19, 'Vol sur Balai': 17}, {'Nom': 'Zambini, Blaise ', 'Classe': ' Serpentard ', 'Sorcier?': ' Né-sorcier ', 'Potions': 17, 'Botanique': 18, 'étude des Moldus': 15, 'Sortilèges': 10, 'Vol sur Balai': 15}]
Vous pouvez afficher vos résultats comme sur pronote avec un diagramme en « araignée »
import plotly.graph_objects as go
radar = go.Scatterpolar(r = [eleves[15][val] for val in matieres],theta = matieres,fill = 'toself')
data = [radar]
fig = go.Figure(data = data)
fig.update_layout(title_text = eleves[16]['Nom'])
fig.show()
3)Librairie Pandas
pandas est la librairie python de référence pour manipuler les données. Elle permet de manipuler les données sous forme de tables (DataFrame) et de les exporter avec différents formats. Elle permet aussi de créer facilement des graphes avec matplotlib par exemple