Les listes en Python : application aux probabilités et statistiques
- Fiche de cours
- Quiz et exercices
- Vidéos et podcasts
Dans le cadre des statistiques et des probabilités :
- Définir une liste en Python par extension et par compréhension.
- Manipuler les éléments d’une liste (ajout, suppression, modification).
- Parcourir les éléments d’une liste.
- Itérer sur les éléments d’une liste.
- On peut simuler avec Python une expérience
        aléatoire, par exemple celle qui consiste à
        lancer un dé équilibré un certain
        nombre de fois n. Pour obtenir les
        résultats de cette expérience, on a besoin de
        deux fonctions :
          - la première pour simuler le lancer du dé ;
- la seconde pour construire la liste des résultats, c’est-à-dire la liste de toutes les faces obtenues à l’issue des n lancers du dé.
 
- On peut également analyser des données
        statistiques, par exemple des données
        météorologiques. Dans une ville, on
        relève chaque jour la température pendant une
        période de 30 jours. Pour déterminer la
        température maximale, la température minimale
        et la température moyenne sur 30 jours, on a
        besoin de 3 fonctions :
          - une fonction max_val qui retourne la valeur maximale de la liste ;
- une fonction min_val qui retourne la valeur minimale ;
- une fonction moyenne_val qui retourne la valeur moyenne.
 
- On peut définir une fonction qui calcule l’espérance d’une variable aléatoire.
- Il est possible de comparer l’espérance d’une loi de probabilité et la valeur moyenne d’un échantillon de taille n. On peut ainsi vérifier que lorsque la taille n de l’échantillon est importante, la valeur de la moyenne de l’échantillon se rapproche de la valeur de l’espérance.
- Connaitre la notion de variable en Python
- Savoir utiliser des instructions conditionnelles et des boucles
- Connaitre la notion de fonction en Python
Les listes en Python peuvent être utilisées dans de nombreuses parties du programme. Cette fiche présente quelques utilisations possibles.
On considère un dé à six faces parfaitement équilibrées et numérotées de 1 à 6. On s’intéresse à l’expérience aléatoire consistant à lancer ce dé un certain nombre de fois n.
            Pour obtenir plus facilement les résultats de
            cette expérience, on la simule à
            l’aide d’un programme en Python.
            Pour cela, on réfléchit d’abord
            à l’algorithme à mettre en place.
            Il peut s’écrire sous la forme suivante.
          
tirer le dé
ajouter le résultat obtenu aux résultats
Retourner les résultats
Pour obtenir les résultats de cette expérience aléatoire, on a donc besoin de deux fonctions en Python :
- la première pour simuler le lancer du dé ;
- la seconde pour construire la liste des résultats, c’est-à-dire la liste de toutes les faces obtenues à l’issue des n lancers du dé.
Pour simuler le lancer d’un dé à six faces, on rédige le programme suivant :
| Langage Python | Interprétation | 
| L1 from random import* L2 def de(): L3 return randint(1, 6) | L1 : On importe le module random. L2 : On définit la fonction de() pour simuler le lancer de dé. L3 : La commande randint(1,6) tire un nombre entier aléatoire compris entre 1 et 6 inclus. La commande return retourne le nombre entier obtenu. | 
Une fois la fonction exécutée, on obtient, par exemple, les résultats suivants :
            L1 de()   # On
            appelle la fonction de() qui simule le lancer
            d’un dé à six faces.
            L2 3   # On
            obtient le résultat 3.
            L3 de()   # On
            appelle la fonction de() qui simule le lancer
            d’un dé à six faces.
            L4 1   # On
            obtient le résultat 1.
          
Pour construire la liste des résultats, c’est-à-dire la liste de toutes les faces obtenues à l’issue des n lancers du dé, on rédige le programme suivant :
| Langage Python | Interprétation | 
| L1 def
                  tirages(n): L2 liste_tirages=[] L3 while len(liste_tirages)<n: L4 liste_tirages.append(de()) L5 return liste_tirages | L1 : On définit la fonction tirages(n) qui crée
                  une liste contenant n résultats. L2 : On déclare les tirages comme une liste vide. L3, L4 : La boucle while ajoute un tirage de dé à la liste tant que la longueur de la liste est inférieure à n. L5 : La commande return retourne la liste des tirages. | 
