{"id":14291,"url":"\/distributions\/14291\/click?bit=1&hash=257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","hash":"257d5375fbb462be671b713a7a4184bd5d4f9c6ce46e0d204104db0e88eadadd","title":"\u0420\u0435\u043a\u043b\u0430\u043c\u0430 \u043d\u0430 Ozon \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u043d\u0438\u0447\u0435\u0433\u043e \u0442\u0430\u043c \u043d\u0435 \u043f\u0440\u043e\u0434\u0430\u0451\u0442","buttonText":"","imageUuid":""}

Анонимизация данных с помощью Python

Одним из простых способов обезличивания данных может быть использование языка Python. Работать можно с файлами в любом формате, как в текстовом (.csv), так и в формате. xlsx. Мы будем использовать модуль pandas для удобства обработки.

import pandas as pd data = pd.read_excel('Информация.xlsx')

Загружаем данные в DataFrame, и определяем с какими данными будем работать.

Рис.1 Исходные данные

Есть два основных подхода к обфускации данных:

— Замена данных уникальным ключом. Это позволяет гарантировать на 100% невозможность восстановления исходной информации, если у нас нет таблицы соответствия ключ-данные,

— Кодирование. В этом случае мы используем специальные функции для того, чтобы сформировать однозначное соответствие между данными и выходным значением, например, хэширование. Хэширование позволяет в дальнейшем сравнивать между собой разные наборы данных, используя хэши. Однако риск восстановления информации из хэша есть, хоть и минимальный.

Рассмотрим вариант с формированием ID записи. Для этого мы будем использовать ранжирование записей по группе.

data['id'] = data[['Имя', 'Дата рождения']].\ apply(tuple, axis = 1).\ rank(method = 'dense')

Формируем группы из необходимых столбцов, и применяем к ним функцию ранжирования. Получаем новый столбец, который содержит ID, уникально идентифицирующий клиента:

Рис. 2 Данные с уникальным столбцом-идентификатором клиента

Теперь рассмотрим пример получения хэша для номера счёта. Импортируем библиотеку hashlib, и с её помощью формируем хэш для каждой из строк

import hashlib data['hash'] = data['Счёт'].\ apply(lambda x: hashlib.md5(str(x).encode('utf-8')).hexdigest())

По полученному результату видно, что для одинаковых счетов мы получаем одинаковые хэши.

Рис. 3 Пример хэша

Таким образом мы можем получить файл, в котором все личные данные клиента скрыты, тем самым гарантируя анонимность при дальнейшей работе с ними. Это крайне актуально в случае, например, удалённой работы.

0
Комментарии
-3 комментариев
Раскрывать всегда