arthur.bebou

Le site arthur.bebou.netlib.re - retour accueil

git clone git://bebou.netlib.re/arthur.bebou
Log | Files | Refs |

commit 9d5c4b3db77827efd0e3209b23ef9f69baebaf21
parent 40ab4727d1a660f7fa2d16f479bfcec6c8aeb893
Auterice: Arthur Pons <arthur.pons@unistra.fr>
Date:   Tue, 20 Aug 2024 11:52:10 +0200

Ajout article JO et script

Diffstat:
Acontents/jo-stats/index.sh | 206+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Acontents/jo-stats/oly | 82+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 288 insertions(+), 0 deletions(-)

diff --git a/contents/jo-stats/index.sh b/contents/jo-stats/index.sh @@ -0,0 +1,206 @@ +#! page +title: Des données, des stats et un jeu sur les JO d\'été +author: Arthur Pons +description: Des données, des statistiques et un jeu sur les JO d\'été +publication: 2024-09-01 + +sectionmd: main + +**Article non relu** + +Avant toute chose je tiens à rappeler que l'édition 2024 Jeux Olympiques à Paris +a provoqué ou servi de prétexte pour expulser de nombreuses personnes, dont +la plupart sont vulnérables, de la capitale[^1]. La logique sécuritaire +appliquée lors de l'évènement, mais déjà bien rodé depuis des années, a +également mené des dizaines de militant·es en garde à vue abusives[^2][^3]. + +Petit j'ai adoré regarder les JO et j'admets que mon éveil politique a rendu mon +enthousiasme à ce sujet assez amer. Je pense que cette nostalgie m'empêche de +prendre des positions et de modifier mes comportements à la hauteur de mes +convictions. Là où il m'est très facile de ne plus manger de viande, de me +déplacer sans (direction) brûler de combustibles fossiles j'ai eu du mal à +mettre l'évènement de côté. Plus qu'à militer contre au fond. + +Alors en attendant que les JO disparaissent ou que l'on parvienne à imaginer une +manière de les faire qui ne génère plus systématiquement de nombreux impacts +sociaux et environnementaux[^4], j'ai voulu regarder quelques statistiques à leurs +propos. + +## Les données + +J'ai cherché un jeu de données tabulaire comportant toutes les médailles +remportées dans l'histoire des JO avec au moins l'édition, la couleur de la +médaille, l'athlète, la date, le sport et l'évènement. Il se trouve que je n'ai +pas trouvé. En traînant dans ce monde on tombe souvent sur le site +www.olympedia.org. Si l'on s'en tient aux résultats je pense que l'on retrouve +plus ou moins la même chose sur wikipédia mais je n'ai jamais vraiment pris le +temps d'apprendre à interroger wikidata. Le gros désavantage est que les +personnes derrière ce site on arrêté de renseigner la base de donnée. Les +résultats post Tokyo 2020 n'y sont donc pas, ni les potentielles mise à jour +suite à des contrôles positifs etc. Je ne garantis pas de n'avoir fait aucune +erreur dans le scraping des données, notamment pour les premiers JO. Si vous en +relevez n'hésitez pas à me le dire. + +Voici dans un seul fichier les 37 775 médailles délivrées aux JO d'été : +[all.tsv.gz - ~535Ko](all.tsv.gz). Il peut être d'gzipé en un fichier de 5,7Mo avec `gunzip all.tsv.gz` ou, si vous n'avez pas la place, lu directement avec `zcat all.tsv.gz`. + +Le format est le suivant : + + 1 id : identifiant de la page de résultat du site olympedia.org + 2 date : date de l'évènement. Actuellement dans un non standardisé, désolé + 3 location : lieu de l'évènement + 4 edition : année des JO (par ex : 2004 pour Athène) + 5 sport : sport de l'évènement + 6 event : "évènement" pour lequel la médaille a été octroyé. Par exemple sport=athlétisme, event=saut en hauteur + 7 country : pays de l'athlète + 8 athlete : athlète médaillé + 9 color : couleur de la médaille + +## Des statistiques + +Deux remarques avant de se lancer : + + 1. Ne partez pas du principe qu'un évènement c'est trois athlètes qui se + partagent l'or l'argent et le bronze. De nombreux évènements se jouent par + par équipe voir distribuent plusieurs médailles d'une même couleur (le judo + et la boxe donnent deux bronzes par exemple). Il existe même un évènement + par équipe où les USA ont présenté plusieurs équipes ! Malheureusement il + est difficile de faire la part des choses dans un TSV. + 2. Le TSV contient une ligne par personne qui a obtenue une médaille. Un + évènement de handball représente donc toute une floppée de ligne même si, + ramené au pays, cela ne représente qu'une seule médaille. Avant de faire de + statistiques sur les médailles par pays ils faut donc écraser les résultats + des évènements par équipe. + +Une fois le données récupérées je me suis rendu compte que j'étais très peu +inspiré pour en faire des statistiques. La seule chose qui me soit venu à +l'esprit a été de vérifier l'idée selon laquelle l'escrime est le sport +qui pourvoi le plus de médaille à la France. A la lumière du point 2. il faut +d'abord dédupliquer les médailles des évènements par équipe. Pour cela on retire +le nom des athlètes et on retire les duplicats. Il ne reste plus qu'à filtrer +sur la France, conserver le sport et les compter : + + $ cut -f8 --complement all.tsv | sort -u | #Retirer les athlètes + grep -w FRA | #Filtrer sur la France + cut -f5 | #Garder que les sports + sort | uniq -c | sort -n #Les compter + [...] + 36 Rowing + 43 Swimming + 51 Sailing + 57 Judo + 62 Cycling Track + 68 Athletics + 120 Fencing + +Cela confirme qu'effectivement l'escrime est le plus grand pourvoyeur de médaille +pour la France et de très loin. Cela dit, regardant les JO depuis 2004 j'avais +l'intuition qu'il ne fournissait pas plus de deux fois plus de médaille que les +autres sports. J'ai donc émit l'hypothèse que tout cela avait changé avec le +temps. Vérifions. J'ai écrit un script qui récupère le nombre de médaille d'un +pays par sport par année. Par exemple pour la France pour les cinq meilleurs +sports : + + +|year|Fencing|Athletics|Cycling Track|Judo|Sailing +|---|---|---|---|---|---| +1900|15|7|6|0|26|5|6|6|0|13|3|2|0|0|0 +1904|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0 +1908|4|2|5|0|1|0|0|2|0|3|1|0|0|0|0 +1912|0|2|0|0|1|0|0|2|0|0|1|5|0|0|0 +1916|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0 +1920|8|4|0|0|1|0|2|2|3|6|3|8|0|2|0 +1924|6|3|3|0|1|0|3|2|1|0|5|4|1|3|0 +1928|5|3|1|0|1|0|1|0|1|0|0|0|3|0|0 +1932|3|1|4|0|1|1|1|0|0|0|0|0|2|0|0 +1936|3|0|4|0|0|0|2|1|2|0|0|0|1|3|0 +1940|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0 +1944|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0 +|1948|4|8|3|0|0|2|0|0|0|0|0|0|1|2|0| +|1952|3|2|0|0|0|3|2|0|1|0|0|0|0|1|0| +|1956|4|1|2|0|0|0|1|0|2|0|0|0|0|2|0| +|1960|0|2|0|0|0|0|1|0|0|0|0|0|1|0|0| +|1964|5|2|2|0|0|1|1|0|1|0|0|0|0|0|0| +|1968|2|2|5|0|0|1|0|0|0|0|0|0|2|0|0| +|1972|3|2|1|3|2|0|0|1|0|0|0|0|0|0|1| +|1976|3|1|1|1|0|0|0|0|0|0|1|0|0|0|0| +|1980|6|1|2|4|0|0|0|0|0|0|0|0|0|0|0| +|1984|7|4|1|3|1|2|0|2|1|0|1|0|0|0|0| +|1988|3|1|0|2|2|2|0|1|1|0|0|0|0|0|0| +|1992|5|1|0|7|2|3|0|1|0|1|0|1|0|2|3| +|1996|7|4|6|6|0|0|4|2|0|0|0|0|1|2|3| +|2000|6|0|6|6|0|2|3|2|2|0|2|2|0|1|3| +|2004|6|2|2|1|2|6|2|0|1|0|1|1|2|0|3| +|2008|4|3|2|4|3|6|2|1|3|1|2|0|3|0|1| +|2012|0|3|3|7|1|7|1|2|0|0|1|2|1|0|2| +|2016|3|6|1|5|3|3|2|2|6|1|0|0|0|0|2| +|2020|5|1|2|8|3|1|2|1|0|0|0|0|0|0|0| + +On voit qu'effectivement la distribution des médailles dans le temps n'est pas +uniforme. On a des années tout à fait exceptionnelle comme l'année 1900 avec les +15 et 26 médailles respectivement en escrime et en voile. Le judo lui est top 4 +alors que la première médaille n'était possible qu'en 1964 : + + $ < all.tsv cut-f4,5 | sort -u | grep Judo + 1964 Judo + 1972 Judo + 1976 Judo + 1980 Judo + 1984 Judo + 1988 Judo + 1992 Judo + 1996 Judo + 2000 Judo + 2004 Judo + 2008 Judo + 2012 Judo + 2016 Judo + 2020 Judo + +Reproduisons donc le même tableau depuis 1964 en y ajoutant à la main les +résultats de 2024 : + +|year|Fencing|Athletics|Cycling Track|Judo|Sailing +|---|---|---|---|---|---| +|1964|5|2|2|0|0|1|1|0|1|0|0|0|0|0|0| +|1968|2|2|5|0|0|1|0|0|0|0|0|0|2|0|0| +|1972|3|2|1|3|2|0|0|1|0|0|0|0|0|0|1| +|1976|3|1|1|1|0|0|0|0|0|0|1|0|0|0|0| +|1980|6|1|2|4|0|0|0|0|0|0|0|0|0|0|0| +|1984|7|4|1|3|1|2|0|2|1|0|1|0|0|0|0| +|1988|3|1|0|2|2|2|0|1|1|0|0|0|0|0|0| +|1992|5|1|0|7|2|3|0|1|0|1|0|1|0|2|3| +|1996|7|4|6|6|0|0|4|2|0|0|0|0|1|2|3| +|2000|6|0|6|6|0|2|3|2|2|0|2|2|0|1|3| +|2004|6|2|2|1|2|6|2|0|1|0|1|1|2|0|3| +|2008|4|3|2|4|3|6|2|1|3|1|2|0|3|0|1| +|2012|0|3|3|7|1|7|1|2|0|0|1|2|1|0|2| +|2016|3|6|1|5|3|3|2|2|6|1|0|0|0|0|2| +|2020|5|1|2|8|3|1|2|1|0|0|0|0|0|0|0| +2024|7|1|1|10|2| +|total|72|34|35|67|21| + +On voit que la compétition entre le judo et l'escrime est bien plus serrée qu'il +n'y paraît. + +## Un jeu + +Toute personne qui regarde les JO, ou qui a lu cet article jusque là, sait que +les podiums sont souvent assez stéréotypés. Des coréen·nes pour le tir à l'arc, des +chinois·es pour le plongeon, des tchèques et des slovaques pour le canoë/kayak, des +japonais·es et des français·es pour le judo. Il devrait donc être possible de +deviner le sport en voyant les pays sur le podium. J'en ai fait [un +jeu](oly). + +Pour qu'il fonctionne il faudra d'abord avoir téléchargé le gros TSV puis +modifier la ligne `data=...` pour y mettre le chemin du TSV. Il est dommage +d'avoir à télécharger +500Ko pour jouer, je vais faire un client de jeu qui +requête les données à la volée sur le serveur pour ne pas avoir à le faire. +Alternativement il est installé sur le serveur. Le lancer avec `oly`. Il n'a +été testé que sous debian 12. + +[^1]: https://lereversdelamedaille.fr/wp-content/uploads/2024/06/Rapport-1-an-de-nettoyage-social-le-revers-de-la-medaille.pdf +[^2]: https://extinctionrebellion.fr/blog/2024/07/30/retour-sur-une-semaine-de-repression.html +[^3]: https://www.mediapart.fr/journal/france/160824/huit-femmes-du-collectif-des-hijabeuses-ont-ete-placees-en-garde-vue-en-marge-des-jo +[^4]: Parce que trois faits listés précédemment ne sont pas des faits isolés. Ce genre de choses (et parfois plus grave) surviennent systématiquement à tous les JO. + diff --git a/contents/jo-stats/oly b/contents/jo-stats/oly @@ -0,0 +1,82 @@ +#! /bin/sh + +data=all.tsv +tmpd=$(mktemp -d);trap "rm -rf $tmpd" EXIT QUIT +red="\033[91m";green="\033[92m";blue="\033[94m" +gold="\x1b[93m";silver="\x1b[38;5;251m";bronze="\x1b[38;5;172m" +norm="\033[0m"; + +colormedals() { + sed -E "s/Gold/$gold&\x1b[0m/" | + sed -E "s/Silver/$silver&\x1b[0m/" | + sed -E "s/Bronze/$bronze&\x1b[0m/" +} + +rh() { + tail -n+2 +} + +pretty() { + cut -f5,6,7,8,9,10 | + column -ts' ' | + sed 's/ Summer Olympics//' +} + +createquestion() { + id=$(< $data rh | cut -f1 | sort -u | shuf | head -n1) + grep -w "$id" $data > $tmpd/event + < $tmpd/event cut -f5 | uniq > $tmpd/answer + + < $data rh | cut -f5 | grep -wv "$answer" | sort -u | shuf | head -n3 > $tmpd/other + cat $tmpd/other $tmpd/answer | shuf > $tmpd/options + + < $tmpd/event cut -f7,9 | tr ' ' ' ' | uniq > $tmpd/ui-1 + < $tmpd/event cut -f4 | grep -Eo "[0-9]{4}" | uniq > $tmpd/ui-2 + < $data rh | grep -w "$(cat $tmpd/answer)" | + cut -f4 | grep -Eo "[0-9]{4}" | sort -nu > $tmpd/ui-3 + < $tmpd/event grep -qw team \ + && echo "Team event" > $tmpd/ui-4 \ + || < $tmpd/event cut -f8 > $tmpd/ui-4 +} + +dispquestion() { + echo "------------------" + echo "current score : $score" + echo "lifes : $lifes" + echo "---" + + find $tmpd -name "ui-*" | sort | head -n "$1" | + xargs paste | + column -ts' ' -o'|' | sed 's/|/ | /' | + colormedals + + cat $tmpd/options | sed -E '1 i -hint-' | fzy > $tmpd/guess +} + +score=0;maxscore=5;lifes=5 +echo "-hint-" > $tmpd/guess + +while [ "$lifes" -gt 0 ];do + clear + nbhints=0 + createquestion + while [ "$(cat $tmpd/guess)" = "-hint-" ];do + [ "$nbhints" -lt 4 ] && nbhints=$(($nbhints+1)) + dispquestion "$nbhints" + done + if [ "$(cat $tmpd/guess)" = "$(cat $tmpd/answer)" ];then + echo "${green}correct$norm, answer was $(cat $tmpd/answer)" + score=$(( $score + $maxscore - $nbhints )) + else + echo "${red}wrong$norm, correct answer was : $(cat $tmpd/answer)" + lifes=$(( $lifes - 1 )) + fi + cat $tmpd/event | pretty | colormedals + read -p "enter to continue..." var + echo "-hint-" > $tmpd/guess + nbhints=0 + rm -rf $tmpd/ui-* +done + +echo "---------------" +echo "${blue}final score : $score$norm"