Source: http://flothesof.github.io/les-deputes-francais-sont-souvent-absents-aux-scrutins.html
Timestamp: 2017-08-23 06:21:25+00:00

Document:
Les députés français et l'absentéisme aux scrutins de l'assemblée nationale | Frolian's blog
Les députés français et l'absentéisme aux scrutins de l'assemblée nationale
Dans ce billet, nous allons extraire les données disponibles sur les scrutins de l'assemblée nationale afin de déterminer quels jours de la semaine sont propice au débat dans l'assemblée et quels jours ne le sont pas.
Les données qui m'intéressent sont sur la page suivante : http://www2.assemblee-nationale.fr/scrutins/liste/%28legislature%29/14.
Téléchargeons le contenu de cette page.
r = requests.get("http://www2.assemblee-nationale.fr/scrutins/liste/%28legislature%29/14")
Maintenant, passons la page dans le parser BeautifulSoup :
Les éléments qui nous intéressent sont les suivants :
résultats : pour, contre, abstention volontaire
Ces éléments sont dans un grand tableau, que nous allons essayer d'extraire :
len(elems)
Chaque élément précédent représente une ligne du tableau. La première ligne du tableau contient par exemple les informations suivantes :
elems[0]
<td class="denom">1237*</td>
<td>10/02/2016</td>
<td class="desc">l'ensemble du projet de loi constitutionnelle de protection de la Nation (première lecture). [<a href="http://www.assemblee-nationale.fr/14/dossiers/protection_nation.asp">dossier</a>] [<a href="/scrutins/detail/(legislature)/14/(num)/1237">analyse du scrutin</a>]</td>
<td class="pour">317</td>
<td class="contre SSO">199</td>
<td class="abs SSO">51</td>
Ecrivons une fonction qui extrait les informations d'une seule ligne.
On peut tester cette routine sur la première ligne :
extract_information(elems[0])
('1237*',
'10/02/2016',
"l'ensemble du projet de loi constitutionnelle de protection de la Nation (première lecture). [dossier] [analyse du scrutin]",
Répétons cette extraction pour chaque ligne :
data = [extract_information(line) for line in elems]
Comme on peut le voir, cela marche plutôt bien. Nous allons maintenant traiter ces informations avec pandas.
Utilisation de pandas¶
Nous pouvons directement importer les données précédentes dans un objet dataframe, qui va nous simplifier les démarches :
1237* 10/02/2016 l'ensemble du projet de loi constitutionnelle ... 317 199 51
1236 09/02/2016 l'ensemble de l'article premier du projet de l... 116 19 11
1235 09/02/2016 l'amendement n° 1 du Gouvernement à l'article ... 132 7 7
1234 09/02/2016 l'amendement n° 2 du Gouvernement à l'article ... 104 34 7
1233 09/02/2016 l'amendement n° 234 de M. Hamon après l'articl... 61 97 3
1232 09/02/2016 l'amendement n° 168 de M. Hamon après l'articl... 67 103 2
1231 09/02/2016 l'article 2 du projet de loi constitutionnelle... 162 148 22
1230 09/02/2016 le sous-amendement n° 271 de Mme Duflot et les... 59 185 25
1229 09/02/2016 le sous-amendement n° 250 de M. Goldberg et le... 77 174 32
1228 09/02/2016 l'amendement n° 50 de M. Schwartzenberg à l'ar... 64 180 41
A partir de ce tableau, nous pouvons calculer le nombre de d'absents, car il y a 577 députés à l'assemblée nationale.
1237* 10/02/2016 l'ensemble du projet de loi constitutionnelle ... 317 199 51 567 10
1236 09/02/2016 l'ensemble de l'article premier du projet de l... 116 19 11 146 431
1235 09/02/2016 l'amendement n° 1 du Gouvernement à l'article ... 132 7 7 146 431
1234 09/02/2016 l'amendement n° 2 du Gouvernement à l'article ... 104 34 7 145 432
1233 09/02/2016 l'amendement n° 234 de M. Hamon après l'articl... 61 97 3 161 416
1232 09/02/2016 l'amendement n° 168 de M. Hamon après l'articl... 67 103 2 172 405
1231 09/02/2016 l'article 2 du projet de loi constitutionnelle... 162 148 22 332 245
1230 09/02/2016 le sous-amendement n° 271 de Mme Duflot et les... 59 185 25 269 308
1229 09/02/2016 le sous-amendement n° 250 de M. Goldberg et le... 77 174 32 283 294
1228 09/02/2016 l'amendement n° 50 de M. Schwartzenberg à l'ar... 64 180 41 285 292
On peut représenter graphiquement les absences :
df.absents.plot()
plt.xlabel('scrutin')
plt.title("nombre d'absents (sur 577 députés)")
<matplotlib.text.Text at 0x91fd208>
Afin de mieux appréhender cette distribution, regardons l'histogramme des absences :
df.absents.plot(kind='hist', bins=20)
plt.title("histogramme du nombre d'absents")
<matplotlib.text.Text at 0x94ed518>
On observe une distribution étrange : à gauche des scrutins avec peu d'absents (quelques uns), au milieu des scrutins à mi-assemblée (un peu moins) et beaucoup de scrutins avec beaucoup d'absents.
On peut s'intéresser aux dates des scrutins et rajouter l'information du jour de la semaine dans le tableau de données :
1237* 2016-02-10 l'ensemble du projet de loi constitutionnelle ... 317 199 51 567 10
1236 2016-02-09 l'ensemble de l'article premier du projet de l... 116 19 11 146 431
1235 2016-02-09 l'amendement n° 1 du Gouvernement à l'article ... 132 7 7 146 431
1234 2016-02-09 l'amendement n° 2 du Gouvernement à l'article ... 104 34 7 145 432
1233 2016-02-09 l'amendement n° 234 de M. Hamon après l'articl... 61 97 3 161 416
1232 2016-02-09 l'amendement n° 168 de M. Hamon après l'articl... 67 103 2 172 405
1231 2016-02-09 l'article 2 du projet de loi constitutionnelle... 162 148 22 332 245
1230 2016-02-09 le sous-amendement n° 271 de Mme Duflot et les... 59 185 25 269 308
1229 2016-02-09 le sous-amendement n° 250 de M. Goldberg et le... 77 174 32 283 294
1228 2016-02-09 l'amendement n° 50 de M. Schwartzenberg à l'ar... 64 180 41 285 292
Rajoutons le jour de la semaine à nos données :
1237* 2016-02-10 l'ensemble du projet de loi constitutionnelle ... 317 199 51 567 10 03-mercredi
1233 2016-02-09 l'amendement n° 234 de M. Hamon après l'articl... 61 97 3 161 416 02-mardi
1232 2016-02-09 l'amendement n° 168 de M. Hamon après l'articl... 67 103 2 172 405 02-mardi
1231 2016-02-09 l'article 2 du projet de loi constitutionnelle... 162 148 22 332 245 02-mardi
1230 2016-02-09 le sous-amendement n° 271 de Mme Duflot et les... 59 185 25 269 308 02-mardi
1229 2016-02-09 le sous-amendement n° 250 de M. Goldberg et le... 77 174 32 283 294 02-mardi
1228 2016-02-09 l'amendement n° 50 de M. Schwartzenberg à l'ar... 64 180 41 285 292 02-mardi
On peut donc désormais calculer des statistiques sur la base de cette information. Par exemple, regarder combien de scrutins ont eu lieu chaque jour de la semaine.
df.groupby('jour').size()
01-lundi       10
02-mardi       38
03-mercredi    21
04-jeudi       21
05-vendredi    10
On ne voit pas de scrutins le samedi ni le dimanche. Cela semble rassurant. Regardons la moyenne des présents et des absents sur ces jours :
df.groupby('jour').mean()['presents'].plot(ax=ax[0], style='-o')
ax[0].set_ylim(0, 577)
ax[0].set_title("moyenne du nombre de présents par jour de la semaine")
df.groupby('jour').mean()['absents'].plot(ax=ax[1], style='-o')
ax[1].set_ylim(0, 577)
ax[1].set_title("moyenne du nombre d'absents par jour de la semaine")
On voit que le pic d'absents est le vendredi. Calculons le pourcentage d'absentéisme, c'est-à-dire divisons le nombre précédent par 577 députés.
(df.groupby('jour').mean()['absents'] / 577 * 100).plot(style='-o')
plt.title("moyenne du nombre d'absents par jour de la semaine\n(pourcentage de l'assemblée complète)")
Dans le graphique précédent, j'ai choisi de mettre l'échelle des ordonnées à 100% afin de montrer à quel point ces chiffres sont loins du 0% d'absents en moyenne.
Nous n'avons travaillé ici que sur des données partielles. Remontons dans le temps et téléchargeons toutes les données disponibles pour faire le travail ici présent.
Récupération de tous les scrutins depuis 2012¶
Pour faire ce travail, une simple boucle sur l'offset des scrutins permet de récupérer les données :
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/0/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/100/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/200/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/300/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/400/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/500/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/600/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/700/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/800/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/900/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/1000/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/1100/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
http://www2.assemblee-nationale.fr/scrutins/liste/(offset)/1200/(legislature)/14/(type)/TOUS/(idDossier)/TOUS
On a désormais accès à 1237 scrutins depuis juillet 2012, date de la dernière élection législative.
Construisons le tableau des données détaillées :
Un aperçu de la fin du tableau :
10 2012-07-19 l'article 27 du projet de loi de finances rect... 106 52 0 158 419 04-jeudi
9 2012-07-19 l'amendement n° 477 rect présenté par M. de C... 24 108 13 145 432 04-jeudi
8 2012-07-19 le sous-amendement n° 547 présenté par M. Bor... 29 119 5 153 424 04-jeudi
7 2012-07-19 sur l'article 4 du projet de loi de finances r... 44 17 3 64 513 04-jeudi
6 2012-07-19 L'amendement n° 467 de M. de Courson à l'ar... 24 90 0 114 463 04-jeudi
5 2012-07-18 l'article 2 du projet de loi de finances recti... 89 64 0 153 424 03-mercredi
4 2012-07-18 les amendements de suppression de l'alinéa 2 à... 88 177 0 265 312 03-mercredi
3 2012-07-18 les amendements de suppression de l'article 2 ... 81 178 1 260 317 03-mercredi
2 2012-07-17 l'article 1er du projet de loi de finances rec... 61 48 1 110 467 02-mardi
1 2012-07-03 la déclaration de politique générale du gouver... 302 225 17 544 33 02-mardi
Traçons l'histogramme du nombre de présents :
df.presents.plot(kind='hist', bins=20)
plt.title("histogramme du nombre de présents")
plt.xlabel("nombre de députés")
plt.ylabel("nombre de scrutins")
<matplotlib.text.Text at 0xab750b8>
On voit que les députés sont absents, en moyenne, lors des scrutins avec une masse de scrutins avec faible présence, à gauche, et quelques scrutins avec beaucoup de députés.
Un histogramme cumulé permet d'interpréter plus facilement ces données :
df.presents.plot(kind='hist', cumulative=True, bins=100)
plt.title("histogramme cumulé du nombre de présents")
<matplotlib.text.Text at 0xacb3b00>
Ce graphique permet de dire les choses suivants :
il y a eu plus de 800 scrutins avec moins de 100 députés présents, depuis juillet 2012
il y a eu plus de 1000 scrutins avec moins de 200 députés présents, depuis juillet 2012
il y a une centainen de scrutins avec plus de 500 députés présents, depuis juillet 2012
df.presents.mean()
134.749393694422
En moyenne, sur les scrutins depuis juillet 2012, il y a avait 135 députés présents. Soit moins d'un quart de l'assemblée nationale.
On peut également répondre à la question : "quand les scrutins ont-ils lieu ?".
01-lundi       181
02-mardi       280
03-mercredi    233
04-jeudi       295
05-vendredi    174
06-samedi       41
07-dimanche     33
df.groupby('jour').size().plot(kind='bar')
<matplotlib.axes._subplots.AxesSubplot at 0xae4d748>
Rien d'anormal : les scrutins ont lieu surtout les jours de la semaine, rarement le week-end. Pendant la semaine, ils ont lieu surtout le mardi et le jeudi.
Prochaine question : "quel jour de la semaine y a-t-il le plus d'absents lors des scrutins ?".
df.groupby('jour').mean()[['absents', 'presents']]
516.049724 60.950276
303.350000 273.650000
438.141631 138.858369
504.688136 72.311864
517.235632 59.764368
394.829268 182.170732
350.424242 226.575758
fig, ax = plt.subplots(2, 1, figsize=(8, 7))
df.groupby('jour').mean()['presents'].plot(ax=ax[0], style='-o', legend=True)
ax[0].plot([0, 6], [577/2, 577/2], '--', label='hémi-hémicycle')
df.groupby('jour').mean()['absents'].plot(ax=ax[1], style='-o', legend=True)
ax[1].plot([0, 6], [577/2, 577/2], '--', label='hémi-hémicycle')
ax[1].legend(loc='lower right')
On voit donc bien que les députés sont surtout absents lors des scrutins. En effet, en moyenne, on ne remplit jamais l'hémicycle.
On peut également représenter la courbe d'absentéisme en pourcentage :
(df.groupby('jour').mean()['absents'] / 577 * 100).plot(kind='bar', style='-o')
plt.ylabel("pourcentage de députés absents")
plt.xlabel("jour de la semaine")
<matplotlib.text.Text at 0xa6c9eb8>
Nous avons donc répondu à la question principale qui se posait à nous : pour un scrutin moyen, combien de députés présents dans l'assemblée nationale. Penchons nous maintenant sur d'autres visualisations intéressantes.
Quelques visualisations intéressantes¶
Pour et contre¶
Une première visualisation intéressante vient des votes exprimés en fonction des suffrages. Si on place un point en fonction des votes pour et des votes contre, on obtient ceci :
df.plot(ax=ax, kind='scatter', x='pour', y='contre')
La droite de la majorité sépare le graphique en deux régions. En particulier, on peut distinguer les régions suivantes :
la droite horizontale qui passe par 0 : des scrutins où tout le monde est d'accord pour voter pour
des scrutins autour de (300, 200) : des scrutins assez débattus, mais où il y a une majorité claire
beaucoup de scrutins avec peu de députés (zone en bas à gauche) : pas de tendance claire
On peut s'intéresser aux scrutins avec une forte participation. En dessinant les points concernants dans le graphe précédent à l'aide d'une autre couleur, on trouve ceci :
df[df.presents > 500].plot(ax=ax, kind='scatter', x='pour', y='contre', color='Red', s=50, label='> 500 députés')
On voit que dans les votes à forte participation, très peu n'ont pas donné lieu à un vote majoritaire pour. Ceci reflète le fait que le parti socialiste dispose d'une majorité à l'assemblée nationale depuis les législatives de 2012.
On peut d'ailleurs s'intéresser au vote à forte participation qui n'a pas donné lieu à une majorité de pour :
df[(df.presents > 500) & (df.contre > df.pour)]
57 2012-11-13 la demande de constitution d'une commission sp... 207 317 0 524 53 02-mardi
Il s'agit de "la demande de constitution d'une commission spéciale présentée par le président du groupe de l'Union pour un mouvement populaire pour l'examen du projet de loi ouvrant le mariage aux couples de personnes de même sexe".
Les thématiques¶
On peut essayer de dresser un tableau comparatif des mots les plus utilisés pour les scrutins de plus de 500 députés participants ainsi que pour les scrutins de moins de 500 députés.
big = df[df.presents > 500]
small = df[df.presents <= 500]
def summarize(df):
"""Affiche les mots qui reviennent le plus dans les objets des scrutins."""
for obj in df['objet']:
c.update(obj.split(' '))
return c.most_common(100)
summarize(big)[:20]
[('de', 242),
('du', 205),
('la', 112),
('scrutin]', 108),
('[analyse', 108),
('[dossier]', 100),
('loi', 99),
('projet', 93),
("l'ensemble", 78),
('à', 53),
('et', 49),
('le', 46),
('lecture).', 42),
('relatif', 38),
('pour', 37),
('des', 37),
('(première', 30),
('', 17),
('conseillers', 17),
('finances', 17)]
summarize(small)[:20]
[('de', 3973),
('du', 2466),
('à', 1290),
('scrutin]', 1129),
('[analyse', 1129),
('[dossier]', 1125),
('loi', 1063),
("l'article", 1053),
('et', 994),
('la', 991),
('projet', 985),
('n°', 984),
("l'amendement", 874),
('M.', 733),
('les', 533),
('amendements', 475),
('identiques', 402),
('des', 324),
('relatif', 323),
('pour', 320)]
Etant donné que beaucoup de mots sont communs ont va prendre l'intersection des mots fréquents et la soustraire aux deux listes de mots pour extraire les mots pertinents :
common = set([item[0] for item in summarize(small)]) & set([item[0] for item in summarize(big)])
'(nouvelle',
'(première',
'République',
'[analyse',
'[dossier]',
'calendrier',
'conseillers',
'délimitation',
'départementales',
'financement',
'finances',
"l'article",
"l'élection",
'lecture).',
'loi',
'mariage',
'modernisation',
'modifiant',
'par',
'portant',
'publique',
'rectificative',
'relatif',
'régionales',
'régions,',
'scrutin]',
'sociale',
'sur',
'système',
'élections',
'électoral'}
Ceci nous permet d'obtenir la liste des mots suivants pour les "grands scrutins" :
[(word, freq) for word, freq in summarize(big) \
if word in set([item[0] for item in summarize(big)]) - common]
[("l'ensemble", 78),
('organique', 13),
('programmation', 8),
('avec', 7),
('cumul', 7),
('vie', 7),
('mandat', 7),
('locales', 6),
('application', 6),
('fonctions', 6),
('interdisant', 6),
('(lecture', 6),
('transparence', 6),
('déclaration', 6),
('Constitution).', 6),
('exécutives', 6),
('alinéa', 5),
('départementaux,', 5),
('définitive).', 5),
('municipaux', 5),
('dispositions', 4),
('(1ère', 4),
('député', 3),
('ouvrant', 3),
('réforme', 3),
('49,', 3),
('2013.', 3),
('ou', 3),
('politique', 3),
('2016', 3),
('constitutionnelle', 3),
('diverses', 3),
('économique', 3),
('représentant', 3),
("l'emploi", 3),
('logement', 3),
('années', 3),
('lecture)', 3),
('50-1', 3),
('(en', 3),
('Parlement', 3),
('générale', 3),
('président', 2),
('concernant', 2),
('nomination', 2)]
[(word, freq) for word, freq in summarize(small) \
if word in set([item[0] for item in summarize(small)]) - common]
[('n°', 984),
('Mme', 301),
('après', 215),
('Fraysse', 199),
('4', 189),
('sécurisation', 173),
("l'emploi.", 170),
('ouverture', 153),
('premier', 130),
('2', 114),
('sexe.', 109),
('Le', 100),
('sexe', 75),
('1er', 75),
('bis', 73),
('3', 72),
('Fur', 68),
('justice', 65),
('garantissant', 64),
("l'avenir", 64),
('Sénat,', 63),
('Poisson', 59),
('14', 58),
('suppression', 58),
('loi,', 56),
('motion', 55),
('retraites.', 54),
('territoriale', 52),
('avant', 50),
('13', 46),
('visant', 44),
('nouvelle', 40),
('ses', 39),
('organisation', 38),
('collègues', 38),
('adopté', 37),
("l'égalité", 36),
('12', 35),
('unique', 35),
('identique', 35),
('croissance,', 32)]
On retrouve donc des thématiques majeures, comme les lois de programmation, la transparence, le cumul des mandats mais aussi des thématiques que l'on pourrait qualifier de mineures comme le sexe, les retraites, la croissance, Mme Fraysse.
Nombre de scrutins par jour¶
Une autre question que l'on peut se poser est celle du nombre de scrutins par jour. Combien de scrutins par jour donné, en moyenne ?
s = df.groupby('date').size()
s.plot(kind='hist')
<matplotlib.axes._subplots.AxesSubplot at 0xd3cef60>
En général, il y a peu de scrutins par jour, mais il existe des jours exceptionnels :
s.sort_values(ascending=False)
2013-04-08    62
2013-04-05    51
2013-02-06    39
2013-04-04    36
2013-02-03    33
2013-02-05    24
2013-02-02    24
2013-10-11    22
2014-06-16    20
2013-02-07    17
2013-10-08    14
2013-11-20    13
2014-07-01    13
2013-02-08    13
2013-04-11    12
2013-02-04    12
2013-04-03    12
2016-02-09    11
2013-10-21    11
2013-07-19    11
2013-03-28    11
2015-03-17    11
2014-10-17     9
2013-04-06     9
2013-02-22     8
2013-03-14     8
2013-06-26     8
2015-02-14     8
2013-12-11     8
2014-05-22     8
2015-12-01     1
2015-03-19     1
2015-12-03     1
2015-12-08     1
2016-01-14     1
2016-02-03     1
2015-10-27     1
2013-10-01     1
2015-06-23     1
2015-01-26     1
2015-01-27     1
2015-01-28     1
2015-01-30     1
2015-02-05     1
2015-02-20     1
2015-03-11     1
2015-03-12     1
2015-06-24     1
2015-03-18     1
2015-03-31     1
2015-04-01     1
2015-04-15     1
2015-05-05     1
2015-05-19     1
2015-05-27     1
2015-06-02     1
2015-06-11     1
2015-06-18     1
2012-07-03     1
Que s'est-il passé en avril 2013 ? Il semblerait qu'il y ait une journée avec 62 scrutins.
df[df.date == '2013-04-08']
480 2013-04-08 l'amendement n°1 du Gouvernement à l'article 8... 46 21 3 70 507 01-lundi
479 2013-04-08 l'article 18 du projet de loi relatif à la séc... 49 7 11 67 510 01-lundi
478 2013-04-08 l'amendement n°3451 de Mme Fraysse et les amen... 5 52 0 57 520 01-lundi
477 2013-04-08 l'amendement n°2602 de Mme Fraysse et les amen... 5 47 3 55 522 01-lundi
476 2013-04-08 l'article 17 du projet de loi relatif à la sé... 75 8 1 84 493 01-lundi
475 2013-04-08 l'article 16 du projet de loi relatif à la sé... 55 19 12 86 491 01-lundi
474 2013-04-08 l'amendement n°3400 de Mme Fraysse et les amen... 8 60 1 69 508 01-lundi
473 2013-04-08 l'amendement n°3092 de Mme Fraysse et les amen... 10 64 0 74 503 01-lundi
472 2013-04-08 l'amendement n°5045 de Mme Fraysse et les amen... 9 62 4 75 502 01-lundi
471 2013-04-08 l'amendement n°3047 de Mme Fraysse et les amen... 30 47 0 77 500 01-lundi
470 2013-04-08 l'amendement n°5159 de Mme Fraysse et les amen... 14 59 0 73 504 01-lundi
469 2013-04-08 l'amendement n°5433 de M. Robiliard à l'articl... 19 45 2 66 511 01-lundi
468 2013-04-08 l'amendement n°1325 de Mme Fraysse et les amen... 6 43 0 49 528 01-lundi
467 2013-04-08 l'amendement n°2794 de Mme Fraysse et les amen... 12 38 2 52 525 01-lundi
466 2013-04-08 l'amendement n°2758 de Mme Fraysse et les amen... 8 44 1 53 524 01-lundi
465 2013-04-08 l'amendement n°5091 de Mme Fraysse et les amen... 9 34 0 43 534 01-lundi
464 2013-04-08 l'amendement n°3525 de Mme Fraysse et les amen... 9 48 2 59 518 01-lundi
463 2013-04-08 l'amendement n°3102 de Mme Fraysse et les amen... 6 45 5 56 521 01-lundi
462 2013-04-08 l'amendement n°2551 de Mme Fraysse et les amen... 9 45 2 56 521 01-lundi
461 2013-04-08 l'amendement n° 3639 de Mme Fraysse et les ame... 8 30 5 43 534 01-lundi
460 2013-04-08 l'amendement n° 2727 de Mme Fraysse et les ame... 11 32 3 46 531 01-lundi
459 2013-04-08 l'article 14 du projet de loi relatif à la séc... 49 0 11 60 517 01-lundi
458 2013-04-08 l'amendement n° 5418 de M. Vercamer à l'articl... 55 1 0 56 521 01-lundi
457 2013-04-08 l'amendement n° 5417 de M. Vercamer à l'articl... 10 41 2 53 524 01-lundi
456 2013-04-08 l'amendement n° 3713 de Mme Fraysse et les ame... 7 43 0 50 527 01-lundi
455 2013-04-08 l'amendement n° 2686 de Mme Fraysse et les ame... 4 45 0 49 528 01-lundi
454 2013-04-08 l'amendement n° 1294 de Mme Fraysse et les ame... 4 38 0 42 535 01-lundi
453 2013-04-08 l'amendement n° 1305 de Mme Fraysse et les ame... 7 34 3 44 533 01-lundi
452 2013-04-08 l'amendement n° 3764 de Mme Fraysse et les ame... 5 32 0 37 540 01-lundi
451 2013-04-08 l'amendement n° 2916 (rect.) de Mme Fraysse et... 7 32 4 43 534 01-lundi
448 2013-04-08 l'amendement n° 2308 de Mme Fraysse et les ame... 4 31 3 38 539 01-lundi
447 2013-04-08 l'amendement n° 2205 de Mme Fraysse et les ame... 33 0 2 35 542 01-lundi
446 2013-04-08 l'amendement n° 2174 de Mme Fraysse et les ame... 4 27 3 34 543 01-lundi
445 2013-04-08 l'amendement n° 5250 de Mme Fraysse et les ame... 4 22 2 28 549 01-lundi
444 2013-04-08 l'amendement n° 984 de M. Carpentier à l'artic... 9 17 0 26 551 01-lundi
443 2013-04-08 l'amendement n° 3276 de Mme Fraysse et les ame... 11 15 0 26 551 01-lundi
442 2013-04-08 l'amendement n° 2123 de Mme Fraysse et les ame... 2 21 4 27 550 01-lundi
441 2013-04-08 l'amendement n° 5215 de Mme Fraysse et les ame... 6 21 4 31 546 01-lundi
440 2013-04-08 l'amendement n° 5146 de Mme Fraysse et les ame... 6 17 5 28 549 01-lundi
439 2013-04-08 l'amendement n° 1436 de M. Cherpion et les ame... 4 22 2 28 549 01-lundi
438 2013-04-08 l'amendement n° 2133 de Mme Fraysse et les ame... 11 21 2 34 543 01-lundi
437 2013-04-08 l'amendement n° 3794 de Mme Fraysse et les ame... 4 18 5 27 550 01-lundi
436 2013-04-08 l'amendement n° 2093 de Mme Fraysse et les ame... 6 21 4 31 546 01-lundi
435 2013-04-08 l'amendement n° 2501 de Mme Fraysse et les ame... 13 23 0 36 541 01-lundi
434 2013-04-08 l'amendement n° 2073 de Mme Fraysse et les ame... 7 18 8 33 544 01-lundi
433 2013-04-08 l'amendement n° 2023 de Mme Fraysse et les ame... 9 20 4 33 544 01-lundi
432 2013-04-08 l'amendement n° 5011 de Mme Fraysse et les ame... 9 21 1 31 546 01-lundi
431 2013-04-08 l'amendement n° 1947 de Mme Fraysse et les ame... 6 22 0 28 549 01-lundi
430 2013-04-08 l'amendement n° 1915 de Mme Fraysse et les ame... 6 23 0 29 548 01-lundi
429 2013-04-08 l'amendement n° 2043 de Mme Fraysse et les ame... 6 19 3 28 549 01-lundi
428 2013-04-08 l'amendement n° 1483 de Mme Fraysse et les ame... 6 12 0 18 559 01-lundi
427 2013-04-08 l'amendement n° 1463 de Mme Fraysse et les ame... 8 36 0 44 533 01-lundi
426 2013-04-08 l'amendement n° 4797 de Mme Fraysse et les ame... 8 30 0 38 539 01-lundi
425 2013-04-08 l'amendement n° 1274 de Mme Fraysse et les ame... 7 26 2 35 542 01-lundi
424 2013-04-08 l'amendement n° 4742 de Mme Fraysse et les ame... 9 22 2 33 544 01-lundi
423 2013-04-08 l'amendement n° 1264 de Mme Fraysse et les ame... 6 15 2 23 554 01-lundi
422 2013-04-08 l'amendement n° 4679 de Mme Fraysse et les ame... 6 13 2 21 556 01-lundi
421 2013-04-08 l'amendement n° 1376 de Mme Fraysse et les ame... 4 13 2 19 558 01-lundi
420 2013-04-08 l'amendement n° 1244 de Mme Fraysse et les ame... 6 12 2 20 557 01-lundi
419 2013-04-08 l'amendement n° 3016 de Mme Fraysse et les ame... 6 14 0 20 557 01-lundi
On peut relire une partie des échanges de cette journée ici. Il semblerait que ces amendements soient des amendements de cohérence. On peut imaginer le déroulement de cette journée en dessinant les votes au fur et à mesure :
selection = (df.date == '2013-04-08') & df.objet.str.contains('Fraysse')
df[selection].plot.line(ax=ax, x='numero', y='pour')
df[selection].plot.line(ax=ax, x='numero', y='contre')
ax.set_xlabel('numéro du scrutin (flèche du temps)')
On imagine bien l'assemblée se remplir au fur et à mesure de la journée du 8 avril. La plupart des amendements proposés par Mme Fraysse ont malheureusement été rejetés, sauf un.
Comme on a pu le découvrir dans cette note, des données très riches sont accessibles pour imaginer le travail de l'assemblée nationale. Ce qui est plus difficile, c'est d'en tirer des conclusions solides. On pourra tout de même retenir que l'essentiel des scrutins de l'assemblée ne sont pas suivis par les députés. Seuls les très gros scrutins le sont, et ceux-ci sont généralement adoptés (dans le cadre de la législature actuelle).

References: l'article 2
 l'article 2
 l'article 2
 l'article 2
 l'article 27
 l'article 4
 l'article 2
 l'article 2
 l'article 1
 l'article 8
 l'article 18
 l'article 17
 l'article 16
 l'article 14