Riservatezza dei dati e anonimizzazione in Python
Rebeca Gonzalez
Data engineer
Anche le informazioni personali non sensibili possono essere quasi‑identificatori.

Se combinati con altri quasi‑identificatori, diventano identificativi.


Tecniche di anonimizzazione per quasi‑identificatori per ridurre il rischio di divulgazione.

DataFrame originale
name phone
0 Cassandra Nelson 4399406975395
1 Brian Moss 0389407128613
2 Melody Gill 8283308773967
3 Sandra Huber 4366608954250
4 Patricia Webster 4466462475574
DataFrame con nomi mascherati
name phone
0 xxxx 4399406975395
1 xxxx 0389407128613
2 xxxx 8283308773967
3 xxxx 4366608954250
4 xxxx 4466462475574
Sostituire valori sensibili con caratteri come "x" si chiama anche data masking (mascheramento).
# Esplora il DataFrame
df.head()
country card_number email
0 Finland 3546746666030419 [email protected]
1 Belarus 4303032415762821 [email protected]
2 Turkmenistan 4536883671157 [email protected]
3 Puerto Rico 3568819286614160 [email protected]
4 Angola 2514167462583016 [email protected]
# Maschera in modo uniforme la colonna del numero di carta df['card_number'] = '****'# Vedi il DataFrame risultante df.head()
country card_number email
0 Finland **** [email protected]
1 Belarus **** [email protected]
2 Turkmenistan **** [email protected]
3 Puerto Rico **** [email protected]
4 Angola **** [email protected]

# Maschera l'username dall'email df2['email'] = df2['email'].apply(lambda s: s[0] + '****' + s[s.find('@'):] )# Vedi i dati pseudonimizzati risultanti df2.head()
country card_number email
0 Finland 3546746666030419 f****@gmail.com
1 Belarus 4303032415762821 m****@gmail.com
2 Turkmenistan 4536883671157 a****@gmail.com
3 Puerto Rico 3568819286614160 k****@gmail.com
4 Angola 2514167462583016 d****@gmail.com

# Importa la classe Faker from faker import Faker# Crea un generatore di dati finti fake_data = Faker()# Genera un numero di carta di credito fake_data.credit_card_number()
3542216874440804
# Maschera il numero di carta con nuovi dati generati via lambda df['card_number'] = df['card_number'].apply(lambda x: fake_data.credit_card_number())# Vedi i dati pseudonimizzati risultanti df.head()
country card_number email
0 Finland 3596625386355448 [email protected]
1 Belarus 376297265347524 [email protected]
2 Turkmenistan 4377494880888682 [email protected]
3 Puerto Rico 30553931809810 [email protected]
4 Angola 4241735748382 [email protected]
fake_data.name()
'Kelly Clark'
fake_data.name_male()
'Antonio Henderson'
fake_data.name_female()
'Jennifer Ortega'
Riservatezza dei dati e anonimizzazione in Python