Exercice 101 Solution
Nous allons voir dans cet exercice, comment peut on faire des statistiques en pur python c.a.d sans utiliser les bibliothèques spécialisées comme statistics, numpy, pandas...
Pour démarrer on considère la distribution suivante qui contient la liste des ages des élèves dune classe de terminal:
1 2 3 4 5 |
studentsAge = [19,17,21,18,19,19, 22,23,20,18,21,24, 19,22,20,18,22,21, 19,20,19,23,21,18, 20,19,20,20,19,20] |
1) Détermination de la série statistique: écrire un programme en python qui calcul la liste des effectifs de chaque valeur du caractère age et renvoie la série statistique: S = { (x1 , n1), (x2 , n2), ... , (xp , np) }, associée à la liste des ages studentsAge
2) Calcul de la moyenne arithmétique: écrire un programme en python qui calcul la moyenne arithmétique de la série statistique S.
3) Détermination des fréquences: écrire un programme en python qui calcul la liste des fréquences de la série statistique S.
4) Calcul de la variance et de l'ecartype: écrire un programme en python qui calcul la variance et l'ecartype de la série statistique S.
Solution
1) Détermination de la série statistique
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
import math #----------------------------------------- # 1) Détermination de la série statistique #----------------------------------------- studentsAge = [19,17,21,18,19,19, 22,23,20,18,21,24, 19,22,20,18,22,21, 19,20,19,23,21,18, 20,19,20,20,19,20] # initialisation de la série statistique statistical_serie = [] # Effectif total N = len(studentsAge) # trier la liste studentsAge studentsAge.sort() for x in studentsAge: (xn , n) = (x , studentsAge.count(x)) if (xn , n) not in statistical_serie: statistical_serie.append((xn , n)) # afficher la série statistique print(statistical_serie) # output: [(17, 1), (18, 4), (19, 8), (20, 7), (21, 4), (22, 3), (23, 2), (24, 1)] #--------------------------------------- # 2) - Calcul de la moyenne arithmétique #--------------------------------------- # initialisation de la moyenne arithmétique m = 0 for i in range(0 , len(statistical_serie)): m = m + statistical_serie[i][0]*statistical_serie[i][1] m = m/len(studentsAge) print(" m = " , m) # output m = 20.033333333333335 #----------------------------------------------- # 3) - Détermination de la liste des fréquences #----------------------------------------------- # initialisation de la liste des fréquences Freq = [] for x in statistical_serie: Freq.append((x[0] , round(x[1]/N , 2))) print("liste_frequence = " , Freq) # output: liste_frequence = [(17, 0.03), (18, 0.13), (19, 0.27), (20, 0.23), (21, 0.13), (22, 0.1), (23, 0.07), (24, 0.03)] #-------------------------------------------- # 4) - Calcul de la variance et de l'ecartype #-------------------------------------------- # Calcul de la variance v = 0 for x in statistical_serie: v = v + x[1]*(x[0] - m)**2 v = v/N # afficher la variance print("v = " , v) # calcul de l'ecartype ecart = math.sqrt(v) # output: v = 2.7655555555555553 # afficher l'ecartype print("Ecartype = " , ecart) # output: Ecartype = 1.6629959577688562 |
Younes Derfoufi
CRMEF OUJDA