Exercice 101
Le but de cet exercice est de créer des algorithmes en pur python pour pratiquer les statistiques descriptive c.a.d sans faire recourt aux bibliothèques spécialisées comme statistics, numpy, pandas...
Pour commencer, on considère la distribution suivante qui contient la liste des ages des élèves d'une 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.
5) Calcul de la médiane: créer une fonction qui calcule la médiane d'une série. Appliquer cette fonction à la série studentsAge.
Solution
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 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
import math """ Les résultats fournis par ce script peuvent être obtenu d'une façon automatique via des bibliothèques python spécialisées en statistique comme: statistics, numpy, pandas... mais ici dans cet exercice, on essaye de créer les algorithmes qui regénère ces résultats! """ #------------------------------------------------------------------------- # 1) Détermination de la série statistique associée à la liste studentAge #------------------------------------------------------------------------- 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 #------------------------------------------------- # 5) - Calcul de la médiane #------------------------------------------------- # fonction qui calcule la médiane d'une série statistique def med(L): L.sort() n = len(L) if n%2 != 0: k = int((n-1)/2) return L[k-1] else: k = int(n/2) md = (L[k-1] + L[k])/2 return md # afficher la médiane de la série statistiques print("mediane = " , med(studentsAge)) |
Younes Derfoufi
CRMEF OUJDA