In [2]:
%matplotlib inline

import json
import pandas as pd

Reading the data


In [14]:
def loadContributions(file, withsexe=False):
    contributions = pd.read_json(path_or_buf=file, orient="columns")
    rows = [];
    rindex = [];
    for i in range(0, contributions.shape[0]):
        row = {};
        row['id'] = contributions['id'][i]
        rindex.append(contributions['id'][i])
        if (withsexe):
            if (contributions['sexe'][i] == 'Homme'):
                row['sexe'] = 0
            else:
                row['sexe'] = 1
        for question in contributions['questions'][i]:
            if (question.get('Reponse')) and  (question['texte'][0:5] != 'Savez') :
                row[question['titreQuestion']+' : '+question['texte']] = 1
                for criteres in question.get('Reponse'):
    #                print(criteres['critere'].keys())
                    row[question['titreQuestion']+'. (Réponse) '+question['texte']+' -> '+str(criteres['critere'].get('texte'))] = 1
        rows.append(row)
    df = pd.DataFrame(data=rows)
    df.fillna(0, inplace=True)
    return df

df = loadContributions('../data/EGALITE3.brut.json', True)
df.fillna(0, inplace=True)
df.index = df['id']
#df.to_csv('consultation_an.csv', format='%d')
#df.columns = ['Q_' + str(col+1) for col in range(len(df.columns) - 2)] + ['id' , 'sexe']
df.head()


Out[14]:
Question n° 12 : Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? Question n° 12. (Réponse) Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? -> Non Question n° 12. (Réponse) Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? -> Oui Question n° 13 : Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Adaptée Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Parfaitement adaptée Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Pas du tout adaptée Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Peu adaptée Question n° 14 : Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : Question n° 14. (Réponse) Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : -> Adaptée ... Question n° 18. (Réponse) Selon vous, cette mesure est : -> Peu appliquée Question n° 18. (Réponse) Selon vous, cette mesure est : -> Très bien appliquée Question n° 19 : Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> Autre Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> La réticence de l’employeur ou de l’entourage professionnel Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> Une vision stéréotypée du rôle du père au sein du couple Question n° 20 : Si vous avez d’autres informations ou expériences qui vous semblent intéressantes pour favoriser un meilleur partage des responsabilités parentales, vous pouvez les exprimer ici : Question n° 20. (Réponse) Si vous avez d’autres informations ou expériences qui vous semblent intéressantes pour favoriser un meilleur partage des responsabilités parentales, vous pouvez les exprimer ici : -> None id sexe
id
lpucmWo= 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 1.0 0.0 ... 1.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 lpucmWo= 1
lpucmWw= 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 lpucmWw= 0
lpucmmU= 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 1.0 0.0 ... 1.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 lpucmmU= 1
mZmc 1.0 1.0 0.0 1.0 0.0 0.0 0.0 1.0 1.0 0.0 ... 1.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 mZmc 0
lpucmmw= 1.0 0.0 1.0 1.0 0.0 0.0 0.0 1.0 1.0 0.0 ... 0.0 0.0 1.0 1.0 0.0 0.0 1.0 1.0 lpucmmw= 0

5 rows × 34 columns

Build clustering model

Here we build a kmeans model , and select the "optimal" of clusters.

Here we see that the optimal number of clusters is 2.


In [15]:
from sklearn.cluster import KMeans
from sklearn import metrics
import numpy as np
X = df.drop('id', axis=1).values

def train_kmeans(nb_clusters, X):
    kmeans = KMeans(n_clusters=nb_clusters, random_state=0).fit(X)
    return kmeans
#print(kmeans.predict(X))
#kmeans.cluster_centers_


def select_nb_clusters():
    perfs = {};
    for nbclust in range(2,10):
        kmeans_model = train_kmeans(nbclust, X);
        labels = kmeans_model.labels_
        # from http://scikit-learn.org/stable/modules/clustering.html#calinski-harabaz-index
        # we are in an unsupervised model. cannot get better!
        # perfs[nbclust] = metrics.calinski_harabaz_score(X, labels);
        perfs[nbclust] = metrics.silhouette_score(X, labels);
    print(perfs);
    return perfs;


df['clusterindex'] = train_kmeans(4, X).predict(X)
#df 

perfs = select_nb_clusters();
# result :
# {2: 341.07570462155348, 3: 227.39963334619881, 4: 186.90438345452918, 5: 151.03979976346525, 6: 129.11214073405731, 7: 112.37235520885432, 8: 102.35994869157568, 9: 93.848315820675438}

