Riservatezza dei dati e anonimizzazione in Python
Rebeca Gonzalez
Data engineer


Un solo record aveva i valori demografici del governatore.
Eliminare tutte le info demografiche renderebbe i dati inutili per l'analisi.
Esiste una via di mezzo per rendere non unici i valori demografici nel dataset?
$$ $$ $$ $$ $$ $$ Almeno k individui nel dataset condividono l'insieme di attributi che potrebbe identificare ciascuno.

Anonimo a 2:
ZIP code Età
0 4217 34
1 4217 34
2 1742 77
3 1742 77
Ogni combinazione di valori delle colonne identificanti compare in almeno k record diversi.
Non anonimo a 2:
ZIP code Età
0 4217 34
1 4217 34
2 1742 77
3 1743 77

# Explore DataFrame
medical_df.head()
Età Reparto Condizione
0 34 Marketing Disturbi d'ansia
1 46 Finanza Influenza
2 41 Finanza Influenza
3 62 Marketing Disturbi d'ansia
4 44 Marketing Disturbi d'ansia
Attributi di privacy:
# Calcola quante combinazioni uniche ci sono per Età e Reparto
medical_df.groupby(['Age','Department']).size().reset_index(name='Count')
Età Reparto Conteggio
0 30 Produzione 2
1 31 Marketing 1
2 32 Marketing 1
3 32 Produzione 1
4 33 Produzione 1
5 34 Finanza 1
6 34 Marketing 1
7 34 Produzione 1
8 35 Marketing 1
9 36 Finanza 2
10 38 Finanza 1
11 38 Produzione 1
# Generalizza Età creando 4 gruppi di intervalli medical_df['Age_group'] = pd.cut(medical_df['Age'], bins=4)# Esplora il dataset con intervalli medical_df.head()
Età Reparto Condizione Age_group
0 34 Marketing Disturbi d'ansia (29.964, 39.0]
1 46 Finanza Influenza (39.0, 48.0]
2 41 Finanza Influenza (39.0, 48.0]
3 62 Marketing Disturbi d'ansia (57.0, 66.0]
4 44 Marketing Disturbi d'ansia (39.0, 48.0]
# Calcola quante combinazioni uniche ci sono per Età e Reparto
medical_df.groupby(['Age_group','Department']).size().reset_index(name='Count')
Age_group Reparto Conteggio
0 (29.964, 39.0] Finanza 4
1 (29.964, 39.0] Marketing 4
2 (29.964, 39.0] Produzione 6
3 (39.0, 48.0] Finanza 8
4 (39.0, 48.0] Marketing 5
5 (39.0, 48.0] Produzione 4
6 (48.0, 57.0] Finanza 3
7 (48.0, 57.0] Marketing 2
8 (48.0, 57.0] Produzione 4
# Imposta k=2, per un dataset anonimo a 2 k = 2# Calcola quante combinazioni uniche ci sono per Età e Reparto df_count = medical_df.groupby(['Age_group','Department']).size().reset_index(name='Count')# Filtra le righe con conteggio inferiore a k df_count[df_count['Count'] < k]
Age_group Reparto Conteggio
Riservatezza dei dati e anonimizzazione in Python