Tableau de bord interactif pour l'analyse des performances de la Côte d'Ivoire aux Olympiades Internationales de Mathématiques (IMO).
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.
┌─────────────────────────────────────────────────────────────┐
│ 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) │ │ │ │
│ └──────────────────┘ └────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
- 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
- Python 3.13 ou supérieur
- pip (gestionnaire de paquets Python)
- Cloner le dépôt
git clone https://github.com/kouame09/imo_cote_divoire_insights.git
cd imo_cote_divoire_insights- Installer les dépendances
pip install -r requirements.txtLes dépendances requises sont :
streamlit- Framework d'application webpandas- Manipulation de donnéesplotly- Visualisations interactives
Lancer l'application :
streamlit run app.pyL'application sera automatiquement ouverte dans votre navigateur par défaut à l'adresse http://localhost:8501.
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
┌─────────────────────────────────────────────────────────────────┐
│ 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) │ │
│ └──────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
Contient les résultats agrégés de l'équipe ivoirienne par année :
Year: Année de participationRank: Classement de l'équipePoints: Score total de l'équipeP1-P6: Points obtenus pour chaque problèmeG, S, B, HM: Nombre de médailles (Or, Argent, Bronze) et mentions honorables
Contient les résultats détaillés de chaque candidat :
Year: Année de participationContestant: Nom du candidatRank: Classement individuelAward: Récompense obtenue (S, B, HM, ou vide)Points: Score total du candidatP1-P6: Points obtenus pour chaque problème
┌─────────────────────────────────────────────────────────────────────────┐
│ 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... │ │ │ │
│ │ │ └────────────────────────────────────────┘ │ │
│ │ └─────────────────────────────────────────────┘ │
└─────────────────────┴───────────────────────────────────────────────────┘
- 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
- 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
- Graphique radar montrant les performances moyennes par problème (P1 à P6)
- Top 10 des candidats par score total cumulé
- Diagramme circulaire de la répartition des récompenses individuelles
- Sélecteur multi-années pour filtrer les données
- Tableau des résultats de l'équipe
- Tableau des résultats individuels avec recherche
Les contributions sont les bienvenues ! Si vous souhaitez améliorer ce projet :
┌─────────────────────────────────────────────────────────────────┐
│ 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 │
└─────────────────────────────────────────────────────────────────┘
- Fork le projet
- Créez une branche pour votre fonctionnalité (
git checkout -b feature/nom-de-votre-fonctionnalite) - Commit vos changements (
git commit -m 'Ajouter une fonctionnalité...') - Push vers la branche (
git push origin feature/nom-de-votre-fonctionnalite) - Ouvrez une Pull Request
Les données utilisées dans ce dashboard sont extraites du site officiel de l'IMO : imo-official.org
Développé par Prince Kouamé
Pour toute question ou suggestion, n'hésitez pas à :
- Ouvrir une issue sur GitHub
- Ou me contacter à hello@princekouame.com
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.