Hashing de données en R et Python

La dernière fois qu'on m'a demandé d'anonymiser au travail, j'ai eu beaucoup de problèmes. En premier lieu, la plupart des données ont été anonymisées au moment de la réception des données, et presque aucune donnée n'a été reçue qui ne soit pas anonymisée.

Quand je l'ai recherché, il y avait une méthode de hachage, mais il y avait peu d'informations qui supposaient le format de la trame de données. Puisqu'il s'agit de données confidentielles, vous devrez peut-être le faire dans un environnement hors ligne, il est donc supposé que la bibliothèque est préinstallée.

Cette fois, je voudrais résumer le code pour la prochaine fois, en tenant compte des points de réflexion.

Comment le faire en R

La bibliothèque de hachage utilise fastdigest. Spécifiez uniquement le csv à importer et le nom de la colonne que vous souhaitez hacher. Vous pouvez vérifier et travailler un par un de manière interactive.

hashing.R


#Installation de la bibliothèque
install.packages("fastdigest")
#Importation de bibliothèque
library("fastdigest")

#Créez votre propre fonction de hachage à l'aide de fastdigest
hash_algo <- function(data){
    x <- paste("abc" ,data)
    x <- fastdigest(x)
    return(x)
}

#Lire les données
path <- ""
df <- read.csv(path, header=T)
#Confirmation de lecture
str(df)

#Stockez le nom de la colonne que vous souhaitez hacher
hash_list <- c("", "",...)

#Hashing
for (i in 1:length(hash_list)){
    df[,hash_list[i]] <- sapply(df[,hash_list[i]], fastdigest)
}

#exportation
write.csv(df,"hashed.csv")

Comment le faire en Python

Utilisez les pandas et hashlib pour le hachage. Python veut terminer rapidement avec un script. Décidez simplement du nom de la colonne que vous souhaitez hacher à l'avance, spécifiez le chemin et exécutez le code.

hashing.py


import os
import sys
import pandas as pd
import hashlib

#Stockez le nom de la colonne que vous souhaitez hacher
hash_list = []

#Fonction de règle de hachage
def hash_algo(data):
    #Si vous écrivez ici de manière compliquée, il sera difficile d'inverser la conversion
    x = "abc" + str(data)
    x = hashlib.sha256(x.encode("utf-8")).hexdigest()
    return x

#Lire pour sortir
def hashing(path, hash_list=hash_list):
    #Lire les données
    df = pd.read_csv(path, encoding='utf-8')

    #Processus de hachage
    for i in range(0,len(hash_list)):
        df[hash_list[i]] = list(map(hash_algo, df[hash_list[i]]))

    #Exporter le fichier
    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])

S'il vous plaît laissez-moi savoir s'il existe un moyen plus intelligent.

Recommended Posts

Hashing de données en R et Python
Représentez facilement des données graphiques dans le shell et Python
Variables Python et types de données appris avec la chimio-automatique
Recevoir et afficher les données de formulaire HTML en Python
[Python] Permutation des lignes et des colonnes de données Numpy
Gérer les données ambiantes en Python
Afficher les données UTM-30LX en Python
Pile et file d'attente en Python
Unittest et CI en Python
Fonctionne avec Python et R
Traitement pleine largeur et demi-largeur des données CSV en Python
Obtenez des données LeapMotion en Python.
Différence entre list () et [] en Python
Différence entre == et est en python
Lire les données des tampons de protocole avec Python3
Obtenir des données de Quandl en Python
Exécutez la commande shell / Python dans R
Manipuler des fichiers et des dossiers en Python
Gérez les données au format NetCDF avec Python
Affectations et modifications des objets Python
Vérifiez et déplacez le répertoire en Python
Chiffrement avec Python: IND-CCA2 et RSA-OAEP
Synthèse de fonctions et application en Python
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Comparaison de la gestion des trames de données en Python (pandas), R, Pig
Exporter et exporter des fichiers en Python
Inverser le pseudonyme plat et le katakana en Python2.7
Lire et écrire du texte en Python
[GUI en Python] Menu PyQt5 et barre d'outils-
Créer et lire des paquets de messages en Python
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie1-
traitement pour utiliser les données notMNIST en Python (et essayé de les classer)
Acquisition automatique des données de niveau d'expression génique par python et R
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie2-
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie4-
Extraction d'éléments conditionnels à partir du bloc de données: R est% en%, Python est .isin ()
Résolution de l'introduction d'AOJ aux algorithmes et aux structures de données en Python -Partie3-
Chevauchement d'expressions régulières en Python et Java
Obtenez des données supplémentaires vers LDAP avec python
Construction de pipeline de données avec Python et Luigi
Différence d'authenticité entre Python et JavaScript
Notes utilisant cChardet et python3-chardet dans Python 3.3.1.
Les modules et packages en Python sont des "espaces de noms"
Évitez les boucles imbriquées en PHP et Python
Entrée / sortie de données en Python (CSV, JSON)
Différences entre Ruby et Python dans la portée
Modulation et démodulation AM avec Python Partie 2
différence entre les instructions (instructions) et les expressions (expressions) en Python
Livre Ali en python: Sec.2-4, structure de données
Valeurs authentiques et vecteurs propres: Algèbre linéaire en Python <7>
Comment faire R chartr () en Python
Essayez de travailler avec des données binaires en Python
Module d'implémentation de file d'attente et Python "deque"
Graphique à lignes pliées et ligne d'échelle en python
Implémenter le filtre FIR en langage Python et C
Différences entre la syntaxe Python et Java
Vérifier et recevoir le port série en Python (vérification du port)
Rechercher et lire des vidéos YouTube avec Python
Obtenez les données de l'API Google Fit en Python
Différence entre append et + = dans la liste Python
Différence entre non local et global en Python