Les deux fonctions précédentes ayant été exécutées, on obtient par exemple les résultats suivants :
            L1 tirages(10) # On
            appelle la fonction tirages(10) qui simule 10 fois le
            lancer d’un dé à six faces.
            L2 [4, 3, 4, 5, 2, 1, 6, 4,
            6, 3] # On obtient une liste de
            10 résultats.
            L3 tirages(20) # On
            appelle la fonction tirages(10) qui simule
            20 fois le lancer d’un dé à
            six faces.
            L4 [1, 3, 3, 2, 2, 4, 2, 5,
            1, 1, 5, 5, 1, 1, 1, 5, 3, 2, 1, 5] # On obtient
            une liste de 20 résultats.
          
Le programme final est donc :
L2 def de():
L3 return randint(1, 6)
L4 def tirages(n):
L5 liste_tirages=[]
L6 while len(liste_tirages)<n:
L7 liste_tirages.append(de())
L8 return liste_tirages

Dans une ville, on relève chaque jour la température pendant une période de 30 jours. Ces données sont indiquées sous la forme d’une liste de 30 valeurs, exprimées en degrés Celsius.
            Pour analyser ces données, on veut
            déterminer la température maximale, la
            température minimale et la température
            moyenne sur 30 jours.
            On a donc besoin de 3 fonctions :
          
- une fonction max_val qui retourne la valeur maximale de la liste ;
- une fonction min_val qui retourne la valeur minimale ;
- une fonction moyenne_val qui retourne la valeur moyenne.
Il existe déjà une fonction implémentée en Python qui retourne la valeur maximale d’une liste. Elle se nomme tout simplement max.
            def
            max_val(liste):  # fonction qui retourne la
            valeur maximale d’une liste
               return
            max(liste)
          
Si les températures relevées sont contenues dans une liste temp et que la fonction max_val a été exécutée, on obtient :
| Langage Python | Interprétation | 
| L1 temp= [29, 26, 27,
                  26, 26, 31, 30, 27, 28, 29, 28, 31, 30, 31, 30,
                  31, 30, 27, 30, 31, 29, 27, 28, 31, 28, 28, 29,
                  27, 30, 30] L2 max_val(temp) L3 31 | L1 : On définit la liste temp qui contient les
                  30 températures relevées. L2 : On appelle la fonction max_val. L3 : La valeur maximale retournée est 31. | 
La fonction min implémentée en Python retourne la valeur minimale d’une liste.
            def
            min_val(liste):  # fonction qui retourne la
            valeur minimale d’une liste
               return
            min(liste)
          
Si les températures relevées sont contenues dans une liste temp et que la fonction min_val a été exécutée, on obtient :
| Langage Python | Interprétation | 
| L1 temp= [29, 26, 27,
                  26, 26, 31, 30, 27, 28, 29, 28, 31, 30, 31, 30,
                  31, 30, 27, 30, 31, 29, 27, 28, 31, 28, 28, 29,
                  27, 30, 30] L2 min_val(temp) L3 26 | L1 : On définit la liste temp qui contient les
                  30 températures relevées. L2 : On appelle la fonction min_val. L3 : La valeur minimale retournée est 26. | 
Pour calculer la moyenne d’une liste, il suffit de calculer la somme de toutes les valeurs puis de la diviser par l’effectif total.
- La fonction sum() permet de calculer la somme des éléments d’une liste ne comportant que des valeurs numériques.
- L’effectif total est déterminé par le nombre total de valeurs de la liste, ce qui correspond à la longueur de la liste.
On a donc :
L2 moyenne = sum(liste)/len(liste)
L3 return moyenne
On obtient :
| Langage Python | Interprétation | 
| L1 temp= [29, 26, 27,
                  26, 26, 31, 30, 27, 28, 29, 28, 31, 30, 31, 30,
                  31, 30, 27, 30, 31, 29, 27, 28, 31, 28, 28, 29,
                  27, 30, 30] L2 moyenne_val(temp) L3 28.833333333333332 | L1 : On définit la liste temp qui contient les
                  30 températures relevées. L2 : On appelle la fonction moyenne_val. L3 : La valeur moyenne retournée est 28,833333333333332. | 

            On considère un dé parfaitement
            équilibré à six faces,
            numérotées de 1 à 6.
            On note X le
            résultat obtenu après un lancer de
            dé.
          
X est alors une variable aléatoire discrète : X ne peut prendre qu’un nombre fini de valeurs appartenant à {1, 2, 3, 4, 5, 6} mais on ne peut déterminer exactement quelle sera cette valeur.
            À chaque valeur xi ∈ {1,2,3,4,5,6}, on peut
            associer la probabilité pi =
            p(X = xi).
            Comme on est ici en situation
            d’équiprobabilité, toutes les
            probabilités sont égales
            à  .
