Seite 1 von 1
Methode zur anonymisieren
Verfasst: Freitag 30. Oktober 2020, 09:05
von fischer-klaus3
Hallo,
ich habe ein Dataframe mit Studentenname und Studentenid. Ich würde gerne auf Basis den Studentenname die ID anonymisieren.
Die hash() Funktion eignet sich ja leider nicht dafür. Gibt es irgendeine Methode die Studentenid anonymisieren und eine Methode die die anonymisierte Studentenid wieder zurück bringen?
Es sollte ungefähr so aussehen
Was ich bereits habe:
Code: Alles auswählen
import pandas as pd
d = {'Student': ['abc1', 'abc1'], 'Studendid': ['abc1', 'abc2']}
df = pd.DataFrame(data=d)
d1 = {x: hash(x) for x in df['Student']}
d2 = {v:k for k, v in d1.items()}
df['Studendid']= df['Student'].map(d1)
df['orig']= df['Studendid'].map(d2)
print (df)
Re: Methode zur anonymisieren
Verfasst: Freitag 30. Oktober 2020, 09:40
von Sirius3
Du willst nicht anonymisieren sondern pseudonymisieren. Solange da eine Rückwandlung möglich sein muß, ist das aber auch nur eine Trennung von datenschutzrelevanten Daten und nicht-datenschutzrelevanten Daten.
Und die Verbindung wird über die ID ergestellt, nur dass derjenige, der die Daten verarbeitet keinen Zugriff auf die Tabelle mit den Studentennamen hat; oder falls die ID öffentlich bekannt ist noch eine weitere Spalte mit einer Pseudo-ID, denn dann kannst Du über diese Tabelle ID in Pseudo-ID umwandeln und umgekehrt.
Re: Methode zur anonymisieren
Verfasst: Freitag 30. Oktober 2020, 09:50
von fischer-klaus3
@Sirius3 danke, genau das ist es wo nach ich Suche! Vielen Dank.

Kennst du dazu eine gute Library ?
Re: Methode zur anonymisieren
Verfasst: Freitag 30. Oktober 2020, 10:35
von fischer-klaus3
@Sirius3 Habe was gefunden. Könntest du mir noch dabei helfen, wie den Studenten in encode eingebe und als key die Studentenid?
So wie ich ungefähr, oben gemacht habe nur mit dieser Methode?
Code: Alles auswählen
def encode(key, string):
encoded_chars = []
for i in range(len(string)):
key_c = key[i % len(key)]
encoded_c = chr(ord(string[i]) + ord(key_c) % 256)
encoded_chars.append(encoded_c)
encoded_string = ''.join(encoded_chars)
return encoded_string
def decode(key, string):
encoded_chars = []
for i in range(len(string)):
key_c = key[i % len(key)]
encoded_c = chr((ord(string[i]) - ord(key_c) + 256) % 256)
encoded_chars.append(encoded_c)
encoded_string = ''.join(encoded_chars)
return encoded_string
e = encode('a key', 'a message')
d = decode('a key', e)
print([e])
print([d])
Habe es damit versucht, wie schaffe ich nun auch wieder zu codieren/ decodieren?
Code: Alles auswählen
d = {'Student': ['abc1', 'abc1'], 'Studendid': ['1', '2']}
df = pd.DataFrame(data=d)
d1 = {x: encode(x,j) for x,j in zip(df['Studendid'],df['Student'])}
d2 = {v:k for k, v in d1.items()}
df['Student']= df['Studendid'].map(d1)
df['orig']= df['Studendid'].map(d2)
print (df)
d1 = {x: decode(j,x) for x,j in zip(df['Student'],df['Studendid'])}
d2 = {v:k for k, v in d1.items()}
df['Studendid']= df['Student'].map(d1)
print (df)
Re: Methode zur anonymisieren
Verfasst: Freitag 30. Oktober 2020, 11:49
von Sirius3
Nein, bei pseudonymisierten Daten muß die Kennung wirklich zufällig sein, man darf nicht irgendwie wieder zurückrechnen können.