Pandas duplicated и dropduplicates: аудит бизнес-ключа
Дублирование бизнес-ключа и полное совпадение строк — разные проверки. Две строки могут иметь одинаковый идентификатор, но разные атрибуты, и всё равно нарушать уникальность справочника.
Явно задайте subset при поиске повторов. Параметр keep влияет на то, какие экземпляры попадут в маску. Сначала соберите диагностику, затем применяйте выбранное правило удаления: без него легко потерять нужные данные.
Проверьте решение без регистрации. Объяснения и последовательная практика — в курсе «NumPy и pandas: практический тренажёр».
Аудит размерной таблицы: дубли по бизнес-ключу через duplicated и drop_duplicates
Вы реализуете функцию audit_dimension, которая проверяет размерную таблицу на дублирование бизнес-ключа и возвращает компактный аудит-отчёт.
Что уже дано
Проверяющая система вызывает audit_dimension(dim, key_col), передавая:
dim—pd.DataFrame, размерная таблица (справочник). Может содержать дубли по столбцуkey_col.key_col— строка, имя столбца с бизнес-ключом.
Никаких файлов, глобальных переменных и состояния из других уроков нет.
Что нужно сделать
Реализуйте функцию audit_dimension(dim, key_col), которая выполняет ровно три шага и возвращает словарь.
Шаг 1. Подсчёт дублирующихся строк.
Постройте булеву маску mask_all = dim.duplicated(subset=[key_col], keep=False) — она помечает True все строки, участвующие в дублировании (включая первое вхождение). Посчитайте число таких строк: dup_row_count = int(mask_all.sum()).
Шаг 2. Подсчёт уникальных дублирующихся ключей.
Отберите строки по маске и найдите число уникальных значений ключа среди них: dup_key_count = int(dim.loc[mask_all, key_col].nunique()).
Шаг 3. Дедуплицированная таблица.
Получите чистую таблицу: clean = dim.drop_duplicates(subset=[key_col], keep='first').reset_index(drop=True).
Верните словарь с тремя ключами:
{
'dup_row_count': dup_row_count, # int: сколько строк участвуют в дублировании
'dup_key_count': dup_key_count, # int: сколько уникальных ключей задублированы
'clean': clean # pd.DataFrame: дедуплицированная таблица
}
Ввод и вывод
stdin не используется. Печатать через print в stdout ничего не нужно.
Проверяющая система вызывает audit_dimension(dim, key_col) и проверяет возвращаемый словарь. Функция принимает два аргумента:
dim—pd.DataFrame;key_col—str, имя столбца с бизнес-ключом.
Функция должна вернуть словарь с ключами 'dup_row_count' (int), 'dup_key_count' (int) и 'clean' (pd.DataFrame с чистым RangeIndex).
Пример использования
import pandas as pd
dim = pd.DataFrame({
'product_id': [1, 2, 2, 3, 3, 3],
'name': ['A', 'B', 'B2', 'C', 'C2', 'C3'],
})
result = audit_dimension(dim, 'product_id')
print(result['dup_row_count'])
print(result['dup_key_count'])
print(list(result['clean']['product_id']))
Результат:
5
2
[1, 2, 3]
Без регистрации. Гостевая проверка не сохраняет прогресс. Для сохранения перейдите к уроку.
Отправьте решение, чтобы увидеть результаты тестов.
Связанные задачи
- Итоговый практикум — часть 2: агрегация, соединение и финальная схема — задача по NumPy и pandas
- Отчёт в pandas: groupby, agg и merge со справочником
- pandas merge и дубли ключей: диагностика зерна данных
- Pandas concat и merge: объединение двух батчей данных
- pandas Series из словаря: index, shape и dtype
- pandas DataFrame из списка словарей: пример и задача
