Exercice 1
Nous voulons montrer à travers cet exercice, qu'on peut aborder les statistiques descriptive avec python pur sans utiliser les bibliothèques spécialisées en statistiques 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.
6) Calcul du mode statistique: écrire un algorithme qui calcul le mode statistiques.
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 94 95 96 97 98 99 100 101 102 103 104 105 106 |
import math """ Python est doté de nombreuses bibliothèques spécialisées en statistiques qui permettent de générer tous les résultats traités dans cet exercice d'une façon rapide et automatique. Mais ce qu'on veut atteindre dans cet exercice c'est de vous montrer qu'on peut faire toute sorte d'analyse statistique avec du python pur sans utiliser aucune des bibliothèques spécialisées en statistique comme: statistics, numpy, pandas... Pour chaque paramètre statistique: moyenne, variance, ecart-type, mode... on crée notre propre algorithme. """ #------------------------------------------------------------------------- # 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)) # output: mediane = 20.0 #------------------------------------------------- # 6) - Calcul du mode statistique #------------------------------------------------- # initialisation du mode statistique mode = studentsAge[0] for x in studentsAge: if studentsAge.count(x) > studentsAge.count(mode): mode = x print("mode = " , mode) # output: mode = 19 |
Younes Derfoufi
CRMEF OUJDA
1 thought on “Solution Exercice 1: analyse statistique avec python”