Найти в Дзене
Властелин машин

Рассеиваем туман вокруг параметра keep при работе с дубликатами в Pandas

Основными методами для работы с дубликатами в Pandas являются duplicated и drop_duplicates, принимающие набор колонок, по которым определяются дубли и параметр keep. Проясним смысл последнего. Сначала создадим демонстрационный датафрейм: Многие путаются в назначении параметра keep в разных методах, например, часто оно трактуется "как сохранение в выводе", однако это не так. Корректнее воспринимать keep, как то, что не будет считаться дублем. Например, в методе duplicated он говорит - "не помечай как дубли первые вхождения ('first'), последние ('last'), ничего (False)". Вот результат с keep='first': Соответственно, проиндексировав датафрейм с duplicated, мы как раз первые повторы (и уникальные значения) в выводе не получим: Значение keep=False помечает все как дубликаты: keep=False удобен для изучения всех дублей, часто его применяют вместе с сортировкой по повторам, чтобы визуально было легче их сравнивать: Для drop_duplicates отсутствие метки дубля будет означать, что такое значение н

Основными методами для работы с дубликатами в Pandas являются duplicated и drop_duplicates, принимающие набор колонок, по которым определяются дубли и параметр keep. Проясним смысл последнего.

Сначала создадим демонстрационный датафрейм:

Многие путаются в назначении параметра keep в разных методах, например, часто оно трактуется "как сохранение в выводе", однако это не так. Корректнее воспринимать keep, как то, что не будет считаться дублем. Например, в методе duplicated он говорит - "не помечай как дубли первые вхождения ('first'), последние ('last'), ничего (False)". Вот результат с keep='first':

-2

Соответственно, проиндексировав датафрейм с duplicated, мы как раз первые повторы (и уникальные значения) в выводе не получим:

-3

Значение keep=False помечает все как дубликаты:

-4

keep=False удобен для изучения всех дублей, часто его применяют вместе с сортировкой по повторам, чтобы визуально было легче их сравнивать:

-5

Для drop_duplicates отсутствие метки дубля будет означать, что такое значение не удалится (сохранится):

-6

А так удалятся все повторы:

-7

Таким образом, параметр keep трактуем, как определяющий, что не помечать как повтор, а итоговый результат уже зависит от конкретного метода - либо удаляющего все повторы, либо просто отмечающего меткой True.

-8