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))