optimal_nb_clusters = max(perfs, key=perfs.get);

print("optimal_nb_clusters" , optimal_nb_clusters);


{2: 0.12104480229239933, 3: 0.12186446965444993, 4: 0.10914318724041751, 5: 0.12462336207508432, 6: 0.13084607937255388, 7: 0.13000260048203396, 8: 0.14455334635713696, 9: 0.13127254262858504}
optimal_nb_clusters 8

Build the optimal model and apply it


In [16]:
km_model = train_kmeans(optimal_nb_clusters, X);
df['clusterindex'] = km_model.predict(X)
lGroupBy = df.groupby(['clusterindex']).mean();

In [17]:
cluster_profile_counts = df.groupby(['clusterindex']).count();
cluster_profile_means = df.groupby(['clusterindex']).mean();
global_counts = df.count()
global_means = df.mean()

In [18]:
cluster_profile_counts.head(10)


Out[18]:
Question n° 12 : Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? Question n° 12. (Réponse) Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? -> Non Question n° 12. (Réponse) Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? -> Oui Question n° 13 : Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Adaptée Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Parfaitement adaptée Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Pas du tout adaptée Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Peu adaptée Question n° 14 : Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : Question n° 14. (Réponse) Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : -> Adaptée ... Question n° 18. (Réponse) Selon vous, cette mesure est : -> Peu appliquée Question n° 18. (Réponse) Selon vous, cette mesure est : -> Très bien appliquée Question n° 19 : Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> Autre Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> La réticence de l’employeur ou de l’entourage professionnel Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> Une vision stéréotypée du rôle du père au sein du couple Question n° 20 : Si vous avez d’autres informations ou expériences qui vous semblent intéressantes pour favoriser un meilleur partage des responsabilités parentales, vous pouvez les exprimer ici : Question n° 20. (Réponse) Si vous avez d’autres informations ou expériences qui vous semblent intéressantes pour favoriser un meilleur partage des responsabilités parentales, vous pouvez les exprimer ici : -> None id sexe
clusterindex
0 109 109 109 109 109 109 109 109 109 109 ... 109 109 109 109 109 109 109 109 109 109
1 218 218 218 218 218 218 218 218 218 218 ... 218 218 218 218 218 218 218 218 218 218
2 50 50 50 50 50 50 50 50 50 50 ... 50 50 50 50 50 50 50 50 50 50
3 146 146 146 146 146 146 146 146 146 146 ... 146 146 146 146 146 146 146 146 146 146
4 92 92 92 92 92 92 92 92 92 92 ... 92 92 92 92 92 92 92 92 92 92
5 134 134 134 134 134 134 134 134 134 134 ... 134 134 134 134 134 134 134 134 134 134
6 47 47 47 47 47 47 47 47 47 47 ... 47 47 47 47 47 47 47 47 47 47
7 79 79 79 79 79 79 79 79 79 79 ... 79 79 79 79 79 79 79 79 79 79

8 rows × 34 columns


In [19]:
df_profiles = pd.DataFrame();
nbclusters = cluster_profile_means.shape[0]
df_profiles['clusterindex'] = range(nbclusters)
for col in cluster_profile_means.columns:
    if(col != "clusterindex"):
        df_profiles[col] = np.zeros(nbclusters)
        for cluster in range(nbclusters):
            df_profiles[col][cluster] = cluster_profile_means[col][cluster]
#        row.append(df[col].mean());
df_profiles.head()

#print(df_profiles.columns) 

intereseting_columns = {};
for col in df_profiles.columns:
    if(col != "clusterindex"):
        global_mean = df[col].mean()
        diff_means_global = abs(df_profiles[col] - global_mean). max();
        # print(col , diff_means_global)
        if(diff_means_global > 0.05):
            intereseting_columns[col] = True
            
#print(intereseting_columns)

In [20]:
%matplotlib inline

import matplotlib
import numpy as np
import matplotlib.pyplot as plt

Cluster Profiles

Here, the optimal model ihas two clusters , cluster 0 with 399 cases, and 1 with 537 cases.

As this model is based on binary inputs. Given this, the best description of the clusters is by the distribution of zeros and ones of each input (question).

The figure below gives the cluster profiles of this model. Cluster 0 on the left. 1 on the right. The questions invloved as different (highest bars)


In [21]:
interesting = list(intereseting_columns.keys())
df_profiles_sorted = df_profiles[interesting].sort_index(axis=1)
df_profiles_sorted.plot.bar(figsize =(1, 1))
df_profiles_sorted.plot.bar(figsize =(16, 8), legend=False)


