Dataintegritet och anonymisering i Python
Rebeca Gonzalez
Data engineer
En teknik där datavärden ersätts med mindre precisa värden.
Syftet är att eliminera vissa identifierare och samtidigt bevara datats användbarhet för analys.
Ersätter ett datavärde med ett mindre precist: "Dansare" -> "Artist"
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
# Original data
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
# Generalized data: Age in intervals and masked SSN
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-**-****
Den som är 34 år placeras i intervallet 30 till 50. Detta kallas även binning.

# Explore the 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
# Explore the histogram of the age variable
df_medical['age'].hist(bins=15)

# Apply generalization by transforming to binary data df_medical['age'] = df_medical['age'].apply(lambda x:">=40" if x>=40 else "<40" )# See results 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
# Explore the histogram of the age variable
df_medical['age'].hist(bins=15)

# Filter to see rows affected
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 the age to 55 df_medical.loc[df_medical['age'] > 55, 'age'] = 55# Filter to see rows affected 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
# Explore the histogram of the age variable
df_medical['age'].hist(bins=15)

# Bottom code the age to 25 df_medical.loc[df['age'] < 25, 'age'] = 25# Explore the histogram of the age variable df_medical['age'].hist(bins=15)

Fungerar bäst tillsammans med maskering och undertryckning enligt en integritetsmodell som K-anonymitet.
Ange villkor som datamängden måste uppfylla för att hålla röjanderisken under kontroll.
I nästa kapitel lär du dig hur du implementerar den här integritetsmodellen!
Dataintegritet och anonymisering i Python