Skip to content

Repository files navigation

IMO Côte d'Ivoire Insights

Streamlit Python License Demo

Tableau de bord interactif pour l'analyse des performances de la Côte d'Ivoire aux Olympiades Internationales de Mathématiques (IMO).

Description

Ce projet est une application web interactive développée avec Streamlit qui permet d'explorer et d'analyser les performances historiques de l'équipe de Côte d'Ivoire aux Olympiades Internationales de Mathématiques (IMO). Le dashboard présente des visualisations dynamiques des résultats, des classements et des performances individuelles des candidats ivoiriens.

Architecture de l'Application

┌─────────────────────────────────────────────────────────────┐
│                     Navigateur Web                          │
│                   (http://localhost:8501)                    │
└────────────────────────┬────────────────────────────────────┘
                         │
                         │ HTTP/HTTPS
                         │
┌────────────────────────▼────────────────────────────────────┐
│                    Streamlit Server                          │
│                  (app.py - Streamlit)                        │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  • Interface utilisateur interactive                  │  │
│  │  • Gestion des widgets et filtres                    │  │
│  │  • Mise en page et affichage des graphiques          │  │
│  └──────────────────────────────────────────────────────┘  │
└────────────────────────┬────────────────────────────────────┘
                         │
                         │
┌────────────────────────▼────────────────────────────────────┐
│                   Traitement des Données                     │
│                      (Python + Pandas)                       │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  • Chargement des fichiers CSV                        │  │
│  │  • Filtrage et transformation des données            │  │
│  │  • Calcul des statistiques et agrégations             │  │
│  └──────────────────────────────────────────────────────┘  │
└────────────────────────┬────────────────────────────────────┘
                         │
                         │
┌────────────────────────▼────────────────────────────────────┐
│                    Fichiers de Données                       │
│  ┌──────────────────┐  ┌────────────────────────────────┐  │
│  │ team_results.csv │  │ individual_results.csv        │  │
│  │  (Résultats      │  │  (Résultats individuels)       │  │
│  │   équipe)        │  │                                │  │
│  └──────────────────┘  └────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘

Fonctionnalités

  • Vue d'ensemble et KPIs : Indicateurs clés de performance (participations, médailles, mentions, meilleur rang)
  • Évolution des performances : Graphiques interactifs montrant l'évolution du classement et des scores au fil des années
  • Analyse des problèmes : Visualisation radar des points moyens par problème (P1 à P6)
  • Analyse individuelle : Top 10 des candidats et répartition des récompenses individuelles
  • Détails par édition : Filtrage par année avec tableau des résultats d'équipe et individuels
  • Recherche de candidats : Fonctionnalité de recherche pour trouver des participants spécifiques

Installation

Prérequis

  • Python 3.13 ou supérieur
  • pip (gestionnaire de paquets Python)

Étapes d'installation

  1. Cloner le dépôt
git clone https://github.com/kouame09/imo_cote_divoire_insights.git
cd imo_cote_divoire_insights
  1. Installer les dépendances
pip install -r requirements.txt

Les dépendances requises sont :

  • streamlit - Framework d'application web
  • pandas - Manipulation de données
  • plotly - Visualisations interactives

Utilisation

Lancer l'application :

streamlit run app.py

L'application sera automatiquement ouverte dans votre navigateur par défaut à l'adresse http://localhost:8501.

Structure du Projet

imo_cote_divoire_dashboard/
├── app.py                      # Application principale Streamlit
├── requirements.txt            # Dépendances Python
├── team_results.csv           # Résultats de l'équipe par année
├── individual_results.csv     # Résultats individuels des candidats
├── .streamlit/
│   └── config.toml           # Configuration Streamlit
└── README.md                  # Documentation du projet

Structure des Données

Flux de Données

┌─────────────────────────────────────────────────────────────────┐
│                    SOURCES DE DONNÉES                           │
│                    (imo-official.org)                            │
└────────────────────────────┬────────────────────────────────────┘
                             │
                             │ Extraction manuelle
                             │
┌────────────────────────────▼────────────────────────────────────┐
│                    FICHIERS CSV LOCAUX                          │
│  ┌──────────────────────┐    ┌──────────────────────────────┐  │
│  │  team_results.csv    │    │ individual_results.csv      │  │
│  │  ┌────────────────┐  │    │  ┌────────────────────────┐  │  │
│  │  │ Year, Rank,    │  │    │  │ Year, Contestant,      │  │  │
│  │  │ Points, P1-P6, │  │    │  │ Rank, Award, Points,   │  │  │
│  │  │ G, S, B, HM    │  │    │  │ P1-P6                  │  │  │
│  │  └────────────────┘  │    │  └────────────────────────┘  │  │
│  └──────────────────────┘    └──────────────────────────────┘  │
└────────────────────────────┬────────────────────────────────────┘
                             │
                             │ Chargement (pandas.read_csv)
                             │
┌────────────────────────────▼────────────────────────────────────┐
│                    DATAFRAMES PANDAS                            │
│  ┌──────────────────────┐    ┌──────────────────────────────┐  │
│  │  df_team             │    │ df_indiv                    │  │
│  │  (Données équipe)    │    │ (Données individuelles)     │  │
│  └──────────────────────┘    └──────────────────────────────┘  │
└────────────────────────────┬────────────────────────────────────┘
                             │
                             │ Traitement & Analyse
                             │
┌────────────────────────────▼────────────────────────────────────┐
│                    VISUALISATIONS                               │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │  • Graphiques linéaires (évolution classement)          │  │
│  │  • Graphiques en barres (scores, médailles)             │  │
│  │  • Graphiques radar (analyse problèmes)                │  │
│  │  • Diagrammes circulaires (répartition récompenses)     │  │
│  │  • Tableaux interactifs (détails par édition)           │  │
│  └──────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

team_results.csv

Contient les résultats agrégés de l'équipe ivoirienne par année :

  • Year : Année de participation
  • Rank : Classement de l'équipe
  • Points : Score total de l'équipe
  • P1-P6 : Points obtenus pour chaque problème
  • G, S, B, HM : Nombre de médailles (Or, Argent, Bronze) et mentions honorables

individual_results.csv

Contient les résultats détaillés de chaque candidat :

  • Year : Année de participation
  • Contestant : Nom du candidat
  • Rank : Classement individuel
  • Award : Récompense obtenue (S, B, HM, ou vide)
  • Points : Score total du candidat
  • P1-P6 : Points obtenus pour chaque problème

Sections du Dashboard

Layout du Dashboard

┌─────────────────────────────────────────────────────────────────────────┐
│                         IMO CÔTE D'IVOIRE DASHBOARD                       │
│                     Analyse des Performances IMO                          │
└───────────────────────────────────────────────────────────────────────────┘

┌─────────────────────┬───────────────────────────────────────────────────┐
│                     │                                                   │
│      SIDEBAR        │                   MAIN CONTENT                     │
│                     │                                                   │
│  ┌───────────────┐  │  ┌─────────────────────────────────────────────┐ │
│  │   Info Données │  │  │          A. VUE D'ENSEMBLE                   │ │
│  │   Sources IMO  │  │  │  ┌─────┬─────┬─────┬─────┬─────┐            │ │
│  └───────────────┘  │  │  │Part.│ Arg.│Bron.│ Ment.│Rang │            │ │
│                     │  │  └─────┴─────┴─────┴─────┴─────┘            │ │
│  ┌───────────────┐  │  └─────────────────────────────────────────────┘ │
│  │   Crédits     │  │                                                   │
│  │   Prince K.   │  │  ┌─────────────────────────────────────────────┐ │
│  └───────────────┘  │  │          B. ÉVOLUTION DES PERFORMANCES       │ │
│                     │  │  ┌──────────────────┬──────────────────────┐  │ │
│                     │  │  │  Classement      │  Score Total         │  │ │
│                     │  │  │  (Graphique ligne)│  (Graphique barres) │  │ │
│                     │  │  └──────────────────┴──────────────────────┘  │ │
│                     │  │  ┌──────────────────────────────────────────┐  │ │
│                     │  │  │  Répartition des récompenses (stacked)  │  │ │
│                     │  │  └──────────────────────────────────────────┘  │ │
│                     │  └─────────────────────────────────────────────┘ │
│                     │                                                   │
│                     │  ┌─────────────────────────────────────────────┐ │
│                     │  │          C. ANALYSE DES PROBLÈMES           │ │
│                     │  │  ┌────────────────────────────────────────┐  │ │
│                     │  │  │  Graphique Radar (P1 → P6)              │  │ │
│                     │  │  └────────────────────────────────────────┘  │ │
│                     │  └─────────────────────────────────────────────┘ │
│                     │                                                   │
│                     │  ┌─────────────────────────────────────────────┐ │
│                     │  │          D. ANALYSE INDIVIDUELLE             │ │
│                     │  │  ┌──────────────────┬──────────────────────┐  │ │
│                     │  │  │  Top 10 Candidats │  Récompenses         │  │ │
│                     │  │  │  (Barres horiz.)  │  (Diagramme camembert)│ │ │
│                     │  │  └──────────────────┴──────────────────────┘  │ │
│                     │  └─────────────────────────────────────────────┘ │
│                     │                                                   │
│                     │  ┌─────────────────────────────────────────────┐ │
│                     │  │          E. DÉTAILS PAR ÉDITION              │ │
│                     │  │  ┌────────────────────────────────────────┐  │ │
│                     │  │  │  [2026] [2025] [2024] [2018] ...       │  │ │
│                     │  │  └────────────────────────────────────────┘  │ │
│                     │  │  ┌────────────────────────────────────────┐  │ │
│                     │  │  │  Tableau équipe │ Tableau individuels  │  │ │
│                     │  │  │  └───────────────┤ └────────────────────┘  │ │
│                     │  │  │  🔍 Recherche... │                        │  │ │
│                     │  │  └────────────────────────────────────────┘  │ │
│                     │  └─────────────────────────────────────────────┘ │
└─────────────────────┴───────────────────────────────────────────────────┘

A. Vue d'ensemble

  • Nombre total de participations
  • Total des médailles d'argent (S)
  • Total des médailles de bronze (B)
  • Total des mentions honorables (HM)
  • Meilleur classement obtenu

B. Évolution des performances

  • Graphique linéaire de l'évolution du classement
  • Graphique en barres de l'évolution du score total
  • Graphique empilé de la répartition des récompenses par année

C. Analyse des problèmes

  • Graphique radar montrant les performances moyennes par problème (P1 à P6)

D. Analyse individuelle

  • Top 10 des candidats par score total cumulé
  • Diagramme circulaire de la répartition des récompenses individuelles

E. Détails par édition

  • Sélecteur multi-années pour filtrer les données
  • Tableau des résultats de l'équipe
  • Tableau des résultats individuels avec recherche

Contribution

Les contributions sont les bienvenues ! Si vous souhaitez améliorer ce projet :

Workflow de Contribution

┌─────────────────────────────────────────────────────────────────┐
│                    DÉPÔT PRINCIPAL (GitHub)                      │
│              kouame09/imo_cote_divoire_dashboard                 │
└────────────────────────────────┬────────────────────────────────┘
                                 │
                                 │ 1. Fork
                                 │
┌────────────────────────────────▼────────────────────────────────┐
│                    VOTRE FORK (GitHub)                           │
│              votre-username/imo_cote_divoire_dashboard           │
└────────────────────────────────┬────────────────────────────────┘
                                 │
                                 │ 2. Clone local
                                 │
┌────────────────────────────────▼────────────────────────────────┐
│                    VOTRE MACHINE LOCALE                          │
│              (développement et modifications)                    │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │  git checkout -b feature/nouvelle-fonctionnalité        │  │
│  │  # Faire les modifications                              │  │
│  │  git add .                                              │  │
│  │  git commit -m "feat: description du changement"       │  │
│  │  git push origin feature/nouvelle-fonctionnalité       │  │
│  └──────────────────────────────────────────────────────────┘  │
└────────────────────────────────┬────────────────────────────────┘
                                 │
                                 │ 3. Push vers votre fork
                                 │
┌────────────────────────────────▼────────────────────────────────┐
│                    VOTRE FORK (GitHub)                           │
│              branche feature/nouvelle-fonctionnalité            │
└────────────────────────────────┬────────────────────────────────┘
                                 │
                                 │ 4. Pull Request
                                 │
┌────────────────────────────────▼────────────────────────────────┐
│                    DÉPÔT PRINCIPAL (GitHub)                      │
│              Review et fusion de la Pull Request                 │
└─────────────────────────────────────────────────────────────────┘

Étapes de contribution

  1. Fork le projet
  2. Créez une branche pour votre fonctionnalité (git checkout -b feature/nom-de-votre-fonctionnalite)
  3. Commit vos changements (git commit -m 'Ajouter une fonctionnalité...')
  4. Push vers la branche (git push origin feature/nom-de-votre-fonctionnalite)
  5. Ouvrez une Pull Request

Sources des Données

Les données utilisées dans ce dashboard sont extraites du site officiel de l'IMO : imo-official.org

Auteur

Développé par Prince Kouamé

Contact

Pour toute question ou suggestion, n'hésitez pas à :

Licence

Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

Note : Ce projet est open-source et destiné à des fins éducatives et analytiques. Les données sont mises à jour régulièrement suivant les résultats officiels de l'IMO.

About

Dashboard interactive Streamlit d'exploration et d'analyse des performances historiques de l'équipe de Côte d'Ivoire aux Olympiades Internationales de Mathématiques (IMO).

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages