Примеры использования merge в pandas для объединения данных

Библиотека pandas предоставляет мощные инструменты для обработки и анализа данных в Python. Одной из самых полезных функций pandas является функция merge, которая позволяет объединять данные из нескольких источников в один датафрейм.

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

Функция merge предоставляет различные способы объединения данных, включая объединение по столбцам, объединение по индексам, объединение по нескольким столбцам и многое другое. Она также позволяет настроить тип объединения (внутреннее, левое, правое или внешнее) и поведение при дублирующихся значениях.

Как использовать merge в pandas для объединения данных?

В библиотеке pandas есть функция merge, которая позволяет объединить данные из нескольких источников в один датафрейм. Merge позволяет соединять данные по общим значениям в указанных столбцах или индексах.

  1. Inner merge: при inner merge сохраняются только строки, которые имеют совпадающие значения по указанным столбцам или индексам в обоих датафреймах. Остальные строки будут исключены из объединенного датафрейма.
  2. Left merge: при left merge сохраняются все строки из левого (первого) датафрейма и добавляются совпадающие строки из правого (второго) датафрейма. Если строки из правого датафрейма не имеют совпадающих значений, то вместо них в объединенном датафрейме будут пропущенные значения.
  3. Right merge: при right merge сохраняются все строки из правого (второго) датафрейма и добавляются совпадающие строки из левого (первого) датафрейма. Если строки из левого датафрейма не имеют совпадающих значений, то вместо них в объединенном датафрейме будут пропущенные значения.
  4. Outer merge: при outer merge сохраняются все строки из обоих датафреймов. Если строки не имеют совпадающих значений по указанным столбцам или индексам, то вместо них в объединенном датафрейме будут пропущенные значения.

Для использования merge в pandas нужно вызвать функцию merge и передать ей два датафрейма, а также указать параметры on и how. Параметр on указывает столбцы или индексы, по которым нужно объединить данные. Параметр how указывает тип объединения.

Пример использования merge:

import pandas as pd
# Создаем два датафрейма
df1 = pd.DataFrame({'id': [1, 2, 3], 'name': ['Alice', 'Bob', 'Charlie']})
df2 = pd.DataFrame({'id': [2, 3, 4], 'age': [25, 30, 35]})
# Inner merge
inner_merge = pd.merge(df1, df2, on='id', how='inner')
print(inner_merge)
# Left merge
left_merge = pd.merge(df1, df2, on='id', how='left')
print(left_merge)
# Right merge
right_merge = pd.merge(df1, df2, on='id', how='right')
print(right_merge)
# Outer merge
outer_merge = pd.merge(df1, df2, on='id', how='outer')
print(outer_merge)

Выполнив код, мы получим следующий результат:

   id     name  age
0   2      Bob   25
1   3  Charlie   30
id     name   age
0   1    Alice  NaN
1   2      Bob  25.0
2   3  Charlie  30.0
id     name  age
0   2      Bob   25
1   3  Charlie   30
2   4      NaN   35
id     name   age
0   1    Alice   NaN
1   2      Bob  25.0
2   3  Charlie  30.0
3   4      NaN  35.0

Как видно из примера, в результате объединения мы получаем новый датафрейм, в котором строки из двух исходных датафреймов объединены в соответствии с указанными столбцами или индексами.

Простой merge

Для примера, предположим, что у нас есть два DataFrame: df1 и df2. В df1 содержатся данные о студентах, включая их идентификаторы и имена, а в df2 содержатся данные о полученных стипендиях, включая идентификаторы студентов и суммы стипендий.

Чтобы объединить данные из обоих DataFrame, мы можем использовать метод merge().


import pandas as pd
df1 = pd.DataFrame({'Id': [1, 2, 3, 4, 5],
'Name': ['John', 'Emma', 'Ben', 'Emily', 'Sam']})
df2 = pd.DataFrame({'Id': [1, 3, 5],
'Scholarship': [1000, 500, 1500]})
merged_df = pd.merge(df1, df2, on='Id')

