2017-12-28 3 views
1

s3 버킷에 json 파일을로드하고 pandas 데이터 프레임으로 파싱/병합했습니다. 이제 개인 식별 정보가 포함 된 4 개의 열이있는 175 개의 열이있는 데이터 프레임이 있습니다.pandas 데이터 프레임 Python에서 pii로 특정 열 익명 화

나는 그 열 (이름 & 주소)을 익명으로 처리하는 빠른 해결책을 찾고 있습니다. 동일한 사람의 이름이나 주소가 여러 번 발생하는 경우 동일한 해시를 사용하려면 여러 정보를 보관해야합니다.

팬더에 기존 기능이 있습니까? 아니면 이것을 활용할 수있는 다른 패키지가 있습니까?

답변

1

Categorical을 사용하는 것이 효율적인 방법입니다. 주된주의 사항은 번호 매기기가 데이터의 순서만으로 이루어 지므로이 번호 매기기 구성표를 여러 번 사용할 필요가있는 경우 약간의주의가 필요하다는 것입니다 열/데이터 집합.

df = pd.DataFrame({'ssn': [1, 2, 3, 999, 10, 1]}) 

df['ssn_anon'] = df['ssn'].astype('category').cat.codes 

df 
Out[38]: 
    ssn ssn_anon 
0 1   0 
1 2   1 
2 3   2 
3 999   4 
4 10   3 
5 1   0 
0

데이터 프레임의 문자열을 암호화하는 방법을 찾고있는 것 같습니다. cryptography

등의 파이썬 암호화 라이브러리가 있습니다. 사용 방법은 간단합니다. 각 요소에 적용하기 만하면됩니다.

import pandas as pd 
from cryptography.fernet import Fernet 

df =pd.DataFrame([{'a':'a','b':'b'}, {'a':'a','b':'c'}]) 
f = Fernet('password') 
res = df.applymap(lambda x: f.encrypt(byte(x, 'utf-8')) 
# Decrypt 
res.applymap(lambda x: f.decrypt(x)) 

아마도 보안 측면에서 가장 좋은 방법이지만 긴 바이트/문자열을 생성하고 보면보기가 어려울 수 있습니다.

# 'a' -> b'gAAAAABaRQZYMjB7wh-_kD-VmFKn2zXajMRUWSAeridW3GJrwyebcDSpqyFGJsCEcRcf68ylQMC83G7dyqoHKUHtjskEtne8Fw==' 

그래서 당신의 문제를 해결하는 또 다른 간단한 방법은 값으로 키를 매핑하고 새 키가있는 경우 새 값을 생성하는 함수를 만드는 것입니다. 당신이 ML을하고 있다면

mapper = {} 
def encode(string): 
    if x not in mapper: 
     # This part can be changed with anything really 
     # Such as mapper[x]=randint(-10**10,10**10) 
     # Just ensure it would not repeat 
     mapper[x] = len(mapper)+1 

return mapper[x] 

res = df.applymap(encode) 
0

당신은 pandas

df.groupby('ssn').ngroup() 
Out[25]: 
0 0 
1 1 
2 2 
3 4 
4 3 
5 0 
dtype: int64 

pd.factorize(df.ssn)[0] 
Out[26]: array([0, 1, 2, 3, 4, 0], dtype=int64) 

sklearn에서에서 ngroup 또는 factorize를 사용 할 수 있습니다, 나는이 방법을 추천합니다

012,383,570,422,114,738,865,
0

키를 어딘가에 유지하여 프로세스를 되돌릴 수 있기를 원하는 것처럼 들립니다. 귀하의 유스 케이스가 허용하는 경우, 모든 값을 유효한 사람이 읽을 수 있고 돌이킬 수없는 자리 표시 자로 바꾸는 것이 좋습니다.

존> 마크

(21) 해머 스미스 그 로브 (RD)> 48 브루 거리 이것은 당신은 대체를 생성하는 Faker를 사용하여 원격 DEVS 등 사용 가능한 테스트 데이터를 생성하기위한 좋은

자신을 값. 데이터에 유틸리티를 유지하려는 경우 "대체 주소가 2 마일 이내에있는 모든 주소를 바꿉니다"라는 API를 사용할 수 있습니다 (Anon AI). 우리는 s3 버킷에서 JSON을 구문 분석하고 모든 PII를 자동으로 찾고 (자유 텍스트 필드 포함) 사용자의 사양에 맞는 자리 표시 자로 바꿉니다. 필요한 경우 일관성과 가역성을 유지할 수 있으며 증가하는 데이터 세트의 "익명"버전을 유지하려는 경우 가장 유용합니다.우리는 현재 베타 테스트 중입니다. 테스트 해보고 싶다면 알려주십시오.

관련 문제