Bảo mật dữ liệu và Ẩn danh trong Python
Rebeca Gonzalez
Data engineer
Kỹ thuật cho phép thay giá trị dữ liệu bằng giá trị kém chi tiết hơn.
Mục tiêu là loại bớt một số định danh nhưng vẫn giữ hữu ích phân tích.
Cho phép thay một giá trị bằng giá trị tổng quát hơn: "Dancer" -> "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
# Dữ liệu gốc
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
# Dữ liệu đã tổng quát: Tuổi theo khoảng, SSN được che
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-**-****
Những người 34 tuổi sẽ vào khoảng 30–50. Cách này còn gọi là binning.

# Khám phá tập dữ liệu
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
# Khám phá biểu đồ tần suất của biến tuổi
df_medical['age'].hist(bins=15)

# Áp dụng tổng quát hóa bằng cách nhị phân hóa dữ liệu df_medical['age'] = df_medical['age'].apply(lambda x:">=40" if x>=40 else "<40" )# Xem kết quả 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
# Khám phá biểu đồ tần suất của biến tuổi
df_medical['age'].hist(bins=15)

# Lọc để xem các hàng bị ảnh hưởng
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 tuổi về 55 df_medical.loc[df_medical['age'] > 55, 'age'] = 55# Lọc để xem các hàng bị ảnh hưởng 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
# Khám phá biểu đồ tần suất của biến tuổi
df_medical['age'].hist(bins=15)

# Bottom code tuổi về 25 df_medical.loc[df['age'] < 25, 'age'] = 25# Khám phá biểu đồ tần suất của biến tuổi df_medical['age'].hist(bins=15)

Hiệu quả hơn khi kết hợp với Suppression và Masking theo mô hình quyền riêng tư như K-anonymity.
Chỉ định điều kiện mà tập dữ liệu phải thỏa để kiểm soát rủi ro lộ lọt.
Chúng ta sẽ học cách triển khai mô hình này ở chương sau!
Bảo mật dữ liệu và Ẩn danh trong Python