- Вопрос или проблема
- Ответ или решение
- Как написать пользовательский алгоритм деидентификации на Python
- Шаг 1: Подготовка данных
- Шаг 2: Генерация псевдоидентификаторов
- Шаг 3: Изменение значений уникальных идентификаторов
- Шаг 4: Удаление идентифицирующей информации
- Шаг 5: Экспорт деидентифицированных данных
- Пример полного кода
- Заключение
Вопрос или проблема
Я попробовал простой алгоритм для анонимизации своих данных, используя технику деидентификации. Но код не работает для меня. Я хочу анонимизировать данные, слегка изменив значения. Образец данных доступен здесь
import pandas as pd
import uuid as u
import datetime as dt
# генерируем последовательность псевдо-идентификаторов, используя библиотеку генератора случайных чисел python uuid.
def uudi_generator(length):
uudi_list= list()
i=0
while i < length:
uudi_list.append(u.uuid4())
i+=1
return uudi_list
#import original originaL dataset
dataset = pd.read_csv('bankcredit-data.csv')
# псевдо идентификатор
sLength = len(dataset['housing'])
dataset.insert(0, 'uuid', pd.Series(uudi_generator(sLength), index=dataset.index))
# Запись транзакции, прикрепленная к оригиналу
dataset.insert(0, 'transaction_date', pd.Series([dt.datetime.now]*sLength, index=dataset.index))
#запись транзакции прикреплена к оригинальному файлу данных
dataset.to_csv('bankcredit-data.csv')
#удалить идентифицируемую запись из набора данных
del dataset['firstnamme']
del dataset['lastname']
# экспортируем деидентифицированный набор данных в формате csv для передачи пользователю
dataset.to_csv('deidentified-data.csv')
Если вы не хотите создавать свою собственную библиотеку, попробуйте библиотеку Faker для анонимности информации PPI.
pip install Faker
Ответ или решение
Как написать пользовательский алгоритм деидентификации на Python
Деидентификация — это критически важный процесс в области обработки данных, направленный на защиту личной информации. Создание пользовательского алгоритма деидентификации на Python может быть выполнено несколькими способами, в зависимости от ваших потребностей и типа данных, которые вы обрабатываете. В данном ответе мы предложим подробный план создания собственного алгоритма деидентификации.
Шаг 1: Подготовка данных
Для начала, необходимо импортировать данные из CSV-файла. Ваша исходная выборка данных должна быть загружена с помощью библиотеки pandas
. Также стоит провести предварительный анализ данных, чтобы определить, какие поля подлежат деидентификации.
import pandas as pd
# Импортируем набор данных
dataset = pd.read_csv('bankcredit-data.csv')
# Просматриваем первые строки данных для понимания структуры
print(dataset.head())
Шаг 2: Генерация псевдоидентификаторов
Для замены уникальных идентификаторов (таких как имена и фамилии) на случайные псевдоидентификаторы используем библиотеку uuid
. Этот метод поможет избежать утечек личной информации.
import uuid
def generate_uuid(length):
return [str(uuid.uuid4()) for _ in range(length)]
Шаг 3: Изменение значений уникальных идентификаторов
Вы можете применять случайные изменения к другим данным, чтобы однообразие и идентификация стали труднее. В качестве примера, мы можем модифицировать поля, содержащие даты или суммы транзакций.
import random
from datetime import timedelta, datetime
def random_date(start, end):
return start + timedelta(days=random.randint(0, (end - start).days))
# Изменяем даты транзакций
start_date = datetime(2020, 1, 1)
end_date = datetime(2022, 1, 1)
dataset['transaction_date'] = [random_date(start_date, end_date) for _ in range(len(dataset))]
Шаг 4: Удаление идентифицирующей информации
После создания новых уникальных идентификаторов и модификации значений вам необходимо удалить исходные идентифицирующие поля из вашего набора данных.
# Удаляем традиционные идентифицирующие поля
if 'firstname' in dataset.columns:
del dataset['firstname']
if 'lastname' in dataset.columns:
del dataset['lastname']
Шаг 5: Экспорт деидентифицированных данных
Наконец, сохраните обновленный набор данных с помощью pandas
в новый CSV-файл.
dataset.to_csv('deidentified-data.csv', index=False)
Пример полного кода
Полное решение для деидентификации данных будет выглядеть следующим образом:
import pandas as pd
import uuid
import random
from datetime import timedelta, datetime
# Функция генерации UUID
def generate_uuid(length):
return [str(uuid.uuid4()) for _ in range(length)]
# Функция для генерации случайной даты
def random_date(start, end):
return start + timedelta(days=random.randint(0, (end - start).days))
# Импортируем набор данных
dataset = pd.read_csv('bankcredit-data.csv')
# Генерация псевдоидентификаторов
sLength = len(dataset)
dataset.insert(0, 'uuid', generate_uuid(sLength))
# Изменяем даты транзакций
start_date = datetime(2020, 1, 1)
end_date = datetime(2022, 1, 1)
dataset['transaction_date'] = [random_date(start_date, end_date) for _ in range(sLength)]
# Удаляем идентифицирующие поля
if 'firstname' in dataset.columns:
del dataset['firstname']
if 'lastname' in dataset.columns:
del dataset['lastname']
# Экспортируем деидентифицированный набор данных
dataset.to_csv('deidentified-data.csv', index=False)
Заключение
Создание пользовательского алгоритма деидентификации на Python требует внимательного подхода к защите личной информации. Применяйте разные методы для модификации данных, чтобы обеспечить их безопасность и анонимность. Также рекомендуется провести тестирование алгоритма на различных данных для гарантии его эффективности. Убедитесь, что ваш код читабелен и документирован, чтобы другие разработчики могли понять ваш процесс.
Данный алгоритм может быть дополнен или изменён в зависимости от ваших конкретных требований и типов данных, которые вы подвергаете анонимизации.