Как работает merge в Pandas? Объясните разные типы объединения таблиц.?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Ответ: Merge в Pandas и типы объединения таблиц
Что такое merge и зачем он нужен
Merge в Pandas — это операция объединения двух DataFrame на основе одного или нескольких общих столбцов (ключей). Это функция, которая работает как SQL JOIN и позволяет комбинировать данные из разных источников по определённому условию.
import pandas as pd
# Базовый синтаксис
result = pd.merge(left_df, right_df, on="key_column", how="inner")
Четыре основных типа объединения
1. INNER JOIN (внутреннее объединение)
Возвращает только строки, где ключ существует в обеих таблицах. Это самый консервативный подход — теряются все неподходящие строки.
# Пример
left = pd.DataFrame({"ID": [1, 2, 3], "Name": ["Alice", "Bob", "Charlie"]})
right = pd.DataFrame({"ID": [1, 2, 4], "Salary": [50000, 60000, 70000]})
result = pd.merge(left, right, on="ID", how="inner")
# Результат: 2 строки (только ID 1 и 2)
Когда использовать: Когда нужны только подтверждённые совпадения. Например, объединение заказов с доставками (только доставленные заказы).
2. LEFT JOIN (левое объединение)
Сохраняет все строки из левого DataFrame, добавляя данные из правого. Если совпадения нет — значения из правого DataFrame будут NaN.
result = pd.merge(left, right, on="ID", how="left")
# Результат: 3 строки (все из left), Charlie будет иметь NaN в Salary
Когда использовать: При анализе полного списка пользователей с их опциональными действиями (например, все пользователи + их покупки, если они были).
3. RIGHT JOIN (правое объединение)
Противоположность LEFT JOIN — сохраняет все строки из правого DataFrame.
result = pd.merge(left, right, on="ID", how="right")
# Результат: 3 строки (все из right), и будет добавлена строка для ID 4
4. OUTER JOIN (полное внешнее объединение)
Возвращает все строки из обоих DataFrame. Где совпадений нет — появляются NaN значения.
result = pd.merge(left, right, on="ID", how="outer")
# Результат: 4 строки (все из left и right)
Когда использовать: При сравнительном анализе двух источников, когда важно увидеть разницу в данных.
Продвинутые возможности
Объединение по разным названиям столбцов:
result = pd.merge(left, right, left_on="UserID", right_on="ID", how="inner")
Объединение по индексам:
result = pd.merge(left, right, left_index=True, right_index=True)
Объединение по нескольким столбцам:
result = pd.merge(left, right, on=["ID", "Date"], how="inner")
Практический пример для Product Analyst
# Объединение таблиц пользователей и их событий
users = pd.read_sql("SELECT user_id, registration_date FROM users", conn)
events = pd.read_sql("SELECT user_id, event_type, event_date FROM events", conn)
# Получаем всех пользователей и их события (если они есть)
user_events = pd.merge(users, events, on="user_id", how="left")
# Анализируем, сколько пользователей совершили событие
active_users = user_events[user_events["event_type"].notna()].drop_duplicates("user_id")
Похожие вопросы
- Назови свои три сильные стороны
- Были ли стратегии принятия решения в последнем A/B тесте
- Какая решенная задача повлияла на метрики команды или бизнеса?
- Как часто проводишь исследования?
- С кем взаимодействуешь на нынешней работе
- Как работает DISTINCT в SQL? В каких случаях его стоит и не стоит использовать?
- Что важно при выборе работодателя?
- Как решал задачу с неопределенностью?
- Что такое CR1?
- Назовите меры центральной тенденции. Когда лучше использовать медиану вместо среднего?
- Что самое ценное из текущего места работы возьмешь дальше в карьерный путь?
- Как участвовал в ранжировании?
- Какая временная сложность алгоритма сортировки?
- Делаешь ли визуализацию чаще в Python чем в Query by системе
- Куда ведет ссылка в рекламном кабинете
- Как определишь что все символы в строке уникальны?
- Создаешь ли библиотеки на Python
- Что такое NPS (Net Promoter Score)? Как его рассчитать и интерпретировать?
- Расскажите о AARRR-фреймворке (Pirate Metrics). Какие метрики на каждом этапе?
- Какой последний A/B тест делал?