Pythonで学ぶデータプライバシーと匿名化
Rebeca Gonzalez
Instructor
# データセットを確認
hr.head()
Age BusinessTravel Department EducationField EmployeeNumber
0 41 Travel_Rarely Sales Life Sciences 1
1 49 Travel_Frequently Research & Development Life Sciences 2
2 37 Travel_Rarely Research & Development Other 4
3 33 Travel_Frequently Research & Development Life Sciences 5
4 27 Travel_Rarely Research & Development Medical 7
データに最適な連続分布を選ぶ。

import scipy.stats# 一般化ロジスティック分布を Age にフィット params = scipy.stats.genlogistic.fit(hr['Age'])# 連続関数のパラメータを確認 print(params)
(4.9899067653418285, 22.32808853181744, 7.046590524738551)
# 一般化ロジスティック分布からサンプリング df['Age'] = scipy.stats.genlogistic.rvs(size=len(df.index), *params)# 結果データを確認 df['Age'].head()
Age BusinessTravel Department EducationField EmployeeNumber
0 40.767259 Travel_Rarely Sales Life Sciences 1
1 45.730504 Travel_Frequently Research & Development Life Sciences 2
2 41.910050 Travel_Rarely Research & Development Other 4
3 35.275320 Travel_Frequently Research & Development Life Sciences 5
4 40.198134 Travel_Rarely Research & Development Medical 7
# 値を丸めて離散値にする
df['Age'] = df['Age'].round()
Age BusinessTravel Department EducationField EmployeeNumber
0 41 Travel_Rarely Sales Life Sciences 1
1 46 Travel_Frequently Research & Development Life Sciences 2
2 42 Travel_Rarely Research & Development Other 4
3 35 Travel_Frequently Research & Development Life Sciences 5
4 40 Travel_Rarely Research & Development Medical 7
Pythonで学ぶデータプライバシーと匿名化