В результате объединения мы получим новый DataFrame merged_df, содержащий информацию об идентификаторах, именах и суммах стипендий для студентов, у которых они были.

Пример простого merge демонстрирует, как легко можно объединить данные из двух DataFrame по общему столбцу.

Merge с заданием условий

Операция merge в библиотеке Pandas позволяет объединять данные из разных источников на основе заданных условий. В данном случае можно указать, какие столбцы из двух таблиц следует сравнивать и какие условия для сравнения должны выполняться.

Одним из наиболее часто используемых параметров при слиянии данных является параметр on. Он позволяет указать столбец или список столбцов, по которым будет производиться сравнение. Например:

df1.merge(df2, on='key')

В этом случае данные будут объединены по столбцу ‘key’. Также можно указать несколько столбцов для сравнения, передав их в виде списка:

df1.merge(df2, on=['key1', 'key2'])

Значение столбцов, по которым происходит сравнение, должно совпадать для успешного объединения данных. По умолчанию используется операция сравнения «равно».

Кроме параметра on существуют и другие параметры, позволяющие задавать условия для объединения данных. Например, параметр how позволяет задавать тип слияния, включая внутреннее (inner), левое (left), правое (right) или полное (outer) слияние данных.

При объединении данных также можно указывать дополнительные условия с помощью параметра left_on и right_on. Эти параметры позволяют задать разные имена столбцов для сравнения в левой и правой таблицах.

Также можно задать параметр suffixes, который позволяет указать суффиксы, которые будут добавлены к названиям столбцов в случае, если имена столбцов совпадают.

Например:

df1.merge(df2, left_on='key1', right_on='key2', suffixes=('_left', '_right'))

В этом случае в результирующем датафрейме будут столбцы с добавленными суффиксами ‘_left’ и ‘_right’ для различения.

Используя различные параметры и условия, операция merge позволяет гибко и эффективно объединять данные из разных источников в библиотеке Pandas.

Outer merge для сохранения всех данных

Рассмотрим пример. Пусть у нас есть две таблицы: df1 и df2, содержащие информацию о студентах:

ИмяВозрастГруппа
Алексей20Группа 1
Мария21Группа 2

и

ИмяВозрастГруппа
Алексей20Группа 1
Иван22Группа 3

При объединении этих таблиц с использованием how='outer' мы получим следующий результат:

ИмяВозрастГруппа
Алексей20Группа 1
Мария21Группа 2
Иван22Группа 3

В результате объединения с помощью операции merge с параметром how='outer' в итоговой таблице останутся все строки из исходных таблиц, а для отсутствующих значений будет установлено значение NaN.

Merge по индексу

Метод merge в библиотеке pandas может быть использован для объединения данных по индексу. При этом, в качестве параметра on в функции merge указывается название столбца, по которому будет произведено объединение.

Для примера, создадим два DataFrame — df1 и df2:


import pandas as pd
data1 = {'Имя': ['Александр', 'Мария', 'Иван', 'Ольга'],
'Возраст': [27, 35, 42, 28]}
df1 = pd.DataFrame(data1)
data2 = {'Имя': ['Александр', 'Мария', 'Анна', 'Ольга'],
'Зарплата': [50000, 60000, 70000, 55000]}
df2 = pd.DataFrame(data2)

Теперь мы можем выполнить merge по индексу. Для этого нужно указать параметр on=’Имя’, который соответствует названию столбца, по которому будет произведено объединение:


merged_df = df1.merge(df2, on='Имя')

Получившийся DataFrame merged_df будет содержать только те строки, у которых значение в столбце «Имя» совпадает в обоих DataFrame. В данном случае, в результате выполнения merge получится следующий DataFrame:


Имя  Возраст  Зарплата
0  Александр      27     50000
1     Мария      35     60000
2     Ольга      28     55000

Таким образом, merge по индексу позволяет объединить данные из двух DataFrame на основе совпадения значений в указанном столбце.

Оцените статью