.
          
            On appelle espérance de la variable
            aléatoire X, le nombre défini
            par :  .
.
          
L’espérance d’une variable aléatoire dépend des valeurs possibles de X et des probabilités associées, c’est-à-dire de la loi de probabilité de X.
            On peut utiliser une liste de listes en Python pour
            décrire la loi de probabilité d’une
            variable aléatoire.
            Si l’on revient à notre exemple du
            dé et si l’on note loi_X la loi de probabilité
            associée à X, on a :
            loi_X=[[1,1/6],[2,1/6],[3,1/6],[4,1/6],[5,1/6],[6,1/6]]
          
            Cette liste contient 6 éléments
            entre crochets.
            Chacun des éléments entre crochets est
            une liste à 2 éléments
            correspondant aux valeurs possibles
            de X et
            à leur probabilité.
            Le premier élément de la liste [1, 1/6]
            signifie que X peut prendre la
            valeur 1 avec une probabilité
            de  .
.
          
On peut alors accéder aux différents éléments de la liste à l’aide des indices :
- accès au premier élément de la
            liste loi_X
 >>> loi_X[0]
 [1, 0.16666666666666666]
- accès au premier élément du
            premier élément de la liste
 >>>loi_X[0][0]
 1
- accès au second élément du
            premier élément de la liste
 >>>loi_X[0][1]
 0.16666666666666666
L’algorithme permettant de calculer l’espérance d’une variable aléatoire X est :
On calcule le produit xi × pi
On l’ajoute à l’espérance
On retourne l’espérance
On a donc le programme suivant en Python :
| Langage Python | Interprétation | 
| L1 def
                  esperance_X(loi): L2 esperance=0 L3 for valeur in loi: L4 esperance+=valeur[0]*valeur[1] L5 return esperance | L1 : On définit la fonction esperance_X qui calcule
                  l’espérance de X à partir de sa
                  loi de probabilité. L2 : On déclare que l’espérance vaut 0. L3, L4 : La boucle for calcule la somme des produits du premier terme par le second terme pour chaque élément de la liste loi. L5 : La commande return retourne l’espérance ainsi calculée. | 
Après exécution, on obtient :
L2 esperance_X(loi_X)
L3 3.5
            Si on veut vérifier pour la
            variable X, on
            a bien :
            
             
          

En raison de la difficulté à coder des nombres décimaux (ou flottants) en Python, on peut obtenir des résultats numériques non exacts. Pour améliorer la précision, on peut alors avoir recours à des modules spécifiques ou travailler avec des valeurs exactes.
            Il existe un lien entre la notion
            d’espérance en probabilité et la
            notion de moyenne en statistiques.
            Pour le mettre en évidence, nous allons
            étudier la distance entre
            l’espérance d’une loi de
            probabilité et la valeur moyenne d’un
            échantillon de taille n.
            Pour cela, nous allons reprendre l’exemple du
            lancer de dé et les fonctions définies
            précédemment.
            Nous allons avoir besoin :
          
- de la fonction simulant un échantillon de n lancers (voir la partie 1 de la fiche, Simulation d’une expérience aléatoire) ;
- de la fonction calculant la moyenne d’une série statistique (voir la partie 2 de la fiche, Analyse de données statistiques) ;
- de la fonction déterminant l’espérance d’une variable aléatoire connaissant sa loi de probabilité (voir la partie 3 de la fiche, Calcul de l’espérance d’une variable aléatoire) ;
- d’une nouvelle fonction ecart_moyenne_esperance qui calculera la distance entre la moyenne et l’espérance.
Il suffit donc de reprendre certaines fonctions définies précédemment :
| Langage Python | Interprétation | 
| L1 from random
                  import* L2 def de(): L3 return randint(1, 6) L4 def tirages(n): L5 liste_tirages=[] L6 while len(liste_tirages)<n: L7 liste_tirages.append(de()) L8 return liste_tirages L9 def moyenne_val(liste): L10 moyenne = sum(liste)/len(liste) L11 return moyenne L12 def esperance_X(loi): L13 esperance=0 L14 for valeur in loi: L15 esperance+=valeur[0]*valeur[1] L16 return esperance | L1 à L3 : On exécute la fonction
                  de() pour
                  simuler le lancer d’un dé à
                  six faces. L4 à L8 : On exécute la fonction tirages(n) qui construit la liste de résultats des n lancers de dé. L9 à L11 : On exécute la fonction moyenne_val qui calcule la valeur moyenne de la liste. L12 à L16 : On exécute la fonction esperance_X qui calcule l’espérance de la variable aléatoire X. | 
