Statistiques

Question 1

  1. Ecrire une fonction en Python, de paramètre n, qui renvoie une liste de n valeurs entières aléatoires comprises entre 0 et 20.
  2. Exécuter cette fonction plusieurs fois

Une proposition de réponse :

# -*- coding: utf-8 -*-
from random import *
def Notes(n) :
    Liste_notes = []
    for i in range(n) :
        Liste_notes.append(randint(0,20))
    return Liste_notes
>>>>>> Notes(19)
[15, 13, 9, 8, 11, 9, 2, 9, 14, 2, 11, 0, 0, 10, 9, 9, 15, 4, 7]
>>> Notes(19)
[15, 4, 8, 17, 7, 8, 6, 1, 1, 2, 13, 11, 20, 1, 19, 12, 5, 17, 3]
>>> Notes(19)
[9, 7, 9, 11, 12, 14, 6, 7, 19, 12, 6, 20, 19, 16, 6, 0, 12, 6, 6]
>>>

Remarque :

Dans la suite, on fera appel à cette fonction afin de générer une série de notes qu'on utilisera dans la suite pour calculer la moyenne, la médiane, la variance etc.... de cette série de notes.

Question 2 : Moyenne

  1. Ecrire une fonction en Python, de paramètre une liste, qui renvoie la moyenne des valeurs de cette liste.
  2. Exécuter cette fonction plusieurs fois

Une proposition de réponse :

# -*- coding: utf-8 -*-
from random import *

def Notes(n) :
    Liste_notes = []
    for i in range(n) :
        Liste_notes.append(randint(0,20))
    return Liste_notes

def moyenne(liste) :
    s = 0
    for k in liste:
        s = s + k
    return s/len(liste)
>>> liste=Notes(19)
>>> liste
[8, 4, 6, 5, 19, 6, 11, 12, 16, 8, 0, 8, 1, 16, 11, 14, 1, 14, 17]
>>> moyenne(liste)
9.31578947368421
>>>

Question 3 : Moyenne pondérée

  1. Ecrire une fonction en Python, de paramètre une liste de valeurs et une liste d'effectifs, qui renvoie la moyenne pondérée.
  2. Exécuter cette fonction

Une proposition de réponse :

# -*- coding: utf-8 -*-
def moyennePonderee(valeurs,effectifs) :
    liste=[]
    for i in range(len(valeurs)):
        liste.append(valeurs[i]*effectifs[i])
    return sum(liste)/sum(effectifs)
>>> valeurs=[10,14,11,9,17,15,12]
>>> effectifs=[1,1,0,2,1,2,1]
>>> moyennePonderee(valeurs,effectifs)
12.625
>>>

Question 4 : Variance

  1. Ecrire une fonction en Python, de paramètre une liste, qui renvoie la variance des valeurs de cette liste.
  2. Exécuter cette fonction plusieurs fois

Une proposition de réponse :

# -*- coding: utf-8 -*-
from random import *
def f(x):
    return x**2

def Notes(n) :
    Liste_notes = []
    for i in range(n) :
        Liste_notes.append(randint(0,20))
    return Liste_notes

def variance(liste) :
    liste_carres=[f(x) for x in liste]
    moyenne=sum(liste)/(len(liste))
    moyenne_carres=sum(liste_carres)/(len(liste))
    return moyenne_carres-f(moyenne)
>>> liste=Notes(19)
>>> liste
[20, 5, 5, 13, 10, 8, 18, 0, 3, 13, 4, 4, 6, 17, 18, 20, 7, 5, 2]
>>> variance(liste)
40.864265927977826
>>>

Question 5 : Médiane

  1. Ecrire une fonction en Python, de paramètre une liste, qui renvoie la médiane des valeurs de cette liste.
  2. Exécuter cette fonction plusieurs fois

Une proposition de réponse :

# -*- coding: utf-8 -*-
def mediane(liste) :
	liste.sort()	#tri croissant de la liste
	n=len(liste)	# affecter à n la longueur de la liste
	if n%2==0:
		return (liste[n//2]+liste[n//2-1])/2
	else :
		return liste[n//2]
>>> liste=Notes(19)
>>> liste
[0, 6, 0, 4, 13, 13, 15, 19, 5, 6, 7, 17, 9, 2, 18, 19, 20, 12, 19]
>>> mediane(liste)
12
>>> liste=Notes(18)
>>> liste
[0, 10, 6, 9, 6, 17, 13, 18, 3, 19, 1, 4, 10, 17, 7, 5, 16, 6]
>>> mediane(liste)
8.0
>>>

Question 6 : Quartile (Académie de Lyon)

  1. Ecrire une fonction en Python, de paramètre une liste, qui renvoie le premier quartile des valeurs de cette liste.
  2. Exécuter cette fonction plusieurs fois

Une proposition de réponse :

# -*- coding: utf-8 -*-
def effectifs_cumul_croissant(liste_effectifs):
    L = []
    somme_partielle = 0
	
    for x in liste_effectifs :
        somme_partielle = somme_partielle + x
        L.append(somme_partielle)
		
    return L 


def frequences_cumul_croissant(liste_effectifs):
    effectifs_cumul = effectifs_cumul_croissant(liste_effectifs)
    total = effectifs_cumul[-1]
    return [ x/total for x in effectifs_cumul]
	
	
def Q1(liste_valeurs, liste_effectifs):
    FCC = frequences_cumul_croissant(liste_effectifs)
    for i in range(len(liste_valeurs)):
        if FCC[i] >= 0.25 :
            return liste_valeurs[i]
	

valeurs =  [1,2,4,7,10,12,30]
effectifs = [2,12,60, 150,204,218,222]


print(effectifs_cumul_croissant(effectifs))
print(frequences_cumul_croissant(effectifs))
print(Q1(valeurs, effectifs))
>>> 
[2, 14, 74, 224, 428, 646, 868]
[0.002304147465437788, 0.016129032258064516, 0.08525345622119816, \
0.25806451612903225, 0.4930875576036866, 0.7442396313364056, 1.0]
7
>>>

Question 7 : Mode (Académie de Lyon)

  1. Ecrire une fonction en Python, de paramètre une liste de notes, qui renvoie le mode des notes de cette liste
  2. Exécuter cette fonction plusieurs fois

Une proposition de réponse :

# -*- coding: utf-8 -*-
def mode(liste):
    # liste des valeurs sans répétition :
    liste_valeurs = []
    for x in liste :
        if not(x in liste_valeurs) :
            liste_valeurs.append(x)

    # liste contenant le nombre de répétitions de chaque valeur :
    liste_effectifs = []
    for x in liste_valeurs :
        liste_effectifs.append(liste.count(x))

    # valeur max dans liste_effectifs
    effectif_maxi = max(liste_effectifs)

    # liste qui contiendra les valeurs
    # d'effectif = effectif_maxi
    liste_mode = []

    for x in liste_valeurs :
        if liste.count(x) == effectif_maxi :
            liste_mode.append(x)

    return liste_mode





L = [1,2,3,3, 5, 1, 2, 6,3,5,3]
print(mode(L))
>>> 
[3]
>>>