 
            Гайд по объединению данных в библиотеке 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. Каждый из этих методов предоставляет удобные и гибкие возможности для объединения данных, в зависимости от требований анализа данных. Вы можете выбрать наиболее подходящий метод в зависимости от структуры данных и типа объединения, которое вам необходимо выполнить.