Puis, on ajoute la fonction ecart_moyenne_esperance au programme précédent :
| Langage Python | Interprétation | 
| L17 def
                  ecart_moyenne_esperance(n): L18 loi_X=[[1,1/6],[2,1/6],[3,1/6],[4,1/6],[5,1/6],[6,1/6]] L19 echantillon=tirages(n) L20 moyenne =moyenne_val(echantillon) L21 esperance= esperance_X(loi_X) L22 dist=abs(moyenne–esperance) L23 print('taille échantillon :', n) L24 print('echantillon :', echantillon) L25 print('moyenne :', moyenne) L26 print('esperance X :', esperance) L27 print('distance moyenne-esperance :', dist) L28 return dist | L17 : On définit la fonction ecart_moyenne_esperance qui
                  calcule la distance entre la moyenne d’un
                  échantillon de taille n et
                  l’espérance. L18 : On précise la loi de probabilité associée à l’expérience. L19 : On crée un échantillon de taille n. L20 : On calcule sa moyenne. L21 : On calcule l’espérance de la variable aléatoire. L22 : On calcule la distance entre les deux. L23 à L28 : On affiche quelques éléments. | 
On obtient ainsi le programme complet permettant d’étudier la distance entre l’espérance d’une loi de probabilité et la valeur moyenne d’un échantillon de taille n.
Après avoir exécuté le programme, on peut effectuer quelques comparaisons :

On observe que pour une petite valeur de n (n = 10), la distance entre la moyenne et l’espérance vaut 0,5, ce qui n’est pas négligeable sur un échantillon de 10 valeurs.
Pour une valeur plus importante de n (n = 100), cette distance n’est plus que d’environ 0,06, ce qui est assez peu sur un échantillon de 100.
De la même manière, on peut calculer des distances pour des valeurs de n plus importantes :

La ligne 37 du programme a été mise en commentaire pour ne plus afficher l’échantillon et ne pas surcharger l’affichage :
# print(‘echantillon :’ echantillon)
            On vérifie empiriquement que plus la valeur
            de n
            est grande, plus la distance entre la moyenne de
            l’échantillon et l’espérance
            se rapproche de 0.
            Autrement dit, lorsque la taille n de
            l’échantillon est importante, la valeur de
            la moyenne de l’échantillon se rapproche
            de la valeur de l’espérance.
          

Des quiz et exercices pour mieux assimiler sa leçon
La plateforme de soutien scolaire en ligne myMaxicours propose des quiz et exercices en accompagnement de chaque fiche de cours. Les exercices permettent de vérifier si la leçon est bien comprise ou s’il reste encore des notions à revoir.

Des exercices variés pour ne pas s’ennuyer
Les exercices se déclinent sous toutes leurs formes sur myMaxicours ! Selon la matière et la classe étudiées, retrouvez des dictées, des mots à relier ou encore des phrases à compléter, mais aussi des textes à trous et bien d’autres formats !
Dans les classes de primaire, l’accent est mis sur des exercices illustrés très ludiques pour motiver les plus jeunes.

Des quiz pour une évaluation en direct
Les quiz et exercices permettent d’avoir un retour immédiat sur la bonne compréhension du cours. Une fois toutes les réponses communiquées, le résultat s’affiche à l’écran et permet à l’élève de se situer immédiatement.
myMaxicours offre des solutions efficaces de révision grâce aux fiches de cours et aux exercices associés. L’élève se rassure pour le prochain examen en testant ses connaissances au préalable.

Des vidéos et des podcasts pour apprendre différemment
Certains élèves ont une mémoire visuelle quand d’autres ont plutôt une mémoire auditive. myMaxicours s’adapte à tous les enfants et adolescents pour leur proposer un apprentissage serein et efficace.
Découvrez de nombreuses vidéos et podcasts en complément des fiches de cours et des exercices pour une année scolaire au top !

Des podcasts pour les révisions
La plateforme de soutien scolaire en ligne myMaxicours propose des podcasts de révision pour toutes les classes à examen : troisième, première et terminale.
Les ados peuvent écouter les différents cours afin de mieux les mémoriser en préparation de leurs examens. Des fiches de cours de différentes matières sont disponibles en podcasts ainsi qu’une préparation au grand oral avec de nombreux conseils pratiques.

Des vidéos de cours pour comprendre en image
Des vidéos de cours illustrent les notions principales à retenir et complètent les fiches de cours. De quoi réviser sa prochaine évaluation ou son prochain examen en toute confiance !
 
     
         
                                       
                                       
                                       
                                  
