概要
機密データをそのまま公開するわけにはいかないので、そのカラムをキーにユニークな文字列(Hash利用)を付与することにより、データ処理できるようにする方法となります。 hashlibを使用した Pandas DataFrame列の機密データの匿名化を試してみました。
ローカル環境
- macOS Monterey 12.1
- python 3.8.12
- Azure CLI 2.33.0
前提条件
- Azure環境がすでに用意されていること(テナント/サブスクリプション)
- ローカル環境に「azure cli」がインストールされていること
- Azure Databricks の Workspace 上で Notebook が稼働できていること。
事前準備
データファイルのアップロード
- 対象の Workspace の Azure Databricks ポータルで [Import & Explorer Data] を選択します
- 「Drop files to upload, or click to browse」に対象のファイルをドラッグ&ドロップします
- 「DBFS」タブを選択し、「FileStore - tables」フォルダ配下にドロップしたファイル(SE_Account.csv)を確認することができます
Notebook の実装
対象ファイルの読込(データの抽出)
cmd_1
# 対象データの確認
display(dbutils.fs.ls("/FileStore/tables/"))
# csv型式のデータファイルをDataFrameとして読取る
sdf = spark.read.csv('/FileStore/tables/SE_Account.csv', header='true', inferSchema='true', encoding='utf-8')
display(sdf)
SE名をHash処理する
cmd_2
import hashlib
# PySpark Dataframes から Pandas への変換
pdf = sdf.toPandas()
# カラム['U_Name']を新規作成し、Name項目をHashしたものを割り当てる
pdf['U_Name'] = pdf['Name'].apply(lambda x: hashlib.md5(x.encode()).hexdigest())
display(pdf)
# 不必要なカラムの削除後、Pandas から PySpark Dataframes への変換
df = spark.createDataFrame(pdf.drop(['J_Name', 'E_Name', 'Name', 'mailaddress'], axis = 1))
display(df)
まとめ
データ分析を実施するにあたり、データの機密性が大事ということに気が付き、今回の記事を記載。ただ、かなり社内よりの内容なので、忘備録のような扱いになってしまいました、、、、、
参考記事
以下の記事を参考にさせていただきました。感謝申し上げます
pythonでデータ操作を行う時の作業用コードメモ