Als ich das letzte Mal gebeten wurde, mich bei der Arbeit zu anonymisieren, hatte ich große Probleme. Erstens waren die meisten Daten zum Zeitpunkt des Empfangs der Daten anonymisiert, und es wurden fast keine Daten empfangen, die nicht anonymisiert waren.
Als ich es tatsächlich nachgeschlagen habe, gab es eine Methode zum Hashing, aber es gab nur wenige Informationen, die das Datenrahmenformat annahmen. Da es sich um vertrauliche Daten handelt, müssen Sie dies möglicherweise in einer Offline-Umgebung tun. Daher wird davon ausgegangen, dass die Bibliothek vorinstalliert ist.
Dieses Mal möchte ich den Code für das nächste Mal unter Berücksichtigung der Reflexionspunkte zusammenfassen.
Die Hashing-Bibliothek verwendet fastdigest. Geben Sie nur die zu importierende CSV und den Spaltennamen an, den Sie hashen möchten. Sie können nacheinander interaktiv prüfen und arbeiten.
hashing.R
#Bibliotheksinstallation
install.packages("fastdigest")
#Bibliotheksimport
library("fastdigest")
#Erstellen Sie Ihre eigene Hashing-Funktion mit fastdigest
hash_algo <- function(data){
x <- paste("abc" ,data)
x <- fastdigest(x)
return(x)
}
#Daten lesen
path <- ""
df <- read.csv(path, header=T)
#Lesebestätigung
str(df)
#Speichern Sie den Spaltennamen, den Sie hashen möchten
hash_list <- c("", "",...)
#Hashing
for (i in 1:length(hash_list)){
df[,hash_list[i]] <- sapply(df[,hash_list[i]], fastdigest)
}
#Export
write.csv(df,"hashed.csv")
Verwenden Sie Pandas und Hashhlib zum Hashing. Python möchte schnell mit einem Skript fertig werden. Entscheiden Sie einfach den Spaltennamen, den Sie hashen möchten, im Voraus, geben Sie den Pfad an und führen Sie den Code aus.
hashing.py
import os
import sys
import pandas as pd
import hashlib
#Speichern Sie den Spaltennamen, den Sie hashen möchten
hash_list = []
#Hashing-Regelfunktion
def hash_algo(data):
#Wenn Sie hier kompliziert schreiben, ist es schwierig, die Konvertierung rückgängig zu machen
x = "abc" + str(data)
x = hashlib.sha256(x.encode("utf-8")).hexdigest()
return x
#Zur Ausgabe lesen
def hashing(path, hash_list=hash_list):
#Daten lesen
df = pd.read_csv(path, encoding='utf-8')
#Hashing-Prozess
for i in range(0,len(hash_list)):
df[hash_list[i]] = list(map(hash_algo, df[hash_list[i]]))
#Exportdatei
outpath = os.path.dirname(path)
outfilename = os.path.splitext(os.path.basename(path))[0] + "_hashed.csv"
df.to_csv( outpath + "/" + outfilename, index=False)
if __name__ == "__main__" :
hashing(sys.argv[1])
Bitte lassen Sie mich wissen, ob es einen intelligenteren Weg gibt.
Recommended Posts