Гайд по объединению данных в библиотеке Pandas: Concat, Merge и Join
Типы объединений:
Внутреннее объединение (inner join): Внутреннее объединение объединяет только те строки, для которых значения ключевых столбцов присутствуют в обоих исходных таблицах.
Внешнее объединение (outer join): Внешнее объединение объединяет все строки из обоих таблиц, сохраняя значения, где это возможно.
Левое объединение (left join): Левое объединение сохраняет все строки из левой (первой) таблицы и добавляет соответствующие значения из правой (второй).
Правое объединение (right join): Правое объединение сохраняет все строки из правой (второй) таблицы и добавляет соответствующие значения из левой (первой).
Метод concat():
Метод concat() используется для объединения объектов DataFrame или Series вдоль заданной оси. Он предоставляет гибкость при работе с данными и позволяет объединять данные по вертикали (по строкам) или горизонтали (по столбцам). Рассмотрим синтаксис метода concat():
result = pd.concat(objs, axis=0, join='outer', ignore_index=False)
objs
: Список или кортеж из объектов DataFrame или Series, которые нужно объединить.axis
: Ось, по которой будет происходить объединение. По умолчанию,axis=0
(вертикальное объединение).join
: Тип объединения. По умолчанию,join='outer'
, что означает внешнее объединение.ignore_index
: Флаг, указывающий на необходимость переиндексации объединенных данных. По умолчанию,ignore_index=False
.
Пример объединения данных с помощью метода concat():
import pandas as pd
# Создание двух объектов DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [7, 8, 9], 'B': [10, 11, 12]})
# Объединение по вертикали
result_vertical = pd.concat([df1, df2])
# Объединение по горизонтали
result_horizontal = pd.concat([df1, df2], axis=1)
Метод merge():
Метод merge() позволяет объединять данные на основе значений одного или нескольких столбцов. Он предоставляет гибкость в выборе типа объединения (внутреннее, внешнее, левое или правое) и столбцов, по которым будет происходить объединение. Рассмотрим синтаксис метода merge():
result = pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=True)
left
иright
: Объекты DataFrame, которые нужно объединить.how
: Тип объединения. По умолчанию,how='inner'
(внутреннее объединение).on
: Имя или имена столбцов, по которым будет происходить объединение. Если не заданы, то объединение будет выполнено по общим столбцам.left_on
иright_on
: Имена столбцов вleft
иright
соответственно, по которым будет происходить объединение.left_index
иright_index
: Флаги, указывающие на использование индексаleft
и/илиright
для объединения. По умолчанию,left_index=False
иright_index=False
.
Пример объединения данных с помощью метода merge():
import pandas as pd
# Создание двух объектов DataFrame
df1 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['John', 'Alice', 'Bob']})
df2 = pd.DataFrame({'ID': [2, 3, 4], 'Age': [25, 30, 35]})
# Внутреннее объединение по столбцу 'ID'
result_inner = pd.merge(df1, df2, on='ID', how='inner')
# Внешнее объединение по столбцу 'ID'
result_outer = pd.merge(df1, df2, on='ID', how='outer')
# Левое объединение по столбцу 'ID'
result_left = pd.merge(df1, df2, on='ID', how='left')
# Правое объединение по столбцу 'ID'
result_right = pd.merge(df1, df2, on='ID', how='right')
Метод join():
Метод join() позволяет объединять данные на основе индексов объектов DataFrame. Он предоставляет удобный способ объединения данных, если индексы объектов DataFrame содержат схожую информацию. Рассмотрим синтаксис метода join():
result = left.join(right, how='left', lsuffix='', rsuffix='', sort=False)
left
иright
: Объекты DataFrame, которые нужно объединить.how
: Тип объединения. По умолчанию,how='left'
(левое объединение).lsuffix
иrsuffix
: Суффиксы для различения одинаковых имен столбцов вleft
иright
соответственно.sort
: Флаг, указывающий на необходимость сортировки результата по индексу. По умолчанию,sort=False
.
Пример объединения данных с помощью метода join():
import pandas as pd
# Создание двух объектов DataFrame
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]}, index=['x', 'y', 'z'])
df2 = pd.DataFrame({'C': [7, 8, 9], 'D': [10, 11, 12]}, index=['y', 'z', 'w'])
# Левое объединение по индексу
result_left = df1.join(df2, how='left')
# Правое объединение по индексу
result_right = df1.join(df2, how='right')
Заключение:
В этом подробном гайде мы рассмотрели три основных метода объединения данных в библиотеке Pandas: concat, merge и join. Каждый из этих методов предоставляет удобные и гибкие возможности для объединения данных, в зависимости от требований анализа данных. Вы можете выбрать наиболее подходящий метод в зависимости от структуры данных и типа объединения, которое вам необходимо выполнить.