Hashing von Daten in R und Python

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.

Wie es in R geht

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")

Wie es in Python geht

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

Hashing von Daten in R und Python
Zeichnen Sie Daten einfach in Shell und Python
Python-Variablen und Datentypen, die mit Chemoinfomatik gelernt wurden
Empfangen und Anzeigen von HTML-Formulardaten in Python
[Python] Vertauschen von Zeilen und Spalten mit Numpy-Daten
Behandeln Sie Umgebungsdaten in Python
Zeigen Sie UTM-30LX-Daten in Python an
Stapel und Warteschlange in Python
Unittest und CI in Python
Funktioniert mit Python und R.
Verarbeitung von CSV-Daten in voller und halber Breite in Python
Holen Sie sich LeapMotion-Daten in Python.
Unterschied zwischen list () und [] in Python
Unterschied zwischen == und ist in Python
Lesen Sie die Protokollpufferdaten mit Python3
Führen Sie den Shell-Befehl / Python in R aus
Bearbeiten Sie Dateien und Ordner in Python
Behandeln Sie Daten im NetCDF-Format mit Python
Zuweisungen und Änderungen in Python-Objekten
Überprüfen und verschieben Sie das Verzeichnis in Python
Verschlüsselung mit Python: IND-CCA2 und RSA-OAEP
Funktionssynthese und Anwendung in Python
Zeichnen Sie Zeitreihendaten in Python mit Pandas und Matplotlib
Vergleich der Datenrahmenbehandlung in Python (Pandas), R, Pig
Exportieren und Ausgeben von Dateien in Python
Reverse Flat Pseudonym und Katakana in Python2.7
Lesen und Schreiben von Text in Python
[GUI in Python] PyQt5-Menü und Symbolleiste-
Erstellen und lesen Sie Messagepacks in Python
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part1-
Verarbeitung zur Verwendung von notMNIST-Daten in Python (und versucht, sie zu klassifizieren)
Automatische Erfassung von Genexpressionsdaten durch Python und R.
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part2-
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part4-
Bedingte Elementextraktion aus dem Datenrahmen: R ist% in%, Python ist .isin ()
Lösen der Einführung von AOJ in Algorithmen und Datenstrukturen in Python -Part3-
Überlappende reguläre Ausdrücke in Python und Java
Holen Sie sich mit Python zusätzliche Daten zu LDAP
Datenpipeline-Aufbau mit Python und Luigi
Unterschied in der Authentizität zwischen Python und JavaScript
Hinweise zur Verwendung von cChardet und python3-chardet in Python 3.3.1.
Module und Pakete in Python sind "Namespaces"
Vermeiden Sie verschachtelte Schleifen in PHP und Python
Dateneingabe / -ausgabe in Python (CSV, JSON)
Unterschiede zwischen Ruby und Python im Umfang
AM-Modulation und Demodulation mit Python Part 2
Unterschied zwischen Anweisungen (Anweisungen) und Ausdrücken (Ausdrücken) in Python
Ali Buch in Python: Abschnitt 2-4, Datenstruktur
Echte Werte und Eigenvektoren: Lineare Algebra in Python <7>
So machen Sie R chartr () in Python
Versuchen Sie, mit Binärdaten in Python zu arbeiten
Warteschlangen- und Python-Implementierungsmodul "deque"
Gefaltetes Liniendiagramm und Skalierungslinie in Python
Implementieren Sie den FIR-Filter in Python und C.
Unterschiede zwischen Python- und Java-Syntax
Überprüfen und empfangen Sie die serielle Schnittstelle in Python (Portprüfung)
Suchen und spielen Sie YouTube-Videos mit Python
Holen Sie sich Google Fit API-Daten in Python
Unterschied zwischen Anhängen und + = in der Python-Liste
Unterschied zwischen nicht lokal und global in Python