Маскируем данные с Python

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

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

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

Маскируем данные с Python
Маскируем данные с Python

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

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

import pandas as pd
import numpy as np

df = pd.read_excel('/Users/tg/Downloads/data.xlsx')

df.head()
Маскируем данные с Python

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

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

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

или

git clone https://github.com/ArtLabss/open-data-anonimizer.git
cd open-data-anonimizer
pip install -r requirements.txt
make bootstrap
pip install cape-privacy==0.3.0 --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)
Маскируем данные с Python

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

available_methods()
Маскируем данные с Python

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

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

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

anonym или anonym.info()
Маскируем данные с Python

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

df_new = anonym.to_df() df_new.head()
Маскируем данные с Python

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

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

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'})

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

Маскируем данные с Python

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

anonym.categorical_fake_auto() anonym.categorical_fake({'web': 'url', 'phone': 'phone_number'})
Маскируем данные с Python

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

Маскируем данные с Python

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

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

источник

+1
0
+1
1
+1
1
+1
0
+1
0

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *