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_*etPlotly.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