В КУРСЕ?

Разбираемся в теме

После объединения таблиц строк стало больше: где искать ошибку в pandas

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

Повторяющийся ключ меняет число сочетаний

Представим две строки заказов одного покупателя и три строки сведений с тем же идентификатором. Если соединение допускает все совпадения по этому ключу, получится шесть сочетаний. Каждая строка слева соединится с каждой подходящей строкой справа. Это предсказуемое поведение, которое может не соответствовать задаче. Поэтому увеличение числа строк не следует сразу объявлять ошибкой библиотеки. Сначала нужно понять, почему в правой таблице три записи. Возможно, это история адресов, несколько контактов или реальные дубли. Эти случаи требуют разных решений. Автоматически удалять повторения опасно: можно потерять значимую информацию.

Укажите ожидаемое отношение между таблицами

Если у одного покупателя несколько заказов, а в справочнике предусмотрена одна актуальная запись на покупателя, ожидается отношение многие к одному. В pandas параметр validate позволяет проверять такие ожидания при соединении. Нарушение уникальности нужной стороны становится явной ошибкой, а не незаметным изменением результата. Отдельно полезно исследовать несовпавшие ключи. Параметр indicator может добавить признак происхождения строк результата. Это помогает различать совпавшие записи и те, для которых не нашлась пара при выбранном способе соединения. Однако проверка уникальности не подтверждает смысл ключа. Два столбца могут иметь одинаковый тип и неповторяющиеся значения, но относиться к разным сущностям. Идентификатор заказа и идентификатор покупателя нельзя соединять только потому, что оба записаны числами. Название и происхождение поля должны быть понятны.

Проверяйте показатели до и после

Перед объединением полезно записать число строк, число уникальных ключей и контрольный показатель, например сумму стоимости заказов. После соединения сравнивают результат с ожиданием. Если справочник лишь добавляет характеристики, неожиданное изменение суммы требует объяснения. Также важно проверить выбранный вид соединения. Внутреннее соединение оставляет только найденные совпадения, поэтому часть заказов может исчезнуть. Левое сохраняет строки левой таблицы, но при нескольких совпадениях справа всё равно может увеличить их количество. Название левое не означает сохранение прежнего числа строк при любых данных. Для диагностики удобно выделить один проблемный ключ и рассмотреть его отдельно. Несколько понятных строк часто объясняют причину лучше, чем большой итоговый отчёт. После исправления проверяют исходную задачу, а не только отсутствие сообщения об ошибке.

Попробуйте на практике

Проследите соединение двух маленьких вымышленных таблиц.

  1. Запишите два заказа покупателя с идентификатором 7. В справочнике создайте три записи с тем же ключом, обозначив их как разные версии сведений.
  2. Перечислите все пары совпавших строк. Посчитайте результат и объясните, почему заказов было два, а сочетаний стало шесть.
  3. Определите ожидаемое отношение многие к одному. Запишите вопрос, по какому правилу должна выбираться актуальная версия справочника, не удаляя строки наугад.
  4. Составьте проверки числа строк, уникальности ключа и суммы заказов до и после корректного соединения.

Как проверить результат. Получено шесть сочетаний. Причина найдена в трёх совпадениях справа, а решение связано со смыслом версий и проверяемой уникальностью справочника.

Частые вопросы

Левое соединение всегда сохраняет количество строк?

Нет. Оно сохраняет строки левой стороны, но несколько совпадений справа могут создать несколько результатов для каждой из них.

Достаточно удалить все повторяющиеся ключи?

Нет. Повторы могут представлять историю или разные связанные объекты. Сначала определяют их смысл и правило отбора.

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

Зарегистрируйтесь, чтобы уточнить возможность доступа к этому материалу

Зарегистрироваться
← К списку материалов