Confidentialité des données et anonymisation en Python
Rebeca Gonzalez
Data engineer


Un seul enregistrement avait les valeurs démographiques du gouverneur.
Supprimer toutes les données démographiques rendrait l'analyse inutile.
Et s'il existait un compromis pour que ces valeurs ne soient plus uniques dans l'ensemble de données ?
$$ $$ $$ $$ $$ $$ Au moins k personnes de l'ensemble de données partagent l'ensemble d'attributs pouvant devenir identifiants pour chaque personne.

2-anonyme :
Code postal Âge
0 4217 34
1 4217 34
2 1742 77
3 1742 77
Chaque combinaison de valeurs pour les colonnes identifiantes apparaît au moins k fois dans l'ensemble de données.
Non 2-anonyme :
Code postal Âge
0 4217 34
1 4217 34
2 1742 77
3 1743 77

# Explorer le DataFrame
medical_df.head()
Âge Service Diagnostic
0 34 Marketing Troubles anxieux
1 46 Finance Grippe
2 41 Finance Grippe
3 62 Marketing Troubles anxieux
4 44 Marketing Troubles anxieux
Attributs liés à la confidentialité :
# Calculer le nombre de combinaisons uniques pour Âge et Service
medical_df.groupby(['Age','Department']).size().reset_index(name='Count')
Âge Service Compte
0 30 Production 2
1 31 Marketing 1
2 32 Marketing 1
3 32 Production 1
4 33 Production 1
5 34 Finance 1
6 34 Marketing 1
7 34 Production 1
8 35 Marketing 1
9 36 Finance 2
10 38 Finance 1
11 38 Production 1
# Généraliser l'âge en créant 4 groupes d'intervalles medical_df['Age_group'] = pd.cut(medical_df['Age'], bins=4)# Explorer l'ensemble de données avec intervalles medical_df.head()
Âge Service Diagnostic Groupe_d_âge
0 34 Marketing Troubles anxieux (29.964, 39.0]
1 46 Finance Grippe (39.0, 48.0]
2 41 Finance Grippe (39.0, 48.0]
3 62 Marketing Troubles anxieux (57.0, 66.0]
4 44 Marketing Troubles anxieux (39.0, 48.0]
# Calculer le nombre de combinaisons uniques pour Groupe_d_âge et Service
medical_df.groupby(['Age_group','Department']).size().reset_index(name='Count')
Groupe_d_âge Service Compte
0 (29.964, 39.0] Finance 4
1 (29.964, 39.0] Marketing 4
2 (29.964, 39.0] Production 6
3 (39.0, 48.0] Finance 8
4 (39.0, 48.0] Marketing 5
5 (39.0, 48.0] Production 4
6 (48.0, 57.0] Finance 3
7 (48.0, 57.0] Marketing 2
8 (48.0, 57.0] Production 4
# Définir k = 2, pour un ensemble de données 2-anonyme k = 2# Calculer le nombre de combinaisons uniques pour Groupe_d_âge et Service df_count = medical_df.groupby(['Age_group','Department']).size().reset_index(name='Count')# Filtrer les lignes dont le compte est inférieur à k df_count[df_count['Count'] < k]
Groupe_d_âge Service Compte
Confidentialité des données et anonymisation en Python