''' Programme proposé par Marie-Anne DEJOAN (académie de la Guyane)
Calcul de la moyenne, de l'écart-type et de l'incertitude de répétabilité associée à une série de n mesures
Tracé d'un histogramme pour analyser l'étendue des mesures'''

from scipy import *   # Importer la bibliothèque scipy, module qui concerne le calcul scientifique
from pylab import *   # Importer la bibliothèque pylab, qui permet d’utiliser de manière aisée les bibliothèques NumPy
                      # (calcul scientifique) et matplotlib (représentation graphique à 2D)

import csv # Importation du module

source = open('capa.csv','r') # On ouvre le fichier "capa.csv" contenu dans le même dossier que le fichier python, en lecture.
                              # Le tout est enregistré dans une variable nommé "source".
lecteur = csv.reader(source,delimiter=";") # On créer un lecteur de csv. On précise le délimiteur utilisé.
capa = [] # On créer 1 listes vide pour accueillir les données (100 mesures de C)

for row in lecteur: # On parcourt le lecteur
    print(row) # Affiche la ligne
    capa.append(float(row[1])) # Stocke la 2nde valeur dans la liste "capa"

## CALCUL DE LA MOYENNE + ECART TYPE + INCERTITUDE TYPE

n=len(capa) # Compte le nombre d'éléments présents dans le tableau à 1 dimension et l'affecte à la variable n
print('Nombre de mesures :', n)
print('Moyenne de C :',mean(capa),' s') # Affiche la moyenne sur l'ensemble des mesures effectuées
s=std(capa, ddof = 1) # Calcul l'écart-type à n-1 (ou déviation standard au sens statistique) et l'affecte à la variable s
print('Ecart-type non biaisé pour la série de mesures de C :', s, 'uF') # Affiche l'écart-type non biaisé
U=s/sqrt(n) # Calcul de l'incertitude-type
print('Incertitude-type sur la mesure de C :', U, 'uF') # Affiche l'incertitude-type

## TRACE DES HISTOGRAMMES

figure("Capacité du condensateur") # Définit le nom de la figure
hist([capa],range=(min(capa),max(capa)),bins=30,edgecolor = 'blue')  # la fonction bins est associée
                                                                      # au nombre d'intervalles pour l'axe des abscisses

ylabel('Nb de mesures') # Définit le nom des ordonnées
legend(["Capacité en uF"]) # Définit la légende
show() # Affiche l'histogramme