Out[21]:
<matplotlib.axes._subplots.AxesSubplot at 0x7f532acb2b00>

In [22]:
df_profiles_sorted.T


Out[22]:
0 1 2 3 4 5 6 7
Question n° 12 : Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? 0.981651 0.981651 0.98 0.993151 0.989130 1.000000 0.617021 0.962025
Question n° 12. (Réponse) Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? -> Non 0.917431 0.944954 0.64 0.863014 0.913043 0.880597 0.489362 0.632911
Question n° 12. (Réponse) Pensez-vous que la prestation partagée d’éducation de l’enfant fait l’objet d’une information suffisante pour sensibiliser les parents et leurs employeurs ? -> Oui 0.064220 0.036697 0.34 0.130137 0.076087 0.119403 0.127660 0.329114
Question n° 13 : Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : 1.000000 0.977064 0.96 0.986301 1.000000 0.970149 0.382979 1.000000
Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Adaptée 0.000000 0.000000 0.36 0.739726 1.000000 0.850746 0.148936 0.025316
Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Parfaitement adaptée 0.000000 0.009174 0.14 0.061644 0.000000 0.082090 0.042553 0.063291
Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Pas du tout adaptée 0.018349 0.045872 0.04 0.006849 0.000000 0.014925 0.000000 0.848101
Question n° 13. (Réponse) Selon vous, pour inciter l’autre parent à prendre un congé parental, cette prestation est : -> Peu adaptée 0.981651 0.922018 0.42 0.178082 0.000000 0.022388 0.191489 0.063291
Question n° 14 : Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : 0.981651 0.981651 0.92 0.986301 1.000000 1.000000 0.191489 0.987342
Question n° 14. (Réponse) Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : -> Adaptée 0.174312 0.096330 0.46 0.924658 0.000000 0.970149 0.042553 0.025316
Question n° 14. (Réponse) Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : -> Parfaitement adaptée 0.018349 0.009174 0.08 0.027397 0.010870 0.000000 0.042553 0.050633
Question n° 14. (Réponse) Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : -> Pas du tout adaptée 0.073394 0.045872 0.02 0.034247 0.000000 0.029851 0.042553 0.759494
Question n° 14. (Réponse) Selon vous, pour favoriser un retour plus rapide des femmes à la vie professionnelle, cette prestation est : -> Peu adaptée 0.715596 0.830275 0.36 0.000000 0.989130 0.000000 0.063830 0.151899
Question n° 15 : Selon vous, quel est le principal facteur qui dissuade l’autre parent de bénéficier de sa part de la prestation partagée d’éducation de l’enfant ? 1.000000 0.990826 1.00 0.986301 0.967391 1.000000 0.723404 1.000000
Question n° 15. (Réponse) Selon vous, quel est le principal facteur qui dissuade l’autre parent de bénéficier de sa part de la prestation partagée d’éducation de l’enfant ? -> Autre 0.100917 0.045872 0.04 0.020548 0.021739 0.014925 0.170213 0.240506
Question n° 15. (Réponse) Selon vous, quel est le principal facteur qui dissuade l’autre parent de bénéficier de sa part de la prestation partagée d’éducation de l’enfant ? -> La perte de revenu liée au fait que l’autre parent est mieux rémunéré 0.366972 0.344037 0.40 0.794521 0.369565 0.000000 0.212766 0.430380
Question n° 15. (Réponse) Selon vous, quel est le principal facteur qui dissuade l’autre parent de bénéficier de sa part de la prestation partagée d’éducation de l’enfant ? -> Les contraintes professionnelles d’autre parent 0.100917 0.146789 0.18 0.171233 0.152174 0.000000 0.021277 0.113924
Question n° 15. (Réponse) Selon vous, quel est le principal facteur qui dissuade l’autre parent de bénéficier de sa part de la prestation partagée d’éducation de l’enfant ? -> Une vision stéréotypée de la répartition des tâches familiales au sein du couple 0.431193 0.454128 0.38 0.000000 0.423913 0.985075 0.319149 0.215190
Question n° 17 : Pensez-vous que cette mesure fait l’objet d’une information suffisante pour être connue de tous ? 0.972477 0.990826 1.00 0.972603 0.989130 0.992537 0.425532 0.987342
Question n° 17. (Réponse) Pensez-vous que cette mesure fait l’objet d’une information suffisante pour être connue de tous ? -> Non 0.963303 0.986239 0.02 0.965753 0.945652 0.970149 0.382979 0.810127
Question n° 17. (Réponse) Pensez-vous que cette mesure fait l’objet d’une information suffisante pour être connue de tous ? -> Oui 0.009174 0.004587 0.98 0.006849 0.043478 0.022388 0.042553 0.177215
Question n° 18 : Selon vous, cette mesure est : 0.963303 0.963303 0.98 0.965753 0.913043 0.977612 0.127660 0.987342
Question n° 18. (Réponse) Selon vous, cette mesure est : -> Assez bien appliquée 0.055046 0.073394 0.86 0.184932 0.152174 0.119403 0.021277 0.063291
Question n° 18. (Réponse) Selon vous, cette mesure est : -> Pas du tout appliquée 0.119266 0.133028 0.00 0.102740 0.065217 0.014925 0.021277 0.405063
Question n° 18. (Réponse) Selon vous, cette mesure est : -> Peu appliquée 0.788991 0.756881 0.08 0.671233 0.695652 0.820896 0.085106 0.430380
Question n° 18. (Réponse) Selon vous, cette mesure est : -> Très bien appliquée 0.000000 0.000000 0.04 0.006849 0.000000 0.022388 0.000000 0.088608
Question n° 19 : Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? 0.981651 0.986239 0.98 0.986301 1.000000 0.992537 0.446809 0.949367
Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> Autre 0.174312 0.073394 0.10 0.130137 0.043478 0.074627 0.106383 0.354430
Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> La réticence de l’employeur ou de l’entourage professionnel 0.596330 0.729358 0.46 0.726027 0.750000 0.529851 0.297872 0.392405
Question n° 19. (Réponse) Selon vous, quel est le principal facteur qui dissuade le conjoint d’une femme enceinte de bénéficier de cette mesure ? -> Une vision stéréotypée du rôle du père au sein du couple 0.211009 0.183486 0.42 0.130137 0.206522 0.388060 0.042553 0.202532
Question n° 20 : Si vous avez d’autres informations ou expériences qui vous semblent intéressantes pour favoriser un meilleur partage des responsabilités parentales, vous pouvez les exprimer ici : 1.000000 0.000000 0.14 0.157534 0.217391 0.238806 0.212766 0.493671
Question n° 20. (Réponse) Si vous avez d’autres informations ou expériences qui vous semblent intéressantes pour favoriser un meilleur partage des responsabilités parentales, vous pouvez les exprimer ici : -> None 1.000000 0.000000 0.14 0.157534 0.217391 0.238806 0.212766 0.493671
sexe 0.788991 0.816514 0.74 0.842466 0.836957 0.835821 0.723404 0.734177

