-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge remote-tracking branch 'DataCampAN/master'
- Loading branch information
Showing
10 changed files
with
355 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -88,6 +88,5 @@ ENV/ | |
# Rope project settings | ||
.ropeproject | ||
|
||
|
||
MAEDI/config_twitter_api.py | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,7 @@ | ||
<<<<<<< HEAD | ||
# Hackathons | ||
Dossier contenant les travaux réalisé pendant les hackathons | ||
======= | ||
# DataCampAN | ||
repo du 1er hackathon à l'assemblée nationale | ||
>>>>>>> DataCampAN/master |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
Created on Sat Nov 26 11:37:39 2016 | ||
@author: aeidelman | ||
""" | ||
|
||
import os | ||
import json | ||
|
||
path = '/home/sgmap/data/DatacampAN/' | ||
|
||
path_qg = os.path.join(path, 'AN', 'Questions_gouvernement_XIV.json') | ||
|
||
with open(path_qg) as qg_file: | ||
data = json.load(qg_file) | ||
|
||
qg = data['questionsGvt']['question'] | ||
assert isinstance(qg, list) | ||
|
||
caracteristiques_question = ['renouvellements', 'auteur', 'type', | ||
'indexationAN', 'textesQuestion', 'identifiant', | ||
'signalement', 'minAttribs', 'uid', | ||
'minInt', 'cloture', 'textesReponse'] | ||
|
||
all_texts = '' | ||
|
||
for idx in range(len(qg)): | ||
exemple = qg[idx] | ||
texte = exemple['textesReponse']['texteReponse']['texte'] | ||
assert exemple['type'] in ['QG'] | ||
|
||
dest = os.path.join(path, 'AN', 'html', str(idx) + '.html') | ||
with open(dest, 'w', encoding='utf8') as output: | ||
output.write(texte) | ||
|
||
all_texts += texte + 7*'\n' | ||
|
||
|
||
extract_text = all_texts.split(7*'\n') | ||
size = int(len(extract_text)/10) | ||
extract_text = extract_text[:size] | ||
extract_text = 7*'\n'.join(extract_text) | ||
|
||
dest_all = os.path.join(path, 'AN', 'all.html') | ||
with open(dest_all, 'w', encoding='utf8') as output: | ||
output.write(extract_text) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
</p><p align="CENTER"> COMPÉTITIVITÉ DES ENTREPRISES <a name=PG3></a> </p><br><strong>M.</i>Je suis fier que, grâce à ce Président, nos armées soient accueillies comme elles le sont en Afrique.Avec quelles mesures concrètes atteindrez-vous l'objectif que vous vous êtes vous-même fixé, et qui est contesté par plusieurs membres de votre gouvernement comme par une partie de votre majorité ?C'est la raison pour laquelle, d'ailleurs, la police nationale saisit le procureur pour déplacement provisoire lorsqu'il y a des cas de maltraitance constatés.<br><br><strong>Mme Claude Greff.</strong> Mais ce sont des cas de maltraitance !<br><br><strong>M.</strong>La parole est à M. David Douillet, pour le groupe de l'Union pour un mouvement populaire.<br><br><strong>M.</i>Je veux redire ici que la police nationale dans le territoire de la capitale, comme partout en France, accomplit un travail remarquable pour que les faits que je viens d'évoquer ne s'amplifient ni ne se développent et pour que le droit soit respecté.<br><br>Enfin, pour ce qui concerne les populations de roms, nous sommes très déterminés à faire en sorte que les campements illicites ne se multiplient pas, qu'il y soit mis fin et que les populations soient intégrées.<i>(Applaudissements sur quelques bancs du groupe SRC.Bernard Cazeneuve,</strong><i> ministre .</i>…et qu'un accompagnement social soit apporté à ces familles.Philippe Goujon et M.le président.<i>(Applaudissements sur quelques bancs du groupe SRC et sur les bancs du groupe écologiste.Un choix qu'il s'agit de soutenir pour atteindre l'objectif de 500 000 apprentis avant la fin du quinquennat, alors qu'il n'y en a aujourd'hui que 440 000.Aux soixante-dix mesures nouvelles adoptées pour lutter contre la fraude et aux 2 milliards d'euros récupérés grâce au service de traitement des déclarations rectificatives s'ajoute le fait qu'un accord prévoyant la mise en place de l'échange automatique d'informations a été signé, Suisse incluse.<br><br>Mais l'actualité démontre que les efforts de la France, notamment sur le plan international, ne doivent pas s'interrompre.S'agissant des contrôles effectués par la police nationale, ils ne peuvent, conformément à la loi, ne viser à aucun moment des personnes en raison de leur appartenance nationale ou de toute autre forme d'appartenance.Ainsi, en dix ans, le nombre d'exploitations a diminué de près de 25 %.C'est la raison pour laquelle, d'ailleurs, la police nationale saisit le procureur pour déplacement provisoire lorsqu'il y a des cas de maltraitance constatés.<br><br><strong>Mme Claude Greff.</strong> Mais ce sont des cas de maltraitance !<br><br><strong>M.</strong>La parole est à M. David Douillet, pour le groupe de l'Union pour un mouvement populaire.<br><br><strong>M.</i>…et qu'un accompagnement social soit apporté à ces familles.Quant aux actions de la police nationale, elles visent à faire en sorte que la mendicité, lorsqu'elle est agressive, et que la situation des jeunes enfants, qui sont parfois dans la rue pendant de longues heures et qui peuvent se trouver exposés à de la maltraitance, soient traitées conformément aux règles et aux lois de la République.La brigade d'assistance aux personnes sans-abri – comme la mission des personnes sans domicile fixe de la ville de Paris – fait un travail partout dans les quartiers de la ville pour que la sécurité soit assurée…<br><br><strong>M.<i>(Applaudissements sur quelques bancs du groupe SRC et sur les bancs du groupe écologiste.Il faut donc encore délibérer pour payer l'association concernée.François Rochebloine.</b> Eh oui !<br/><b>Mme Michèle Tabarot.</b> Vous devez aussi entendre les Français, qui se sont rassemblés dimanche pour vous demander de ne pas faire voler en éclat l'institution de la famille.<br/>Ces défaites, vous en portez la responsabilité, vous et votre majorité !<br/>Vous portez également la responsabilité de vos alliances avec les extrémistes du Front de gauche, ce parti qui, ce week-end, a franchi une étape supplémentaire en envoyant des messages intolérables aux Français, en traitant de " salopards " les dix-sept ministres des finances de la zone euro, sans que vous ne réagissiez, et en allant jusqu'à insulter d'une manière détestable votre propre ministre de l'économie, sans que vous ne réagissiez.<br/><b>Un député du groupe UMP.</b> Il ne réagit jamais !<br/><b>Mme Michèle Tabarot.</b> Monsieur le Premier ministre, vous ne pouvez plus garder ce silence complaisant.<br/>Par votre attitude, vous cautionnez des propos qui discréditent la classe politique.)</i><br><br>Je l'ai simplement rappelé hier dans un communiqué, en rectifiant la note à laquelle vous avez fait référence, parce que la police de France est attachée au respect des principes républicains.Bernard Cazeneuve,</strong><i> ministre .La brigade d'assistance aux personnes sans-abri – comme la mission des personnes sans domicile fixe de la ville de Paris – fait un travail partout dans les quartiers de la ville pour que la sécurité soit assurée…<br><br><strong>M.</i>Monsieur le député Luca, vous ne pouvez ignorer, pas plus que personne sur ces bancs, qu'à l'entrée en sixième, entre 15 et 20 % d'élèves sont en difficulté pour ce qui est de l'apprentissage du français.</i>Je vous remercie, monsieur Goujon, pour votre question qui permet d'apporter toutes les précisions utiles.Bernard Cazeneuve,</strong><i> ministre .S'agissant des contrôles effectués par la police nationale, ils ne peuvent, conformément à la loi, ne viser à aucun moment des personnes en raison de leur appartenance nationale ou de toute autre forme d'appartenance.Vous demandez une ligne claire : la ligne du Gouvernement sur la question que vous évoquez est connue et je veux en rappeler les principes.S'agissant des contrôles effectués par la police nationale, ils ne peuvent, conformément à la loi, ne viser à aucun moment des personnes en raison de leur appartenance nationale ou de toute autre forme d'appartenance.)<br/></i> | ||
<p align='center'>POLITIQUE DU LOGEMENT </p><b>M.Et dès janvier prochain, je prendrai une nouvelle initiative pour faire en sorte que cette belle idée devienne une réalité.)</i><br> <p> | ||
|
||
|
||
</p><p align="CENTER"> PROJET DE LOI SUR L'AGRICULTURE <a name=PG14></a> </p><br><strong>M.le président.</b> La parole est à M. Jean-Jacques Cottel, pour le groupe socialiste, républicain et citoyen.<br/><b>M.Ce " chantier du siècle ", comparable à celui du tunnel sous la Manche, est stratégique car il permettra le renforcement de l'attractivité économique de nos territoires et l'essor de nos ports.)</i> Resat Dibrani est un provocateur, une caricature, mais combien d'autres attendent en silence exactement la même chose de notre pays, qui ne peut plus assumer un système dont la maîtrise lui échappe ?Je rappelle qu'elle s'inspire de politiques appliquées à l'étranger – en Allemagne, au Royaume-Uni, en Belgique, aux Pays-Bas ou encore au Danemark – depuis une dizaine d'années, et que nous sommes en quelque sorte en session de rattrapage.Nous mettons donc les bouchées doubles.<br><br>Je ferai, à vos deux questions, une réponse en deux temps.Cela vous expose donc, vous, membres du Gouvernement, à une contestation de plus en plus radicale des maires, des parents et même – ce qui est un comble pour une majorité de gauche !Jean-Jacques Cottel.</b> ...le canal Seine Nord recueille l'unanimité et relève d'un statut d'aménagement d'intérêt européen avec de multiples retombées.<br/>Ce projet représente une opportunité territoriale majeure et les collectivités, après les réserves du foncier déjà effectuées, sont prêtes à s'impliquer davantage encore.le président.</b> Votre temps de parole est épuisé, mon cher collègue.<br/><b>M.le président.</b> La parole est à M. Jean-Jacques Cottel, pour le groupe socialiste, républicain et citoyen.<br/><b>M.Jean-Pierre Barbier.</b> Même en trois heures !<br/><b>Mme Marylise Lebranchu,</b> <i>ministre.Claude Goasguen.</b> Mais oui !Ce " chantier du siècle ", comparable à celui du tunnel sous la Manche, est stratégique car il permettra le renforcement de l'attractivité économique de nos territoires et l'essor de nos ports.Claude Goasguen.</b> Mais oui !Cela permettra de cesser de légiférer à l'aveugle comme nous le faisons depuis vingt ans, tout en vérifiant précisément la charge que crée toute nouvelle réglementation sur la vie des entreprises, afin de la compenser à due concurrence.)</i><br><br>Cette fois, il s'agit de l'engagement n° 18 du président Hollande : la réforme de la perte d'autonomie des personnes âgées.<br><br>Monsieur le Premier ministre, vous étiez ce matin à Angers, pour dévoiler en lien avec Michèle Delaunay et Marisol Touraine, les grands axes de la loi pour l'adaptation de la société au vieillissement, qui sera présentée en conseil des ministres début avril et que le Parlement examinera dans la foulée.</i>Monsieur le député, je vous remercie pour votre question relative à la réalisation du canal Seine Nord - un sujet qui, je le sais, vous tient particulièrement à coeur.le président.</b> La parole est à M. Jean-Jacques Cottel, pour le groupe socialiste, républicain et citoyen.<br/><b>M.)</i><br> <p> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,117 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
Created on Sat Nov 26 09:13:40 2016 | ||
@author: aeidelman | ||
""" | ||
import os | ||
import json | ||
import pandas as pd | ||
|
||
path = '/home/sgmap/data/DatacampAN/' | ||
|
||
path_qe = os.path.join(path, 'AN', 'Questions_ecrites_XIV.json') | ||
|
||
with open(path_qe) as qe_file: | ||
data = json.load(qe_file) | ||
|
||
qe = data['questionsEcrites']['question'] | ||
assert isinstance(qe, list) | ||
|
||
test = pd.DataFrame(qe) | ||
|
||
|
||
def is_dict(serie): | ||
is_dict = serie.apply(lambda x: isinstance(x, dict) or isinstance(x, list)) | ||
return all(is_dict) | ||
|
||
def serie_of_dict_to_df(serie): | ||
if not is_dict(serie): | ||
return serie | ||
# assert all(is_dict) | ||
|
||
# c'est un bug parfois on a des listes | ||
cond = serie.apply(lambda x: isinstance(x, list)) | ||
serie[cond] = serie[cond].str.get(0) | ||
|
||
# c'est pas un bug parfois,il y a des None | ||
serie2 = pd.DataFrame(list(serie)) | ||
return serie2 | ||
|
||
|
||
|
||
def dict_to_df(df): | ||
columns = [df[col] for col in df.columns] | ||
is_col_dict = [is_dict(col) for col in columns] | ||
for col in df.columns[is_col_dict]: | ||
new_col = serie_of_dict_to_df(df[col]) | ||
if isinstance(new_col, pd.Series): | ||
df[col] = col | ||
else: | ||
new_col1 = dict_to_df(new_col) | ||
del df[col] | ||
df = pd.concat([df, new_col1], axis=1) | ||
return df | ||
|
||
auteur = dict_to_df(test) | ||
auteur.columns = auteur.columns.tolist()[:6] + ['parti','nom_parti'] + auteur.columns.tolist()[8:] | ||
to_keep = [x for x in range(19)] + [21,22,23] | ||
|
||
auteur = auteur.iloc[:, to_keep] | ||
|
||
repondu = auteur[auteur['cloture'].notnull()].reset_index() | ||
reponse = serie_of_dict_to_df(repondu['cloture']) | ||
cloture = pd.to_datetime(reponse['dateCloture'], format='%Y-%m-%d') | ||
debut = pd.to_datetime(repondu['dateJO'], format='%Y-%m-%d') | ||
|
||
repondu['temps'] = (cloture - debut)/pd.to_timedelta('1d') | ||
|
||
import numpy as np | ||
parti_dev = repondu.groupby(['nom_parti','developpe'])['temps'].agg([np.mean, | ||
lambda x : len(x)]) | ||
parti_dev.reset_index().to_csv('parti_dev_temps_moyen.csv', index=False) | ||
|
||
parti = repondu.groupby(['nom_parti'])['temps'].agg([np.mean, lambda x : len(x)]) | ||
parti.reset_index().to_csv('parti_temps_moyen.csv', index=False) | ||
|
||
parti = repondu.groupby(['developpe'])['temps'].agg([np.mean, lambda x : len(x)]) | ||
parti.reset_index().to_csv('developpe_temps_moyen.csv', index=False) | ||
|
||
parti = repondu.groupby(['abrege'])['temps'].agg([np.mean, lambda x : len(x)]) | ||
parti.reset_index().to_csv('abrege_temps_moyen.csv', index=False) | ||
xxx | ||
|
||
|
||
caracteristiques_question = ['renouvellements', 'auteur', 'type', | ||
'indexationAN', 'textesQuestion', 'identifiant', | ||
'signalement', 'minAttribs', 'uid', | ||
'minInt', 'cloture', 'textesReponse'] | ||
exemple = qe[95749] | ||
|
||
assert all([x in caracteristiques_question for x in exemple.keys()]) | ||
assert len(exemple.keys()) == 12 | ||
|
||
auteur = exemple['auteur'] | ||
groupe = auteur['groupe'] | ||
identite = auteur['identite'] | ||
|
||
indexationAN = exemple['indexationAN'] | ||
analyses = indexationAN['analyses'] | ||
rubrique = indexationAN['rubrique'] | ||
teteAnalyse = indexationAN['teteAnalyse'] | ||
|
||
texte = exemple['textesQuestion']['texteQuestion']['texte'] | ||
date = exemple['textesQuestion']['texteQuestion']['infoJO']['dateJO'] | ||
assert exemple['type'] == 'QE' | ||
|
||
identifiant = exemple['identifiant'] | ||
|
||
minAttribs = exemple['minAttribs'] | ||
minInt = exemple['minInt'] | ||
|
||
cloture = exemple['cloture'] | ||
|
||
textesReponse = exemple['textesReponse'] | ||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
# -*- coding: utf-8 -*- | ||
""" | ||
Created on Sat Nov 26 09:13:40 2016 | ||
@author: aeidelman | ||
""" | ||
import os | ||
import json | ||
|
||
path = '/home/sgmap/data/DatacampAN/' | ||
|
||
path_qg = os.path.join(path, 'AN', 'Questions_gouvernement_XIV.json') | ||
|
||
with open(path_qg) as qg_file: | ||
data = json.load(qg_file) | ||
|
||
qg = data['questionsGvt']['question'] | ||
assert isinstance(qg, list) | ||
|
||
caracteristiques_question = ['renouvellements', 'auteur', 'type', | ||
'indexationAN', 'textesQuestion', 'identifiant', | ||
'signalement', 'minAttribs', 'uid', | ||
'minInt', 'cloture', 'textesReponse'] | ||
def load(param): | ||
assert param in ['qe', 'qg'] | ||
|
||
|
||
qe = qg | ||
param = 'qg' | ||
exemple = qg[123] | ||
assert all([x in caracteristiques_question for x in exemple.keys()]) | ||
assert len(exemple.keys()) in [9, 12] # 12 pour les qe, 9 pour les qg | ||
|
||
auteur = exemple['auteur'] | ||
groupe = auteur['groupe'] | ||
identite = auteur['identite'] | ||
|
||
indexationAN = exemple['indexationAN'] | ||
analyses = indexationAN['analyses'] | ||
rubrique = indexationAN['rubrique'] | ||
teteAnalyse = indexationAN['teteAnalyse'] | ||
|
||
if param == 'qe': | ||
texte = exemple['textesQuestion']['texteQuestion']['texte'] | ||
date = exemple['textesQuestion']['texteQuestion']['infoJO']['dateJO'] | ||
assert exemple['type'] in ['QE'] | ||
if param == 'qg': | ||
texte = exemple['textesReponse']['texteReponse']['texte'] | ||
assert exemple['type'] in ['QG'] | ||
|
||
with open(str(idx) + '.html', 'w', encoding='utf8') as output: | ||
output.write(texte) | ||
|
||
identifiant = exemple['identifiant'] | ||
|
||
minAttribs = exemple['minAttribs'] | ||
minInt = exemple['minInt'] | ||
|
||
cloture = exemple['cloture'] | ||
|
||
textesReponse = exemple['textesReponse'] |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Oops, something went wrong.