Aller au contenu

Suivi de l'évolution des indicateurs d'admission⚓︎

Architecture recommandée 📁⚓︎

/2026/
├── data_raw/                           # Dossier pour versionner les fichiers CSV
│   ├── 2026-06-03_0932667U_details_admi.csv
│   ├── 2026-06-10_0932667U_details_admi.csv    # Prochaine mise à jour
│   └── ...
│
├── EXP_Notes.csv                       # Fichiers sources (courant)
├── EXP_ELEVE.csv
├── 0932667U_details_admi.csv          # Fichier actif (courant)
│
├── fusion.py                           # Script d'analyse principal
│
├── historique_indicateurs.json        # Base de données des indicateurs
├── evolution_indicateurs.html         # Dashboard avec graphiques
├── analyse_admission.csv              # Export des données enrichies

Workflow 🔄⚓︎

1️⃣ Première fois : initialisation⚓︎

cd /home/emmanuel/Documents/repos/repos_lycee/terminale-nsi/docs/data/2026

# Créer les dossiers
mkdir -p data_raw rapports

# Installer les dépendances manquantes
./venv/bin/pip install plotly

# Générer l'historique initial
./venv/bin/python3 fusion.py

Résultat : - historique_indicateurs.json créé avec les indicateurs du jour - evolution_indicateurs.html généré avec graphiques (même si un seul point de données)

2️⃣ Mise à jour : quand vous recevez un nouveau CSV⚓︎

Option A : Versionner les fichiers (recommandé)

# Télécharger le nouveau fichier : 0932667U_details_admi.csv (dernière version)
# ou le placer dans data_raw/ avec le format de date :

cp 0932667U_details_admi.csv data_raw/2026-06-10_0932667U_details_admi.csv

# Remplacer le fichier actif
cp data_raw/2026-06-10_0932667U_details_admi.csv 0932667U_details_admi.csv

# Exécuter l'analyse
./venv/bin/python3 fusion.py

Les indicateurs se mettent à jour dans historique_indicateurs.json et le dashboard se régénère automatiquement.

Option B : Script automatisé (à développer)

import os, shutil
from datetime import datetime

# Télécharger/placer le fichier dans data_raw/ avec date
today = datetime.now().strftime("%Y-%m-%d")
latest = max([f for f in os.listdir("data_raw/") if f.endswith(".csv")], 
             key=lambda f: os.path.getmtime(f"data_raw/{f}"))
shutil.copy(f"data_raw/{latest}", "0932667U_details_admi.csv")

# Lancer l'analyse
os.system("./venv/bin/python3 fusion.py")

3️⃣ Consulter les évolutions⚓︎

Ouvrir le dashboard interactif :

Double-cliquez sur evolution_indicateurs.html dans VS Code ou navigateur web.

Vous verrez : - 📈 Graphiques de l'évolution (taux global, filières, spécialités) - 📊 Tableau avec les derniers indicateurs - 📅 Historique complet des mises à jour

Contenu de l'historique 📄⚓︎

Fichier historique_indicateurs.json :

{
  "2026-06-04": {
    "taux_global": 67.2,
    "taux_ST2S": 64.8,
    "taux_TAEPA": 17.4,
    "taux_TASSP": 56.7,
    "taux_MATHEMATIQUES": 84.3,
    "taux_NUMERIQUE_SC.INFORM.": 87.1,
    ...
  },
  "2026-06-10": {
    "taux_global": 70.5,
    ...
  }
}

Les clés sont les dates (YYYY-MM-DD), les valeurs sont les pourcentages d'admission.

Personnalisation 🎨⚓︎

Vous pouvez modifier generate_evolution.py pour :

  • Ajouter des graphiques : ajouter des trace_* et Plotly.newPlot()
  • Changer les couleurs : modifier les line: {color: ...}
  • Réorganiser le layout : éditer le CSS dans la section <style>
  • Ajouter des métriques : extraire de nouveaux indicateurs dans save_indicators_to_history()

Exemple : Ajouter un indicateur CSP⚓︎

Dans fusion.py, fonction save_indicators_to_history() :

# Après les spécialités
if "csp_famille" in df_merge.columns:
    for csp in ["Favorisé", "Intermédiaire", "Défavorisé"]:
        mask = (df_merge["csp_famille"] == csp) & df_merge["admis_quelque_part"].notna()
        total = int(mask.sum())
        if total > 0:
            adm_mask = df_merge.loc[mask, 'admis_quelque_part'].fillna(False).map(...)
            adm_count = int(adm_mask.sum())
            indicators[f"taux_CSP_{csp}"] = round(100 * adm_count / total, 1)

Archivage des rapports 📦⚓︎

Optionnel : archiver les rapports par date :

# Après chaque exécution de fusion.py
cp rapport_admission.txt rapports/$(date +%Y-%m-%d)_rapport_admission.txt
cp rapport_admission.pdf rapports/$(date +%Y-%m-%d)_rapport_admission.pdf

Support et dépannage 🔧⚓︎

Q : Le dashboard ne se génère pas ?
A : Vérifiez que plotly est installé : ./venv/bin/pip install plotly

Q : Comment supprimer une entrée historique ?
A : Éditez historique_indicateurs.json directement (JSON valide) et relancez generate_evolution.py.

Q : Puis-je exporter en PDF ou PNG ?
A : Avec Plotly, exportez depuis le dashboard interactif (menu « camera » en haut à droite).

Q : Comment intégrer une base de données (SQLite) ?
A : Remplacez historique_indicateurs.json par une base SQLite — voir exemple.


Créé le 4 juin 2026 | Automatisé avec Python + Plotly