À propos & méthodologie
577députés est un explorateur indépendant de l'activité parlementaire de la 17ᵉ législature de l'Assemblée nationale (depuis juillet 2024). Tout est local : pas de service tiers, pas de tracker, pas d'analytics. Données ouvertes officielles uniquement, ré-utilisées sous Licence Ouverte (Etalab).
Les commandes en ligne ci-dessous (anqp …) sont celles du paquet Python
qui propulse le site, à l'usage des personnes qui auto-hébergent l'instance.
Ce qu'on peut trouver sur 577députés
577députés est un explorateur indépendant de l'activité parlementaire à l'Assemblée nationale française, construit sur les données ouvertes officielles publiées par les services de l'Assemblée (data.assemblee-nationale.fr, Licence Ouverte Etalab). Le site couvre actuellement la 17ᵉ et la 16ᵉ législature, avec un sélecteur permettant de basculer entre les deux.
Comment voir quels amendements ont été « copiés-collés » à l'Assemblée nationale ?
La page Doublons d'amendements détecte automatiquement les amendements quasi-identiques (similarité de Jaccard ≥ 0,80 sur des fenêtres de cinq mots, après normalisation HTML et accents). On y voit que environ un quart des amendements déposés sur la 17ᵉ législature sont des copies presque exactes les uns des autres, regroupés en « clusters » et classés en quatre typologies :
- Dépôt en masse (obstruction parlementaire) : un parti dépose des dizaines de copies du même texte pour ralentir le débat ou saturer un article.
- Convergence inter-groupes : le même amendement est déposé par des députés de plusieurs groupes politiques différents. Le signal le plus net d'un lobby parlementaire qui a fait circuler un texte clé-en-main, ou d'une coordination transpartisane.
- Amplification intra-groupe : plusieurs députés d'un même groupe déposent en parallèle pour montrer une priorité collective.
- Réutilisation simple : un texte qui circule entre quelques députés, sans coordination massive.
Comment voir quelles coalitions de vote se forment réellement à l'Assemblée ?
La page Coalitions mesure, à partir des
positions majoritaires officielles publiées par l'Assemblée
(champ positionMajoritaire de chaque scrutin × groupe), la cohésion
de vote entre les différents groupes parlementaires sur l'ensemble des
scrutins publics nominatifs. On y trouve :
- La matrice de cohésion N×N entre tous les groupes (pourcentage de scrutins où deux groupes votent dans le même sens).
- Les blocs politiques de fait (Nouveau Front Populaire, bloc central, charnières, RN…), avec une mise à jour automatique selon la législature en cours.
- Les alliances par sujet : pour les principales catégories de textes, quels groupes ont voté ensemble.
- Une cartographie 2D des groupes selon leur cohésion croisée.
Comment voir la « langue de bois », l'absentéisme stratégique ou les amendements jamais défendus ?
La page Analyses rassemble trois indicateurs originaux qu'aucun autre site français ne propose à notre connaissance :
- Réponses ministérielles dupliquées (la langue de bois mesurée) : on prend les 250 premiers caractères significatifs de chaque réponse de ministère à une question parlementaire, et on compte combien de fois le même préfixe apparaît sur des questions différentes. Sur la 17ᵉ législature, environ 27 % des réponses sont des copies presque exactes d'autres réponses.
- Présence différentielle aux scrutins clivants (absentéisme stratégique) : pour chaque député, on compare son taux de présence sur les scrutins consensuels (90+% pour ou contre) vs sur les scrutins serrés (issue incertaine). Les écarts importants signalent les députés qui « s'esquivent » quand le vote engage politiquement.
- Amendements jamais défendus en séance (amendements fantômes) : députés qui déposent beaucoup d'amendements mais n'en défendent qu'une faible proportion en séance publique. Plusieurs explications possibles (amendements de groupe portés par d'autres, amendements signaux symboliques…), à interpréter avec précaution.
Comment trouver la fiche d'un député précis et son activité ?
La page Députés liste les 577 députés en exercice, filtrable par groupe, département,
statut, mot-clé. Chaque fiche député (/deputes/PAxxxxxx) donne le détail de son activité parlementaire :
questions écrites, orales et au Gouvernement, amendements déposés (et leur sort), participation aux scrutins publics,
alignement de vote avec son groupe, mandats successifs. Pour explorer par géographie, la page
Carte affiche les 577 circonscriptions coloriées par groupe parlementaire.
Comment suivre un texte de loi et ses amendements à l'Assemblée nationale ?
La page Textes législatifs couvre tous les dossiers parlementaires : projets et propositions de loi, résolutions, rapports d'information, conventions. La fiche d'un texte précise son initiateur (gouvernement ou parlementaires), son statut (en cours, adopté, rejeté, promulgué, retiré), sa navette législative, ses amendements (avec leur sort), les scrutins associés. Les pages Scrutins et Questions parlementaires permettent de chercher dans les votes publics nominatifs et dans toutes les questions (écrites, orales, au Gouvernement) avec une recherche textuelle plein texte.
Quels classements de députés peut-on trouver ?
La page Tops propose une douzaine de classements clé-en-main : députés les plus actifs, les plus interrogatifs, les plus amendeurs, les plus présents en scrutin, les ministères les plus lents à répondre, les questions sans réponse depuis le plus longtemps, etc. Un constructeur de top personnalisé (/tops/custom) permet aussi de générer son propre classement parmi plus de 30 métriques, avec filtres, et de le partager par URL. Chaque classement est exportable en image carrée ou paysage pour partage sur les réseaux sociaux.
D'où viennent les chiffres ? Sont-ils fiables ?
Toutes les données du site proviennent exclusivement des dumps officiels publiés sur data.assemblee-nationale.fr sous Licence Ouverte 2.0 Etalab. Aucune donnée n'est inventée, devinée, ou enrichie par l'éditeur. La méthodologie de chaque indicateur est documentée plus bas sur cette même page et formalisée dans la note méthodologique déposée sur Zenodo (DOI 10.5281/zenodo.20127509). Le code source du site est public et auditable sur GitHub sous licence MIT.
Note méthodologique (PDF archivé)
Une note méthodologique formelle (sources, choix de calcul, analyses de sensibilité) est déposée en archive ouverte, citable et versionnée :
- Archive Zenodo
- DOI
10.5281/zenodo.20127509 - Sources LaTeX methodo/ (dépôt GitHub)
Le résumé ci-dessous reste la référence courante ; la note PDF en est la version figée et citable à un instant donné.
Indépendance & neutralité
- Aucune affiliation politique, partisane, syndicale ou institutionnelle.
- Aucune source de financement publique ou privée. Projet entièrement bénévole.
- Aucune donnée n'est inventée, devinée ou enrichie par l'éditeur : les chiffres affichés viennent intégralement des dumps officiels d'open data de l'Assemblée nationale.
- Le code source est public et auditable : github.com/RogericBot/577deputes. La méthodologie de chaque indicateur est documentée ci-dessous.
Sources de données
Toutes les données proviennent du portail data.assemblee-nationale.fr, publié par les services de l'Assemblée nationale. Licence Licence Ouverte v2.0 — Etalab.
| Domaine | Source | Format | Volume actuel |
|---|---|---|---|
| Députés en exercice | AMO10 (acteurs / mandats / organes — actifs) | JSON ZIP, ~5 MB | 577 députés |
| Députés historiques | AMO50 (acteurs / mandats / organes — historiques) | JSON ZIP, ~14 MB | +48 ex-députés indexés |
| Questions écrites | Questions_ecrites.json.zip | JSON ZIP, ~38 MB | 18 689 questions toutes catégories confondues |
| Questions orales | Questions_orales_sans_debat.json.zip | JSON ZIP, ~3 MB | — |
| Questions au Gouvernement | Questions_gouvernement.json.zip | JSON ZIP, ~4 MB | — |
| Dossiers législatifs | Dossiers_Legislatifs.json.zip | JSON ZIP, ~9 MB | 2 893 dossiers |
| Amendements | Amendements.json.zip | JSON ZIP, ~251 MB | 116 970 amendements |
| Scrutins publics nominatifs | Scrutins.json.zip | JSON ZIP, ~21 MB | 7 453 scrutins · 1 157 589 votes individuels |
| Réunions / agenda | Agenda.json.zip | JSON ZIP, ~7 MB | 6 669 réunions |
| Comptes rendus de séance | syseron.xml.zip | XML ZIP, ~45 MB | 507 comptes rendus, ~3 700 interventions extraites |
| Population par circonscription | INSEE — Populations légales 2021 (republiées 25/06/2024) | XLSX, ~32 KB | 566 circos métropole + DOM, mise à jour annuelle |
| Inscrits / votants par circonscription | Ministère de l'Intérieur — Législatives 2024 1er tour (résultats définitifs) | CSV, ~330 KB | 577 circos, mise à jour à chaque scrutin législatif |
Tous les jeux de données sont distribués sous Licence Ouverte 2.0 (Etalab).
Fréquence de mise à jour
- Côté Assemblée nationale : les dumps sont régénérés chaque nuit, vers 03 h UTC. Latence amont < 24 h.
- Côté 577députés :
un thread de fond rafraîchit la base
toutes les 24 heures tant que le serveur tourne (cache HTTP
ETag/Last-Modified : 0 octet téléchargé si la source AN n'a pas bougé).
Prochain rafraîchissement programmé :
dans 7h43 ;
désactivable via
ANQP_AUTO_REFRESH=0.
Comment chaque indicateur est calculé
Statut d'un texte législatif
Déduit du type d'acte de la navette parlementaire (champ
type_xsi du dump dossiers). Règles, par ordre de priorité :
Promulgation_Typeprésent → promulguéeRetraitInitiative_Typeou code*-RTRINI→ retiré- Code
*CADUC*→ caduc - Sinon → en cours (par défaut). La distinction adopté/rejeté
n'est pas extractible de manière fiable depuis le dump (codée comme
Decision_Typegénérique sans valeur explicite) ; non inféré.
Statut d'une question parlementaire
avec_reponse si un texte de réponse ministérielle est publié,
cloturee si l'état de clôture est explicite,
sans_reponse sinon.
Le champ delai_reponse_jours est la différence en jours calendaires
entre la date de publication de la question et celle de la réponse.
Sort d'un amendement
Lu dans cycleDeVie.sort en priorité (texte clair : Adopté, Rejeté,
Retiré, Tombé, Non soutenu, En traitement, Discuté, Effacé). Si le champ est
nul (cas xsi:nil), le sort est déduit de
etatDesTraitements.etat.libelle (ex : « Irrecevable 40 » →
Irrecevable). Aucune autre inférence n'est faite.
Discipline de groupe (votes)
Pour chaque scrutin et chaque groupe, on identifie la
position majoritaire du groupe (champ positionMajoritaire
de la donnée source AN). La discipline d'un député est définie comme :
discipline(d) = (votes alignés sur sa majorité de groupe)
÷ (votes exprimés du député)
× 100
Seuls les votes pour, contre, abstention (votes exprimés) entrent dans le calcul. Les non-votants sont exclus du dénominateur. Important : ces calculs ne portent que sur les scrutins publics nominatifs (~6 500). Les votes à main levée (largement majoritaires en hémicycle) ne laissent aucune trace exploitable et n'apparaissent jamais. La discipline affichée est donc celle observée sur un sous-ensemble représentatif mais pas exhaustif.
Outils de détection (page Analyses)
La page /analyses propose trois outils quantifiables pour révéler des comportements peu visibles autrement.
- Réponses ministérielles dupliquées : pour
chaque réponse ministérielle publiée (champ
texte_reponse), on calcule un préfixe normalisé (HTML retiré, blancs collapsés, 250 premiers caractères, en minuscules, formules de politesse initiales retirées). Si ce préfixe apparaît sur ≥ 3 questions distinctes, on considère qu'il s'agit d'un template. Le pourcentage affiché esttotal_responses_in_templates / total_responses_with_answer. Limite : un template peut être légitime (rappel de cadre légal partagé) ; cette détection signale un fait quantifiable, pas un jugement. - Présence différentielle (familièrement « absentéisme
stratégique ») : pour chaque scrutin
avec ≥ 200 votants exprimés, on classe en clivant
(écart |pour−contre| ≤ 10 % du total) ou consensuel
(écart > 50 %). Pour chaque député, on calcule son taux de
présence dans chaque catégorie. L'écart
(% présence consensuels − % présence clivants)est affiché ; un écart fortement positif peut suggérer un évitement des votes serrés — mais aussi des contraintes d'agenda. Filtre : ≥ 30 scrutins clivants participés. Un écart peut s'expliquer par des raisons légitimes (mandat local, déplacement officiel, santé). - Amendements jamais défendus (« amendements
fantômes ») : pour chaque député
ayant déposé ≥ 50 amendements, on calcule le ratio
(amendements défendus) / (amendements déposés). Un amendement est dit « défendu » si son sort estAdopté,Rejeté,RetiréouDiscuté. Il est dit « non défendu » si son sort estNon soutenuou absent. Un haut taux d'amendements non défendus peut indiquer du dépôt pour la communication, un dépôt en masse pour ralentir un examen, ou une délégation politique (l'amendement est porté au nom d'un groupe et défendu par un autre député). Indicateur brut, à croiser avec d'autres signaux pour conclure.
Coalitions & alliances de vote
La page /coalitions agrège quatre angles
d'analyse, tous calculés à partir de la table scrutin_groupes
qui stocke pour chaque (scrutin × groupe) la position majoritaire
officielle publiée par l'Assemblée nationale.
- Onglet Blocs : tableau des groupes parlementaires
(GP) constitués sur la législature en cours, avec effectif (depuis
la table
deputiesfiltrée suris_active = 1), nombre de scrutins votés, et discipline moyenne. - Onglet Matrice : pour chaque paire de groupes
(G₁, G₂), score de cohésion =
(nb scrutins où positions majoritaires identiques) ÷ (nb scrutins communs). Ne sont comptés que les scrutins où les deux groupes ont une position majoritaire dans{pour, contre, abstention}. Un score de 100 % = vote toujours pareil ; 0 % = vote toujours opposé. La diagonale est à 100 % par définition. - Onglet Sujets : sélection automatisée des Top 10 dossiers législatifs respectant trois critères stricts et reproductibles : (a) au moins 1 scrutin public nominatif rattaché, (b) au moins 50 amendements déposés (preuve de débat actif), (c) tri par nombre d'amendements décroissant. Aucun choix éditorial. Pour chaque dossier, on récupère la position dominante de chaque groupe sur l'ensemble des scrutins liés (la position la plus fréquente parmi pour/contre/abstention).
- Onglet Cartographie : projection 2D des groupes où l'axe X = cohésion avec LFI (gauche radicale), l'axe Y = cohésion avec EPR (macroniste). Ce n'est pas une analyse en composantes principales : c'est une projection 2D simple et interprétable, dérivée directement de la matrice de cohésion. Les liens entre groupes ne sont tracés que pour des scores ≥ 60 %.
Limitation : seuls les scrutins publics nominatifs sont pris en compte (~6 500 sur la 17ᵉ législature). Les votes à main levée et les positions des groupes en commission ne laissent aucune trace exploitable et n'apparaissent pas dans ces analyses.
Détection d'amendements quasi-identiques
Algorithme MinHash + LSH :
- Le texte du dispositif est nettoyé (HTML retiré, accents pliés, ponctuation supprimée).
- Découpé en shingles de 5 mots consécutifs.
- 64 signatures MinHash sont calculées (BLAKE2b 64-bit avec graines déterministes).
- 16 bandes de 4 signatures bucketent les amendements ; les paires en collision sont vérifiées par le coefficient de Jaccard exact sur les shingles.
- Seuil retenu : Jaccard ≥ 0,80. Deux amendements au-dessus de ce seuil sont considérés comme « quasi-identiques » et regroupés via union-find.
Les amendements de moins de 8 shingles (texte court) sont exclus du calcul.
Re-calculable via anqp cluster-amendements. Voir /clusters.
Typologie automatique des clusters
Chaque cluster est ensuite classé dans l'une des 4 catégories suivantes, selon sa taille (nombre d'amendements) et le nombre de groupes parlementaires qui le portent. La priorité va de haut en bas : la taille (obstruction) gagne toujours sur la composition.
- Obstruction — cluster de ≥ 15 amendements quasi-identiques. Souvent une tactique de blocage du débat / saturation du temps de séance. Peu importe la composition partisane.
- Convergence inter-groupes — au moins 2 groupes parlementaires différents portent la même rédaction (et le cluster n'est pas en obstruction). Signale un consensus technique ou une alliance opportuniste, parfois transpartisane.
- Amplification intra-groupe — 1 seul groupe dépose la même rédaction 3 fois ou plus via des députés différents. Stratégie collective de visibilité d'un groupe.
- Réutilisation simple — doublon ou triplet qui ne rentre dans aucune des catégories précédentes (2-3 amendements, peu importe le groupe). Signal politique faible.
La classification est déterministe (calculée à partir des seuls champs size
et n_groups du cluster) et exposée en tant que filtre sur /clusters
+ tableau de bord agrégé sur /stats/clusters.
Score d'activité (cumul)
Sur la page /tops et certaines fiches, le score d'activité d'un député est la simple somme : questions posées + amendements déposés + votes exprimés. Aucune normalisation, aucune pondération : trois actions parlementaires différentes comptent à équivalent. Cette simplicité est volontaire pour rester transparent ; un « score parlementaire » pondéré serait subjectif.
Population & électeurs par circonscription
Sur la carte, chaque circonscription affiche au survol : le nombre d'habitants (résidents tous âges confondus) et le nombre d'inscrits sur les listes électorales. La légende additionne ces deux chiffres par groupe parlementaire.
- Population : INSEE, populations légales municipales 2021 (recensement) republiées le 25 juin 2024. Reflète les résidents au 1ᵉʳ janvier 2021 ; mise à jour annuelle par l'INSEE. Les 11 circonscriptions des Français de l'étranger n'ont pas de population résidente : champ laissé vide.
- Inscrits / votants : Ministère de l'Intérieur, résultats définitifs du 1er tour des législatives des 30 juin et 7 juillet 2024. Stable jusqu'à la prochaine élection législative (sauf élections partielles éventuelles, qui mettent à jour ponctuellement une circonscription).
- Habitants ≠ inscrits : tout résident n'est pas électeur (mineurs, étrangers non communautaires pour les législatives, non-inscrits…). La différence entre les deux chiffres est attendue et significative.
Recherche full-text
SQLite FTS5 avec le tokenizer unicode61 remove_diacritics 2
(insensible à la casse et aux accents). Sur les questions et les amendements.
La syntaxe accepte : phrases entre guillemets, opérateurs AND/OR/NOT/NEAR,
recherche par champ (titre:retraite), négation (-mot).
Limitations connues
- Votes à main levée non tracés : la majorité des votes en hémicycle se font à main levée et ne laissent aucune trace publique exploitable. Toute statistique liée au comportement de vote ne porte donc que sur les scrutins publics nominatifs. Ce n'est pas une lacune du site mais un fait sur les données disponibles.
- Lien dossier ↔ scrutin partiel : ~80 % des scrutins n'ont pas de référence explicite vers le dossier législatif qu'ils tranchent. La page d'un texte ne montre que les scrutins explicitement liés à la source.
- Cosignataires d'amendements : seul le nombre est conservé pour des raisons de volume (108 000 amendements × N cosignataires = plusieurs millions de paires). La liste détaillée est récupérable via le lien PDF de l'amendement.
- Reconstruction de séance QAG : le rattachement entre une question au Gouvernement et la séance se fait par date — cela peut laisser des ambiguïtés rares (deux séances le même jour).
- Statut adopté / rejeté non extractible automatiquement pour les textes : la donnée AN code la décision via un type générique sans valeur d'issue ; aucune inférence n'est faite côté site.
- Dossiers reportés d'une législature antérieure : le jeu de données « Dossiers législatifs » publié par l'Assemblée pour la 17ᵉ législature inclut quelques centaines de dossiers déposés sous une législature précédente (principalement la 16ᵉ) mais toujours en cours d'examen, ainsi que leurs amendements. Conséquence sur les chiffres : les pages de listing (/textes, /amendements…) ne comptent que les dossiers proprement rattachés à la 17ᵉ législature, tandis que les compteurs globaux de la page d'accueil reflètent l'intégralité du jeu de données ingéré. L'écart entre les deux nombres (de l'ordre de 200 dossiers, ~12 000 amendements) correspond exactement à ces dossiers antérieurs encore actifs — il ne s'agit pas d'une erreur mais d'une caractéristique de la source.
API publique
Tous les listings et fiches sont exposés en JSON sur /api/*.
La spécification OpenAPI est publiée et naviguable :
- Swagger UI — interface interactive, essais de requêtes en direct.
- ReDoc — version lecture (mieux pour la documentation imprimée).
- openapi.json — spécification brute (utilisable avec n'importe quel client OpenAPI : Postman, openapi-generator, etc.).
L'API est en lecture seule, sans authentification ni quota côté local (mais bien sûr local-first : pas de service hébergé public).
Contact & disclosure
- Stack technique : Python (FastAPI + SQLite + Jinja2), Linux (Ubuntu 24.04), nginx, HTTPS via Let's Encrypt. Le code source est ouvert et consultable : github.com/RogericBot/577deputes.
- Signaler une erreur de calcul, une donnée incorrecte ou suggérer une amélioration : voir le fichier /.well-known/security.txt pour le canal de contact (procédure de disclosure responsable conforme au RFC 9116).
- Pour citer le site : « 577députés — exploration de l'activité parlementaire de la 17ᵉ législature, à partir des données ouvertes de l'Assemblée nationale (Licence Ouverte / Etalab) ». Pour la méthodologie : note déposée sur Zenodo, DOI 10.5281/zenodo.20127509.