Fonction Python : moyenne et écart-type
On dispose d'une série de valeurs rangées dans une liste Python, par exemple les notes d'un élève : $ L = [12, 15, 9, 14, 10] $.
On rappelle que la moyenne $ \bar{x} $ d'une série de $ n $ valeurs $ x_1, x_2, \dots, x_n $ est :
La variance $ V $ mesure la dispersion autour de la moyenne, et l'écart-type $ \sigma $ est la racine carrée de la variance :
- Calculer « à la main » la moyenne de la série $ L = [12, 15, 9, 14, 10] $.
- Écrire une fonction Python moyenne(L) qui prend en argument une liste de valeurs et renvoie leur moyenne.
- Calculer « à la main » la variance puis l'écart-type de la série $ L $. On donnera l'écart-type arrondi à $ 0{,}01 $ près.
- Écrire une fonction Python ecart_type(L) qui renvoie l'écart-type de la liste $ L $.
- Utiliser les deux fonctions pour vérifier les résultats des questions 1. et 3.
Corrigé
- La série compte $ n = 5 $ valeurs. On additionne puis on divise par $ 5 $ :
$ \bar{x} = \dfrac{12 + 15 + 9 + 14 + 10}{5} = \dfrac{60}{5} = \mathbf{12} $. On parcourt la liste pour cumuler la somme, puis on divise par le nombre d'éléments. La fonction len(L) renvoie le nombre de valeurs de la liste :
def moyenne(L): somme = 0 for x in L: somme = somme + x return somme / len(L)- On utilise la moyenne $ \bar{x} = 12 $ trouvée à la question 1. On calcule les carrés des écarts à la moyenne :
$ V = \dfrac{(12-12)^2 + (15-12)^2 + (9-12)^2 + (14-12)^2 + (10-12)^2}{5} $.
$ V = \dfrac{0 + 9 + 9 + 4 + 4}{5} = \dfrac{26}{5} = 5{,}2 $.
L'écart-type est la racine carrée de la variance :
$ \sigma = \sqrt{5{,}2} \approx \mathbf{2{,}28} $. On réutilise la fonction moyenne pour obtenir $ \bar{x} $, puis on cumule les carrés des écarts. On importe la fonction sqrt (racine carrée) du module math :
from math import sqrt def ecart_type(L): m = moyenne(L) somme = 0 for x in L: somme = somme + (x - m)**2 variance = somme / len(L) return sqrt(variance)On exécute les deux fonctions avec la liste de l'énoncé :
>>> L = [12, 15, 9, 14, 10] >>> moyenne(L) 12.0 >>> ecart_type(L) 2.280350850198276On retrouve bien une moyenne de $ 12 $ et un écart-type $ \sigma \approx \mathbf{2{,}28} $, ce qui confirme les calculs des questions 1. et 3.
Remarque
La fonction ecart_type appelle la fonction moyenne : on peut réutiliser une fonction déjà écrite à l'intérieur d'une autre, ce qui évite de réécrire le même calcul.