Diagramme des notes (DS4)

Calculs de statistiques et affichage de deux graphiques pour le 4ème DS, portant sur l’étude de bout en bout d’un problème d’ingénierie numérique réelle (installation d’un réseau connecté de fissuromètre).

Quelques statistiques...

  • Pour ce contrôle, la moyenne est de 12.95/25, soit 10.31/20.
  • L’écart-type était de 3.9/25, environ 3.5 sur 20; le niveau de la classe est assez étalé.
  • La meilleure note est 20.75/25 soit 18/20.
  • La moins bonne note est 06.5/25 soit 05.7/20.
  • Pour ce contrôle, il y a 31 notes (car ... 31 élèves !).

Deux graphiques

Camembert :

_images/Camembert_notes_DS4.png

Histogramme :

_images/Histogramme_notes_DS4.png

Conseils

Des conseils un peu en vrac :

  • Améliorez la présentation de vos copies, encore et toujours ! Souligner est une bonne idée, mais le faire à l’arrache sans règle ne vous aidera pas. Utiliser des couleurs est un plus, mais restez sobres (vert foncé ou rouge, vert étant préféré). Mettez toujours en valeur vos résultats (souligner ou encadrer, mais encadrer est plus long),
  • Inutile de recopier l’énoncé ou les titres, écrire III suffit.
  • Essayez d’être encore plus attentif à la syntaxe de Python (il y a eu trop d’erreurs d’indentation et de : manquants, des def écrits en Def et pareil pour while, if, else ou for). De même, l’indentation est cruciale en Python,
  • Vous devez être plus attentifs aux consignes de l’énoncé (certains élèves oublient de donner la complexité dans les dernières questions),
  • Comme dans chaque concours/DS, vous devez essayer de “grapiller” des points là où vous pouvez (la fin du sujet était pas trop dure ici, de même la partie sur la transformée de Fourier rapide commençait par des questions faciles),
  • Attention au nom des variables et des fonctions. Par exemple \(\alpha\) est à évité, préférez a ou alpha, et moyenne_optimisee doit s’écrire avec un _ au milieu (c’est un détail, mais forcez-vous à toujours à suivre exactement les conventions de nommage de l’énoncé),
  • Lorsque le sujet demande une fonction “optimisée” (moyenne_optimisee, ecarttype_optimise), doutez-vous bien que la complexité attendue doit être BIEN meilleure que la version naïve (ici, en \(\mathcal{O}(1)\) au lieu de \(\mathcal{O}(n)\)),
  • Seulement quelques questions demandaient un calcul de complexité, il faut les faire ! C’est toujours des points faciles,
  • La fin (question 12) contenant une requête SQL. Vous êtes peu nombreux à avoir eu les 2 points, mais c’était facile d’avoir 1.5 points (et c’est très rapide à écrire, encore des points gagnés),
  • Dans un calcul de complexité, faites attention aux fonctions appellées (frequence par exemple est en \(\mathcal{O}(N^2)\) mais uniquement parce que fourier est en \(\mathcal{O}(N^2)\)),
  • Si le sujet impose un nom pour une constante, utilisez CE nom (omegac, alarme).

Documentation

Demonstration de l’utilisation de matplotlib pour afficher un histogramme des notes du DS4. Bien plus joli et facile qu’avec Excel !

Vous pouvez lire la documentation ci-dessous ou le code pour réviser les bases de l’utiliser de matplotlib.

La correction complète du sujet d’écrit d’informatique (Polytechnique et ENS, 2015, pour PSI et PT) est disponible ici. Ce sujet d’écrit a été posé en devoir écrit surveillé (DS) pour le cours d’informatique pour tous, en prépa MP au Lycée Lakanal.

Afficher_un_histogramme_de_notes_DS4.max_notes_brutes = 25

Les notes étaient sur 25.

Afficher_un_histogramme_de_notes_DS4.notes_brutes = [6.5, 12.0, 10.0, 16.25, 10.5, 20.75, 14.75, 16.75, 12.5, 11.5, 10.25, 12.0, 17.25, 7.5, 9.75, 18.75, 11.0, 13.0, 8.25, 14.0, 8.5, 7.5, 20.0, 13.75, 9.5, 19.25, 17.75, 8.75, 15.0, 14.0, 14.25]

Liste des notes. Non ordonnées.

Afficher_un_histogramme_de_notes_DS4.sur_vingt(note)[source]

Pour convertir une note sur max_notes_brutes (ici = 25) en une note sur 20 :

\[x \mapsto x \times \frac{18}{20.75}\]