In [13]:
#df_profiles.sort_index(axis=1).T

Analyse

Thématique 3 : Le partage des responsabilités parentales

Deux populations à priori :

  • 357 personnes informée sur l'autorisation d'absence des conjoints de la femmes enceinte
  • 518 personnes non informées

Les personnes informées le sont aussi plus à propos du partage de la prestation d’éducation. Elles sont moins alarmistes sur le niveau d'information de ces dispositions (même si insuffisant) et sont légèrement moins sensibles au fait que les rétissences de l'entourage ou l'employeur joue un role.

En omettant les questions sur la connaissance des disposition, on découvre des populations plus variées :

  • 109 personnes qui ont répondu à la question ouverte
  • 218 personnes qui ont un avis dans la moyenne sur ces questions
  • 50 personnes qui pensent que le niveau d'information sur l'autorisation d'abensce professionnel est suffisant. Elles sont plus nombreuses à penser que ctte mesure est assez bien appliquée et ont tendance à moins pointer l'entourage ou les employeurs comme cause de rétissence et plus les visions stéréotypée au sein du couple
  • 146 personnes qui se déclarent favorables à la prestation partagée d’éducation (Q13), pensent que ca favorise le retour à la vie profesionnelle (Q14). Pour elles, raison première des rétissence sur ces dispositions est la perte de revenu du coupe. Ces personnes ne citent pas du tout les vision stéréotypée au sein du couple
  • 92 personnes qui sont favorables à la prestation partagée mais qui pensent qu'elle ne permet pas un retour rapide à la vie professionnelle
  • 134 personnes qui sont favorabels à la prestation partagée, pensent que ca favorise le retour à la vie professionnelle et que les retissences premières viennent de visions stéréotypées
  • 47 personnes qui ont moins répondu à ce thème que les autres
  • 79 personnes qui pensent que la prestation partagée n'est pas du tout adapté

In [ ]: