...
 
Commits (3)
......@@ -32,7 +32,7 @@ layout = html.Div([
html.H3(children='Démocratie et Citoyenneté'),
# Répartition géographique des contributeurs
html.H4('Répartition géographique des contributeurs'),
html.H4('Répartition géographique des contributions'),
html.Iframe(
srcDoc=map_contrib,
height='500px',
......@@ -43,8 +43,8 @@ layout = html.Div([
height='500px',
width='100%'
),
html.P('Nombre de contributeurs total: %d' % pers_dep['values'].sum()),
html.P('Nombre de contributeurs avec un code postal invalide: %d' % pers_dep[pers_dep['code'] == 'Mauvais code postal']['values']),
html.P('Nombre de contributions total: %d' % pers_dep['values'].sum()),
html.P('Nombre de contributions avec un code postal invalide: %d' % pers_dep[pers_dep['code'] == 'Mauvais code postal']['values']),
# Répartition temporelle des contributions
html.H4('Temporalité des contributions'),
dcc.Graph(
......@@ -315,7 +315,8 @@ Un grand nombre de contributeurs évoquent un **service civique** ou un **servic
id='Q142barh',
figure=figure_barh('Q142')
),
html.P('Les réponses "Ni oui, ni non" ne contiennent ni le mot "Oui" ni le mot "Non". Certains disent qu\'ils ne savent pas, d\'autres ont pourtant un avis. Nous poursuivrons l\'étude de cette question pour en affiner les résultats.'),
dcc.Markdown('''Les réponses "Ni oui, ni non" ne contiennent ni le mot "Oui" ni le mot "Non". Parmi ces réponses, 2000 contributeurs disent **pourquoi pas**, certains complétant avec des conditions. Au moins un millier de contributeurs disent ne **pas savoir**. Nous ne dégageons malheureusement pas plus en détail l'avis des 25 000 contributeurs n'ayant ni employé "Oui", ni employé "Non".
'''),
#'Q143 - Que proposez-vous afin de répondre à ce défi qui va durer ?',
html.H4(children=cols_d['Q143']),
html.Div("Taux de participation à la question : %0.1f%%" % part_q['Q143 - ' + cols_d['Q143']]),
......
......@@ -35,7 +35,7 @@ layout = html.Div([
html.H3(children='La fiscalité et les dépenses publiques'),
# Répartition géographique des contributeurs
html.H4('Répartition géographique des contributeurs'),
html.H4('Répartition géographique des contributions'),
html.Iframe(
srcDoc=map_contrib,
height='500px',
......@@ -46,8 +46,8 @@ layout = html.Div([
height='500px',
width='100%'
),
html.P('Nombre de contributeurs total: %d' % pers_dep['values'].sum()),
html.P('Nombre de contributeurs avec un code postal invalide: %d' % pers_dep[pers_dep['code'] == 'Mauvais code postal']['values']),
html.P('Nombre de contributions total: %d' % pers_dep['values'].sum()),
html.P('Nombre de contributions avec un code postal invalide: %d' % pers_dep[pers_dep['code'] == 'Mauvais code postal']['values']),
# Répartition temporelle des contributions
html.H4('Temporalité des contributions'),
dcc.Graph(
......
......@@ -39,7 +39,7 @@ layout = html.Div([
html.H3(children='Organisation de l\'État et des services publiques'),
# Répartition géographique des contributeurs
html.H4('Répartition géographique des contributeurs'),
html.H4('Répartition géographique des contributions'),
html.Iframe(
srcDoc=map_contrib,
height='500px',
......@@ -50,8 +50,8 @@ layout = html.Div([
height='500px',
width='100%'
),
html.P('Nombre de contributeurs total: %d' % pers_dep['values'].sum()),
html.P('Nombre de contributeurs avec un code postal invalide: %d' % pers_dep[pers_dep['code'] == 'Mauvais code postal']['values']),
html.P('Nombre de contributions total: %d' % pers_dep['values'].sum()),
html.P('Nombre de contributions avec un code postal invalide: %d' % pers_dep[pers_dep['code'] == 'Mauvais code postal']['values']),
# Répartition temporelle des contributions
html.H4('Temporalité des contributions'),
dcc.Graph(
......@@ -287,4 +287,11 @@ La question est assez ouverte et de nombreux sujets émergent. Nous noterons la
#'Q189 - Y a-t-il d'autres points sur l'organisation de l'Etat et des services publics sur lesquels vous souhaiteriez vous exprimer ?',
html.H4(children=cols_d['Q189']),
html.Div("Taux de participation à la question : %0.1f%%" % part_q['Q189 - ' + cols_d['Q189']]),
html.H5(analyse),
dcc.Markdown('''
La remise en question de l'**abaissement de la limitation de vitesse** est très présente. On remarquera cependant que cette présence est organisée par un lobby car quelques milliers de contributions sont identiques.
On retrouve les **hauts-fonctionnaires** pointés du doigt de même que le **train de vie** des élus et les avantages des **anciens Président de la République**. Des contributeurs demandent à **réduire le nombre de députés et sénateurs*. On retrouve encore la demande de renforcer le rôle de la **Cour de comptes**, que son avis soit contraignant.
D'autres thématiques abordées : la **justice**, la **santé** (notamment les **hôpitaux** et les **déserts médicaux**), l'**Éducation nationale**, la **sécurité sociale**, les **services publics**, les **collectivités locales**, les **personnes âgées**. Parmi des thèmes mineurs, on notera la demande d'enseignement des **langues régionales**.
'''),
])
......@@ -39,7 +39,7 @@ layout = html.Div([
html.H3(children='La transition écologique'),
# Répartition géographique des contributeurs
html.H4('Répartition géographique des contributeurs'),
html.H4('Répartition géographique des contributions'),
html.Iframe(
srcDoc=map_contrib,
height='500px',
......@@ -50,8 +50,8 @@ layout = html.Div([
height='500px',
width='100%'
),
html.P('Nombre de contributeurs total: %d' % pers_dep['values'].sum()),
html.P('Nombre de contributeurs avec un code postal invalide: %d' % pers_dep[pers_dep['code'] == 'Mauvais code postal']['values']),
html.P('Nombre de contributions total: %d' % pers_dep['values'].sum()),
html.P('Nombre de contributions avec un code postal invalide: %d' % pers_dep[pers_dep['code'] == 'Mauvais code postal']['values']),
# Répartition temporelle des contributions
html.H4('Temporalité des contributions'),
dcc.Graph(
......
......@@ -44,8 +44,7 @@ stopwords = nltk.corpus.stopwords.words('french')
stopwords += ['être', 'yu'] #'yu' est la forme lemmatisé de 'y'
stopwords.remove('pas')
def ngrams_from_lemmatized(filename):
df = open_lemmatized(filename)
def ngrams_from_lemmatized(df, filename):
cols = cols_name_ngrams(df)
df2 = pd.DataFrame([], columns=cols)
for question in df.columns:
......@@ -69,24 +68,25 @@ def cols_name_ngrams(df):
cols.append(col + 'quad')
return cols
def most_common_unigram(lemmas):
def most_common_unigram(lemmas, n=150):
lemmas2 = ' '.join([' '.join(lemma) for lemma in lemmas])
lemmas_ = lemmas2.split(' ')
freqdist = Counter(lemmas_)
mc = freqdist.most_common(150)
mc = freqdist.most_common(n)
return mc
def most_common_ngrams(lemmas, collocation_finder):
def most_common_ngrams(lemmas, collocation_finder, n=75):
finder = collocation_finder.from_documents(lemmas)
freqdist = finder.ngram_fd
mc = freqdist.most_common(75)
mc = freqdist.most_common(n)
return mc
def main():
for k in range(4):
print(files[k])
ngrams_from_lemmatized(prefix[k])
df = open_lemmatized(prefix[k])
ngrams_from_lemmatized(df, prefix[k])
if __name__ == '__main__':
main()
......@@ -92,11 +92,11 @@ def contribution_map():
pers_dep.to_csv(
'../data/interim/%s_personnes_par_departement.csv' % shortname
)
save_map(pers_dep, 'Contributeurs', 'Nombre de contributeurs',
save_map(pers_dep, 'Contributions', 'Nombre de contributions',
'%s_contributeurs.html' % shortname)
pers_dep.columns = ['code', 'raw_values', 'values']
save_map(pers_dep, 'Contributeurs pour 100000h',
'Nombre de contributeurs pour 100000 habitants',
save_map(pers_dep, 'Contributions pour 100000h',
'Nombre de contributions pour 100000 habitants',
'%s_contributeurs_per100000.html' % shortname)
print('EVENTS')
df = pd.read_csv('../data/interim/EVENTS.csv')
......