Дубли: duplicated и drop_duplicates по ключевым столбцам
Содержание курса
Проверка результата дедупликации по shape и уникальности ключа
После drop_duplicates() стоит сделать две простые проверки, прежде чем двигаться дальше. Они занимают одну-две строки кода, но дают уверенность, что операция сработала именно так, как ожидалось.
Первая проверка — сравнить число строк до и после:
import pandas as pd
df = pd.DataFrame({
'user_id': [1, 2, 1, 3, 2],
'action': ['login', 'buy', 'login', 'view', 'buy'],
'amount': [0, 100, 0, 50, 200]
})
key_cols = ['user_id', 'action']
df_clean = df.drop_duplicates(subset=key_cols, keep='first')
print(df.shape[0]) # 5 — исходное число строк
print(df_clean.shape[0]) # 3 — после дедупликации
Числа сошлись с ожиданием: было 5 строк, 2 из них — дубли, осталось 3. Если цифра неожиданная, это сигнал проверить subset — возможно, ключевые столбцы заданы не так, как нужно.
Вторая проверка — убедиться, что в очищенном DataFrame действительно нет дублей по ключевым столбцам:
print(df_clean.duplicated(subset=key_cols).sum()) # 0
Если результат не ноль, значит дедупликация не завершила работу — например, из-за опечатки в subset или неожиданного содержимого данных. Здесь используется тот же duplicated() с теми же key_cols, что и при диагностике — никаких новых инструментов.
Обе проверки вместе занимают буквально три строки и дают ответы на два разных вопроса:
shape[0]говорит о том, сколько строк удалено — структурный размер;duplicated(...).sum() == 0говорит о том, что уникальность по ключу достигнута.
Важно понимать, что эти проверки не замещают понимание семантики: они не скажут, правильную ли запись из группы дублей ты сохранил. Если нужна уверенность в содержании — смотри на конкретные строки через фильтрацию. Но структурные проверки выше стоит делать всегда, как финальный шаг дедупликации.
Задачи на очистку данных в pandas. Потренируйтесь выбирать ключ дубликатов и keep="first" или keep="last", очищать текстовые ключи и заполнять пропуски.