Puisque la note maximale brute sur 25 était 20.75, ça met la meilleure note à 18/20.

Exemple :

>>> note = 17  # Sur 25 !
>>> sur_vingt(note)  
14.75...
Afficher_un_histogramme_de_notes_DS4.sur_cent(note)[source]

Pour convertir une note sur max_notes_brutes (ici = 25) en une note sur 100 (pourcentage) :

\[x \mapsto x \times \frac{100}{25}\]

Exemple :

>>> note = 17  # Sur 25 !
>>> sur_cent(note)  
62.96...
Afficher_un_histogramme_de_notes_DS4.nb = 10

Nombre-1 de parts dans le diagramme en camembert. 10 est pas mal.

Afficher_un_histogramme_de_notes_DS4.dict_compte = {80: 2, 50: 7, 20: 1, 70: 3, 40: 7, 60: 4, 30: 7}

On créé ce dictionnaire pour compter combien d’élèves sont dans chaque intervalle [0%, 10%[, [10%, 20%[ etc. Cf. https://www.python.org/dev/peps/pep-0274/ pour des rappels sur les dictionnaires.

Afficher_un_histogramme_de_notes_DS4.notes = [20.0, 40.0, 40.0, 60.0, 40.0, 80.0, 50.0, 60.0, 50.0, 40.0, 40.0, 40.0, 60.0, 30.0, 30.0, 70.0, 40.0, 50.0, 30.0, 50.0, 30.0, 30.0, 80.0, 50.0, 30.0, 70.0, 70.0, 30.0, 60.0, 50.0, 50.0]

On transforme ces notes en entiers \(0, 1, \dots, 10\). On utilise une liste en compréhension, cf. https://www.python.org/dev/peps/pep-0202/ Ou https://en.wikipedia.org/wiki/List_comprehension#Python pour plus de détails.

Afficher_un_histogramme_de_notes_DS4.labels = ['1 notes dans [20%, 30%]', '7 notes dans [30%, 40%]', '7 notes dans [40%, 50%]', '7 notes dans [50%, 60%]', '4 notes dans [60%, 70%]', '3 notes dans [70%, 80%]', '2 notes dans [80%, 90%]']

On créé les étiquettes du diagramme camembert, encore par une liste en compréhension, et on utilise du formatage de chaînes de caractères (string formatting, see https://docs.python.org/2/library/stdtypes.html#str.format).

Afficher_un_histogramme_de_notes_DS4.x = [1, 7, 7, 7, 4, 3, 2]

On créé les données numériques qui seront affichées.

Afficher_un_histogramme_de_notes_DS4.cc = <matplotlib.colors.ColorConverter object>

On créé les différents tons de gris qui seront utilisés pour le diagramme camembert. Cette étape est plus technique que le reste du script, et est hors programme

Afficher_un_histogramme_de_notes_DS4.colors = [(0.8, 0.8, 0.8), (0.7, 0.7, 0.7), (0.6, 0.6, 0.6), (0.5, 0.5, 0.5), (0.4, 0.4, 0.4), (0.30000000000000004, 0.30000000000000004, 0.30000000000000004), (0.19999999999999996, 0.19999999999999996, 0.19999999999999996)]

More details on http://matplotlib.org/api/colors_api.html#matplotlib.colors.ColorConverter.to_rgb

Afficher_un_histogramme_de_notes_DS4.camembert()[source]

Affiche un diagramme camembert des notes.

Afficher_un_histogramme_de_notes_DS4.histogramme()[source]

Affiche l’histogramme des notes.


Sortie du script

$ python Afficher_un_histogramme_de_notes_DS4.py
Pour ce controle, il y a 31 notes.
Pour ce controle, la moyenne est de 12.95 sur 25
Soit 11.23 sur 20 si on ne change rien.
0 eleve(s) ont eur leur note entre 0 % et 1 %.
0 eleve(s) ont eur leur note entre 10 % et 11 %.
1 eleve(s) ont eur leur note entre 20 % et 21 %.
7 eleve(s) ont eur leur note entre 30 % et 31 %.
7 eleve(s) ont eur leur note entre 40 % et 41 %.
7 eleve(s) ont eur leur note entre 50 % et 51 %.
4 eleve(s) ont eur leur note entre 60 % et 61 %.
3 eleve(s) ont eur leur note entre 70 % et 71 %.
2 eleve(s) ont eur leur note entre 80 % et 81 %.
0 eleve(s) ont eur leur note entre 90 % et 91 %.
0 eleve(s) ont eur leur note entre 100 % et 101 %.

Le fichier Python se trouve ici : Afficher_un_histogramme_de_notes_DS4.py.