Privasi Data dan Anonimisasi di Python
Rebeca Gonzalez
Data engineer
Teknik untuk mengganti nilai data dengan yang kurang presisi.
Tujuannya menghilangkan sebagian pengenal sambil mempertahankan kegunaan data untuk analisis.
Memungkinkan mengganti nilai dengan yang lebih umum: "Penari" -> "Seniman"
name location
0 Amanda Hooper 146 Rodgers Field\nGregoryview, MS 71630
1 Sarah Smith 817 Garcia Shoal\nJonesville, AR 30299
2 Sean Boyd III 1938 90th St\nDallas, TX 59715
name location
0 Amanda Hooper 998 Boone Estate\nReedborough, MS 71630
1 Sarah Smith 7255 Shelby Rapids Apt. 455\nKarenland, AK 30299
2 Sean Boyd III 791 Crist Parks\nGreenton, TX 59715
# Data asli
df_employees.head()
first name last name age ssn
0 Amber Brown 91 798-29-4785
1 William Gibson 34 431-66-8381
2 Daniel Lee 92 825-91-5550
3 Andrea Stevenson 64 188-59-3544
4 Julie Horn 35 020-60-6388
# Data yang digeneralisasi: Umur dalam interval dan SSN dimasking
generalized_df.head()
First name Last name Age SSN
0 Amber Brown (80, 99] 798-**-****
1 William Gibson (30, 50] 431-**-****
2 Daniel Lee (80, 99] 825-**-****
3 Andrea Stevenson (60, 80] 188-**-****
4 Julie Horn (30, 50] 020-**-****
Mereka yang berusia 34 tahun akan masuk rentang 30–50. Ini juga disebut binning.

# Jelajahi dataset
df_medical.head()
age gender department condition
0 30 F Finance Anxiety disorders
1 42 M Production Bronchitis
2 35 F Marketing Dysthymia
3 39 F Production Dysthymia
4 40 M Marketing Flu
# Jelajahi histogram variabel age
df_medical['age'].hist(bins=15)

# Terapkan generalisasi dengan mengubah ke data biner df_medical['age'] = df_medical['age'].apply(lambda x:">=40" if x>=40 else "<40" )# Lihat hasil df_medical.head()
age gender department condition
0 <40 F Finance Bronchitis
1 >=40 M Production Bronquitis
2 <40 F Finance Dysthymia
3 <40 F Production Dysthymia
4 >=40 M Marketing Flu
# Jelajahi histogram variabel age
df_medical['age'].hist(bins=15)

# Saring untuk melihat baris yang terpengaruh
df_medical[df_medical['age'] >= 55]
age gender department condition
26 56 F Production Flu
65 55 M Finance Dysthymia
126 59 F Production Anxiety disorders
139 58 F Finance Dysthymia
142 59 M Marketing Flu
145 57 M Marketing Anxiety disorders
# Top code age ke 55 df_medical.loc[df_medical['age'] > 55, 'age'] = 55# Saring untuk melihat baris yang terpengaruh df_medical[df_medical['age'] >= 55]
age gender department condition
26 55 F Production Flu
65 55 M Finance Dysthymia
126 55 F Production Anxiety disorders
139 55 F Finance Dysthymia
142 55 M Marketing Flu
145 55 M Marketing Anxiety disorders
# Jelajahi histogram variabel age
df_medical['age'].hist(bins=15)

# Bottom code age ke 25 df_medical.loc[df['age'] < 25, 'age'] = 25# Jelajahi histogram variabel age df_medical['age'].hist(bins=15)

Lebih baik dipakai bersama Suppression dan Masking mengikuti Privacy Model seperti K-anonymity.
Tetapkan kondisi yang harus dipenuhi dataset untuk menjaga risiko pengungkapan.
Kita akan mempelajari cara menerapkan model privasi ini di bab berikutnya!
Privasi Data dan Anonimisasi di Python