{"id":14276,"url":"\/distributions\/14276\/click?bit=1&hash=721b78297d313f451e61a17537482715c74771bae8c8ce438ed30c5ac3bb4196","title":"\u0418\u043d\u0432\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432 \u043b\u044e\u0431\u043e\u0439 \u0442\u043e\u0432\u0430\u0440 \u0438\u043b\u0438 \u0443\u0441\u043b\u0443\u0433\u0443 \u0431\u0435\u0437 \u0431\u0438\u0440\u0436\u0438","buttonText":"","imageUuid":""}

Маскировка данных с помощью Python

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

Каким же образом можно свободно передавать, в некоторых случаях даже хранить данные, не переживая о потенциальных утечках? Именно здесь в игру вступает анонимизация данных путём маскирования.

Проще говоря, анонимизация данных – это процесс перестановки данных таким образом, после которого будет невозможно понять, кому принадлежат данные. В зависимости от цели может так же возникнуть потребность в том, чтобы сохранить смысл и такие свойства как однородность, целостность, взаимозависимость и вариативность исходных данных. Чтобы решить возможную проблему, необходимо понять, как и какие данные необходимо маскировать, а какие нужно сохранить.

Anonympy – простая, но богатая своим функционалом библиотека, обладающая набором инструментов и функций для анонимизации и маскировки данных. На текущий момент проходит бета-тестирование функционала по анонимизации изображений и цензурированию текста в PDF-документах, но об этом в другой раз.

Anonympy использует эффективность Pandas и инкапсулирует другие существующие библиотеки, например, Faker. Идея создания библиотеки проста: сделать анонимизацию и маскировку данных интуитивно понятными.

В качестве примера буду использовать подготовленный набор данных. Импортирую библиотеки и создаю DataFrame.

import pandas as pd import numpy as np df = pd.read_excel('/Users/tg/Downloads/data.xlsx') df.head()

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

Предлагаю начать со стандартной установки:

pip install anonympy pip install cape-privacy — no-deps

Важно знать тип столбца, прежде чем применять какие-либо преобразования. Советую проверить типы данных и посмотреть, какие методы доступны.

Сначала подключаю две дополнительные библиотеки для проверки типов столбцов, далее вывожу результат:

from anonympy.pandas import dfAnonymizer from anonympy.pandas.utils_pandas import available_methods anonym = dfAnonymizer(df) # вызов универсальной функции print('Numeric columns', anonym.numeric_columns) print('Categorical columns', anonym.categorical_columns) print('Date columns', anonym.datetime_columns)

Справка по методам:

available_methods()

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

anonym.numeric_noise('age') anonym.numeric_rounding('salary') anonym.categorical_email_masking('email')

Для проверки состояния маскировки можно воспользоваться простым обращением или же вызовом функции:

anonym или anonym.info()

Чтобы увидеть изменения можно сделать так:

df_new = anonym.to_df() df_new.head()

Как можно заметить, столбцы, содержащие возраст, зарплату и адрес электронной почты, успешно претерпели изменения.

Также для преобразования данных можно воспользоваться словарём:

anonym.anonymize({'first_name': 'categorical_fake', # {'column_name': 'method_name'} 'last_name': 'categorical_fake_auto', 'age': 'numeric_noise', 'salary': 'numeric_rounding', 'email':'categorical_email_masking', 'postal': 'categorical_resampling'})

В случае повторной маскировки столбца, система выдаст соответствующий комментарий:

Чтобы замаскировать оставшиеся столбцы можно воспользоваться встроенными в Faker методами:

anonym.categorical_fake_auto() anonym.categorical_fake({'web': 'url', 'phone': 'phone_number'})

Вот и всё. Предлагаю наглядно посмотреть на новый полностью анонимный набор данных! Для сравнения покажу два датафрейма сразу:

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

В завершение хочу напомнить, что конфиденциальность и защита любых данных являются важным этапом их обработки, и им следует уделять должное внимание.

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