Как использовать объединение (merge) в DataFrame в Python?
Объединение данных в pandas с помощью merge(), join() и concat()
Автор: Кайл Стратис data-science intermediate
Таблица содержания
- pandas merge(): объединение данных по общим столбцам или индексам
- Как использовать merge()
- Примеры
- pandas .join(): объединение данных по столбцу или индексу
- Как использовать .join()
- Примеры
- pandas concat(): объединение данных по строкам или столбцам
- Как использовать concat()
- Примеры
- Заключение
Практические руководства по Python, которые предлагают подробные пояснения, шаг за шагом выполнения примеров кода и объяснений:
- Стартовая страница
- Обучение Python
- Программы обучения
- Проверьте свой прогресс обучения
- Просмотр тем
- Общение в сообществе
- Онлайн консультации
- Подкасты
- Книги
- Разблокировка всего контента
Дополнительно
- Истории обучения
- Python Newsletter
- Python Job Board
- Meet the Team
- Стать писателем учебников
- Стать инструктором-видео
Объединение данных в pandas с помощью merge(), join() и concat()
Series
и DataFrame
в pandas - мощные инструменты для изучения и анализа данных. Они предлагают множество возможностей для объединения отдельных наборов данных. С помощью pandas можно объединять, соединять и объединять наборы данных, что позволяет объединять и лучше понимать данные при анализе.
В этом руководстве вы узнаете, как и когда можно объединять данные в pandas с помощью следующих методов:
merge()
- объединение данных по общим столбцам или индексам.join()
- объединение данных по ключевому столбцу или индексуconcat()
- объединение DataFrame по строкам или столбцам
Вы можете следовать примерам в этом руководстве, используя интерактивную записную книжку Jupyter и файлы данных, доступные по ссылке ниже:
Примечание: Все техники, которые вы узнаете ниже, в основном будут работать как для объектов DataFrame
, так и для Series
. Однако для упрощения и краткости примеры будут использовать термин набор данных, чтобы назвать объекты, которые могут быть как DataFrame, так и Series.
pandas merge()
: объединение данных по общим столбцам или индексам
Первый метод, который вы узнаете, - это merge()
. Вы можете использовать merge()
в любое время, когда вам нужна функциональность, аналогичная операциям join в базах данных. Это самый гибкий из трех методов, которые вы узнаете.
Когда вам нужно объединить объекты данных на основе одного или нескольких ключей, аналогично тому, как вы делаете это в реляционной базе данных, вам понадобится merge()
. Более конкретно, merge()
наиболее полезен, когда вы хотите объединить строки, которые имеют общие данные.
Вы можете использовать one-to-many и many-to-many объединения с помощью merge()
. В одном-ко-многим объединении один из ваших наборов данных будет иметь множество строк в объединяемом столбце, которые повторяются одними и теми же значениями. Например, значения могут быть: 1, 1, 3, 5 и 5. В то же время столбец объединения в другом наборе данных не будет иметь повторяющихся значений. Например, это могут быть значения 1, 3 и 5.
Как вы могли уже догадаться, при многие-ко-многим объединении оба ваших столбца объединения будут иметь повторяющиеся значения. Такие объединения более сложны и приводят к декартовому произведению объединенных строк.
Это означает, что после объединения у вас будет каждая комбинация строк, которые имеют одно и то же значение в ключевом столбце.
Давайте рассмотрим эти методы подробнее и приведем примеры их использования.
Как использовать merge()
Метод merge()
имеет следующий синтаксис:
Параметры метода merge()
:
left
иright
- объединяемые объекты данных (объекты DataFrame или Series)how
- тип объединения (inner, outer, left или right)on
- столбцы или индексы, по которым следует выполнить объединениеleft_on
- столбцы или индексы объединяемого объекта данных слеваright_on
- столбцы или индексы объединяемого объекта данных справаleft_index
иright_index
- указание использовать ли индекс объединяемого объекта данных слева и справаsort
- сортировать ли объединенные данные
Параметр how
определяет тип объединения:
'inner'
- только общие строки или индексы из объединяемых объектов данных'outer'
- все строки или индексы из каждого объединяемого объекта данных'left'
- все строки или индексы из объединяемого объекта данных слева и только общие строки или индексы со стороны справа'right'
- все строки или индексы из объединяемого объекта данных справа и только общие строки или индексы со стороны слева
Примеры
Объединение на основе общего столбца
Допустим, у вас есть два объекта данных - df1
и df2
, и вы хотите объединить их на основе общего столбца “key”. Вы можете использовать метод merge()
с параметром on
, указывающим столбец для объединения:
В результате кода df_merged
будет содержать объединенные данные:
Объединение на основе общих индексов
Вы также можете объединить объекты данных на основе общих индексов с помощью merge()
. Для этого вы можете использовать параметры left_index
и right_index
, установив их в True
:
В результате df_merged
будет содержать объединенные данные:
Объединение с разными типами объединения (how
)
Параметр how
позволяет задавать разные типы объединения. Например, вы можете использовать параметр how='outer'
, чтобы объединить объекты данных с помощью полного внешнего объединения, которое включает все строки или индексы из каждого объекта данных:
В результате df_merged
будет содержать следующие объединенные данные:
В приведенных выше примерах показаны основы объединения данных в pandas с помощью метода merge()
. Вы можете дополнительно изучить документацию по pandas, чтобы узнать больше о функциях объединения, таких как suffixes
, validate
и других.
pandas .join()
: объединение данных по столбцу или индексу
Второй метод, который вы узнаете, - это .join()
. Вы можете использовать .join()
для объединения двух объектов данных по ключевому столбцу или индексу.
Основное отличие между merge()
и .join()
заключается в том, что метод join()
автоматически использует индексы для объединения, а merge()
требует явного указания столбца или индекса для объединения.
Как использовать .join()
Метод .join()
имеет следующий синтаксис:
Параметры метода .join()
:
right
- объект данных для объединенияon
- столбец или индекс, по которому следует выполнить объединениеhow
- тип объединения (left, right, inner, outer)lsuffix
иrsuffix
- суффиксы, добавляемые к повторяющимся именам столбцов при объединении
Примеры
Объединение на основе ключевого столбца
Допустим, у вас есть два объекта данных - df1
и df2
, и вы хотите объединить их по ключевому столбцу “key”. Вы можете использовать метод .join()
с параметром on
, указывающим столбец для объединения:
В результате кода df_merged
будет содержать объединенные данные:
Объединение на основе индекса
Вы также можете объединить объекты данных на основе общих индексов с помощью метода .join()
. Для этого вам не нужно указывать столбец ключа, просто вызовите метод .join()
:
В результате df_merged
будет содержать объединенные данные:
Объединение с различными типами объединения (how
)
Метод .join()
также поддерживает разные типы объединения. Параметр how
позволяет задавать тип объединения.
В результате df_merged
будет содержать следующие объединенные данные:
pandas concat()
: объединение данных по строкам или столбцам
Третий метод, который вы узнаете, - это concat()
. Вы можете использовать concat()
для объединения объектов данных по строкам или столбцам.
Как использовать concat()
Метод concat()
имеет следующий синтаксис:
Параметры метода concat()
:
objs
- объекты данных для объединенияaxis
- ось, по которой нужно объединить данные (0 - строки, 1 - столбцы)join
- тип объединения (inner, outer)
Примеры
Объединение по строкам
Допустим, у вас есть два объекта данных - df1
и df2
, и вы хотите объединить их по строкам. Вы можете использовать метод concat()
с параметром axis=0
:
В результате кода df_concatenated
содержит объединенные данные по строкам:
Объединение по столбцам
Вы также можете объединить объекты данных по столбцам с помощью метода concat()
с параметром axis=1
:
В результате кода df_concatenated
содержит объединенные данные по столбцам:
Другие параметры объединения
Метод concat()
также поддерживает другие параметры, такие как ignore_index
, keys
и другие. Ознакомьтесь со документацией по методу concat()
, чтобы узнать больше о возможностях объединения данных с помощью этого метода.
Заключение
В этом руководстве вы изучили три метода объединения данных в pandas - merge()
, .join()
и concat()
. Вы узнали, как использовать каждый из них и привели примеры их использования.
Объединение данных позволяет вам соединять, объединять и объединять наборы данных для лучшего понимания и анализа данных в pandas. Используйте эти методы согласно вашим потребностям и задачам для эффективной работы с данными в Python и pandas.