====== TP statistiques ======
On propose ici de manipuler des données avec ordinateur.
Vous pouvez télécharger ce fichier : {{ :bts:mm1:data.csv |}}
Voici un **extrait** de ce fichier :
===== Avec le tableur =====
Avec un tableur comme Excel ou OpenOffice, récupérez les données et débrouiller vous pour obtenir :
* moyenne,
* écart-type,
* diagramme en boîte,
* histogramme avec des barres s'appuyant sur les classes $[10;20[$, $[20;30[$, ... $[60;70[$.
===== Avec Python =====
Je vous propose un script on appelle script un petit fichier programme en Python qui fait tout ce dont nous avons besoin.
**Préalable :**
- copiez le fichier ''data.csv'' dans le répertoire de votre choix,
- ouvrez un environnement Python comme **EduPython**,
- créez un nouveau fichier programme,
- enregistrez-le tout de suite (encore vide) sous le nom ''statistiques.py'' dans le même répertoire que ''data.csv''
Nous pouvons poursuivre.
Je découpe la suite en plusieurs morceaux pour insérer des explications, mais dans votre programme, tout sera à la suite.
=== Déclarer les bibliothèques ===
Python possède toutes les fonctions nécessaires. Souvent, ces fonctions ne sont pas présentes dans le langage de base. Elles se trouvent dans des bibliothèques de fonctions qu'il suffit d'utiliser.
Ici, nous voulons pouvoir calculer une moyenne, un écart-type et faire des graphiques.
from numpy import mean, std
import matplotlib.pyplot as plt
Dans ce qui précède, ''matplotlib.pyplot'' est une grosse bibliothèque graphique. On ne veut pas avoir à réécrire tout le temps ''matplotlib.pyplot'' alors on donne un alias (''as'') que l'on nomme ''plt''.
=== Récupérer le contenu du fichier ===
On souhaite ouvrir le fichier `data.csv` en mode **lecture** et en récupérer les lignes. Nous obtenons alors une sorte de liste ou chaque item est une ligne du fichier. Mais ces lignes sont considérées comme du texte. Nous devons donc indiquer à Python qu'il faut considérer chaque ligne comme un nombre à virgule : un ''float'' en langage informatique.
f = open('data.csv', 'r')
lines = f.readlines()
f.close()
values = [float(item) for item in lines]
À l'issue de ces lignes, ''values'' est une liste contenant toutes les valeurs de la série statistique.
=== Calculs statistiques ===
Nous avons importé les fonctions ''mean'' et ''std''. Il suffit de les utiliser : ''mean(values)'' nous donnera la moyenne. On peut l'afficher avec ''print''. Même chose pour l'écart-type.
print("moyenne :", mean(values))
print("écart-type :", std(values))
=== Graphiques ===
''matplotlib'' est une bibliothèque **TRÉS** riche. Vous pouvez voir un [[https://matplotlib.org/stable/gallery/index.html|aperçu]] de ce qui est possible.
Dans notre script, ''plt'' est la machine à faire des graphiques.
Parmi les graphiques disponibles, ''boxplot'' permet de faire des diagrammes en boîte. Je donne ci-dessous un exemple simple mais il y a beaucoup d'options.
''hist'' permet de tracer un histogramme.
plt.boxplot(values, vert=False)
plt.figure()
plt.hist(values, bins=[20, 30, 40, 50, 60, 70], density = True, linewidth=0.5, edgecolor="black")
plt.show()
Et voilà ! Il n'y a plus qu'à exécuter.