577députés 17ᵉ législature

À 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 :

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 :

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 :

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 :

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é

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.

DomaineSourceFormatVolume actuel
Députés en exerciceAMO10 (acteurs / mandats / organes — actifs)JSON ZIP, ~5 MB577 députés
Députés historiquesAMO50 (acteurs / mandats / organes — historiques)JSON ZIP, ~14 MB+48 ex-députés indexés
Questions écritesQuestions_ecrites.json.zipJSON ZIP, ~38 MB18 689 questions toutes catégories confondues
Questions oralesQuestions_orales_sans_debat.json.zipJSON ZIP, ~3 MB
Questions au GouvernementQuestions_gouvernement.json.zipJSON ZIP, ~4 MB
Dossiers législatifsDossiers_Legislatifs.json.zipJSON ZIP, ~9 MB2 893 dossiers
AmendementsAmendements.json.zipJSON ZIP, ~251 MB116 970 amendements
Scrutins publics nominatifsScrutins.json.zipJSON ZIP, ~21 MB7 453 scrutins · 1 157 589 votes individuels
Réunions / agendaAgenda.json.zipJSON ZIP, ~7 MB6 669 réunions
Comptes rendus de séancesyseron.xml.zipXML ZIP, ~45 MB507 comptes rendus, ~3 700 interventions extraites
Population par circonscriptionINSEE — Populations légales 2021 (republiées 25/06/2024)XLSX, ~32 KB566 circos métropole + DOM, mise à jour annuelle
Inscrits / votants par circonscriptionMinistère de l'Intérieur — Législatives 2024 1er tour (résultats définitifs)CSV, ~330 KB577 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

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é :

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.

  1. 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é est total_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.
  2. 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é).
  3. 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 est Adopté, Rejeté, Retiré ou Discuté. Il est dit « non défendu » si son sort est Non soutenu ou 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.

  1. Onglet Blocs : tableau des groupes parlementaires (GP) constitués sur la législature en cours, avec effectif (depuis la table deputies filtrée sur is_active = 1), nombre de scrutins votés, et discipline moyenne.
  2. 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.
  3. 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).
  4. 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 :

  1. Le texte du dispositif est nettoyé (HTML retiré, accents pliés, ponctuation supprimée).
  2. Découpé en shingles de 5 mots consécutifs.
  3. 64 signatures MinHash sont calculées (BLAKE2b 64-bit avec graines déterministes).
  4. 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.
  5. 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.

  1. 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.
  2. 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.
  3. Amplification intra-groupe1 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.
  4. 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.

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

API publique

Tous les listings et fiches sont exposés en JSON sur /api/*. La spécification OpenAPI est publiée et naviguable :

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