Пропустить до содержимого

Как использовать функцию pd.concat для объединения DataFrame

[

Объединение данных в pandas с помощью функций merge(), join() и concat()

Logo

Pandas предоставляет мощные инструменты для исследования и анализа данных, такие как объекты Series и DataFrame. Часть их мощи заключается в возможности объединять отдельные наборы данных. С помощью pandas вы можете объединять, соединять и конкатенировать ваши наборы данных, позволяя объединить и лучше понять данные при их анализе.

В этом учебнике вы узнаете, как и когда объединять ваши данные в pandas с помощью следующих методов:

merge(): объединение данных на основе общих столбцов или индексов

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

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

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

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

Вот примеры использования метода merge():

Пример 1: Объединение данных на основе общего столбца

import pandas as pd
# Создание первого DataFrame
data1 = {
'id': [1, 2, 3],
'name': ['John', 'Kate', 'Mike'],
'age': [25, 30, 35]
}
df1 = pd.DataFrame(data1)
# Создание второго DataFrame
data2 = {
'id': [1, 2, 4],
'department': ['HR', 'IT', 'Marketing']
}
df2 = pd.DataFrame(data2)
# Объединение данных на основе общего столбца 'id'
merged = pd.merge(df1, df2, on='id')
print(merged)

Результат:

id name age department
0 1 John 25 HR
1 2 Kate 30 IT

Пример 2: Множественное соответствие многие-ко-многим

import pandas as pd
# Создание первого DataFrame
data1 = {
'id': [1, 1, 2, 3],
'name': ['John', 'John', 'Kate', 'Mike'],
'age': [25, 25, 30, 35]
}
df1 = pd.DataFrame(data1)
# Создание второго DataFrame
data2 = {
'id': [1, 2, 2, 4],
'department': ['HR', 'IT', 'IT', 'Marketing']
}
df2 = pd.DataFrame(data2)
# Множественное соответствие многие-ко-многим на основе столбца 'id'
merged = pd.merge(df1, df2, on='id')
print(merged)

Результат:

id name age department
0 1 John 25 HR
1 1 John 25 IT
2 2 Kate 30 IT

Как видите из примеров, метод merge() позволяет объединять данные по общим значениям в столбце ‘id’. В первом примере объединяются только строки с одинаковым значением в столбце ‘id’, а во втором примере объединяются все сочетания строк.

join(): объединение данных на основе столбца или индекса

Второй метод, который вы узнаете - это join(). join() позволяет объединять данные на основе столбца или индекса. Этот метод особенно полезен, когда вам нужно объединить данные на основе ключевого столбца или индекса.

Вот примеры использования метода join():

Пример 1: Объединение данных на основе столбца ‘id’

import pandas as pd
# Создание первого DataFrame
data1 = {
'id': [1, 2, 3],
'name': ['John', 'Kate', 'Mike'],
'age': [25, 30, 35]
}
df1 = pd.DataFrame(data1)
# Создание второго DataFrame
data2 = {
'id': [1, 2, 4],
'department': ['HR', 'IT', 'Marketing']
}
df2 = pd.DataFrame(data2)
# Объединение данных на основе столбца 'id' с использованием join()
joined = df1.set_index('id').join(df2.set_index('id'))
print(joined)

Результат:

name age department
id
1 John 25 HR
2 Kate 30 IT
3 Mike 35 NaN

Пример 2: Объединение данных на основе индекса

import pandas as pd
# Создание первого DataFrame
data1 = {
'name': ['John', 'Kate', 'Mike'],
'age': [25, 30, 35]
}
df1 = pd.DataFrame(data1, index=[1, 2, 3])
# Создание второго DataFrame
data2 = {
'department': ['HR', 'IT', 'Marketing']
}
df2 = pd.DataFrame(data2, index=[1, 2, 4])
# Объединение данных на основе индексов с использованием join()
joined = df1.join(df2)
print(joined)

Результат:

name age department
1 John 25 HR
2 Kate 30 IT
3 Mike 35 NaN

Как видите из примеров, метод join() позволяет объединять данные на основе столбца ‘id’ или индекса. В обоих примерах сначала устанавливается соответствующий столбец или индекс как индекс для каждого DataFrame, а затем объединение выполняется с использованием метода join().

concat(): объединение данных по строкам или столбцам

Третий метод - это concat(). concat() позволяет объединять DataFrame по строкам или столбцам без каких-либо ключевых столбцов или индексов. Этот метод полезен, когда вам нужно просто объединить данные в один DataFrame.

Вот примеры использования метода concat():

Пример 1: Объединение данных по строкам

import pandas as pd
# Создание первого DataFrame
data1 = {
'name': ['John', 'Kate', 'Mike'],
'age': [25, 30, 35]
}
df1 = pd.DataFrame(data1)
# Создание второго DataFrame
data2 = {
'name': ['Tom', 'Jerry', 'Spike'],
'age': [20, 25, 30]
}
df2 = pd.DataFrame(data2)
# Объединение данных по строкам
concatenated = pd.concat([df1, df2])
print(concatenated)

Результат:

name age
0 John 25
1 Kate 30
2 Mike 35
0 Tom 20
1 Jerry 25
2 Spike 30

Пример 2: Объединение данных по столбцу

import pandas as pd
# Создание первого DataFrame
data1 = {
'name': ['John', 'Kate', 'Mike'],
}
df1 = pd.DataFrame(data1)
# Создание второго DataFrame
data2 = {
'age': [25, 30, 35]
}
df2 = pd.DataFrame(data2)
# Объединение данных по столбцу
concatenated = pd.concat([df1, df2], axis=1)
print(concatenated)

Результат:

name age
0 John 25
1 Kate 30
2 Mike 35

Как видите из примеров, метод concat() позволяет объединять данные по строкам или столбцам. В первом примере данные объединяются по строкам, а во втором по столбцам.

Заключение

В этом учебнике вы ознакомились с методами merge(), join() и concat() в pandas для объединения данных. Метод merge() позволяет объединять данные на основе общих столбцов или индексов, метод join() позволяет объединять данные на основе столбца или индекса, и метод concat() позволяет объединять данные по строкам или столбцам.

Вы можете использовать эти методы в своих проектах, чтобы объединить и лучше понять ваши данные при анализе в pandas.