Комплексное руководство по слиянию и объединению фреймов данных с Pandas в Python

Манипулирование и анализ данных являются важными задачами в любом проекте по науке о данных или анализе. В Python библиотека Pandas предоставляет мощные инструменты для обработки и манипулирования структурированными данными, включая слияние и соединение фреймов данных. Объединение фреймов данных — распространенная операция при работе с несколькими наборами данных или при агрегировании данных из разных источников. В этой статье мы рассмотрим различные методы слияния и соединения фреймов данных с помощью Pandas, а также примеры кода.

Содержание:

  1. Объединение кадров данных

  2. Объединение кадров данных в ключевом столбце

  3. Присоединение к фреймам данных на основе индекса

  4. Выполнение внутренних соединений

  5. Выполнение левого и правого соединения

  6. Выполнение внешних соединений

  7. Обработка повторяющихся имен столбцов

  8. Обработка пропущенных значений во время слияния/объединения

  9. Объединение фреймов данных.
    Функция concatв Pandas позволяет объединять несколько фреймов данных по определенной оси. Вот пример:

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': ['a', 'b', 'c']})
df2 = pd.DataFrame({'A': [4, 5, 6], 'B': ['d', 'e', 'f']})
result = pd.concat([df1, df2])
print(result)
  1. Объединение фреймов данных в ключевом столбце.
    Функция mergeв Pandas позволяет объединять фреймы данных на основе общего ключевого столбца. Вот пример:
import pandas as pd
df1 = pd.DataFrame({'Key': ['A', 'B', 'C'], 'Value': [1, 2, 3]})
df2 = pd.DataFrame({'Key': ['B', 'C', 'D'], 'Value': [4, 5, 6]})
result = pd.merge(df1, df2, on='Key')
print(result)
  1. Объединение фреймов данных на основе индекса:
    Pandas также поддерживает объединение фреймов данных на основе значений их индексов. Вот пример:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3]}, index=[10, 20, 30])
df2 = pd.DataFrame({'B': ['a', 'b', 'c']}, index=[20, 30, 40])
result = df1.join(df2)
print(result)
  1. Выполнение внутренних соединений.
    Внутреннее соединение возвращает только совпадающие записи из обоих фреймов данных. Вот пример:
import pandas as pd
df1 = pd.DataFrame({'Key': ['A', 'B', 'C'], 'Value': [1, 2, 3]})
df2 = pd.DataFrame({'Key': ['B', 'C', 'D'], 'Value': [4, 5, 6]})
result = pd.merge(df1, df2, on='Key', how='inner')
print(result)
  1. Выполнение левого и правого объединения.
    Левое и правое соединения включают все записи из левого или правого фрейма данных, а также соответствующие записи из другого фрейма данных. Вот пример:
import pandas as pd
df1 = pd.DataFrame({'Key': ['A', 'B', 'C'], 'Value': [1, 2, 3]})
df2 = pd.DataFrame({'Key': ['B', 'C', 'D'], 'Value': [4, 5, 6]})
left_join = pd.merge(df1, df2, on='Key', how='left')
right_join = pd.merge(df1, df2, on='Key', how='right')
print("Left Join:")
print(left_join)
print("Right Join:")
print(right_join)
  1. Выполнение внешних объединений.
    Внешнее объединение включает в себя все записи из обоих фреймов данных, заполняя недостающие значения значением NaN. Вот пример:
import pandas as pd
df1 = pd.DataFrame({'Key': ['A', 'B', 'C'], 'Value': [1, 2, 3]})
df2 = pd.DataFrame({'Key': ['B', 'C', 'D'], 'Value': [4, 5, 6]})
result = pd.merge(df1, df2, on='Key', how='outer')
print(result)
  1. Обработка повторяющихся имен столбцов.
    При слиянии или соединении фреймов данных с повторяющимися именами столбцов вы можете указать суффиксы, чтобы различать их. Вот пример:
import pandas as pd
df1 = pd.DataFrame({'Key': ['A', 'B', 'C'], 'Value': [1, 2, 3]})
df2 = pd.DataFrame({'Key': ['B', 'C', 'D'], 'Value': [4, 5, 6]})
result =pd.merge(df1, df2, on='Key', suffixes=('_df1', '_df2'))
print(result)
  1. Обработка пропущенных значений во время слияния/объединения:
    Pandas предоставляет возможности для обработки пропущенных значений во время операций слияния/объединения. Вы можете использовать how='inner', чтобы исключить строки с пропущенными значениями, или how='outer', чтобы включить их. Вот пример:
import pandas as pd
df1 = pd.DataFrame({'Key': ['A', 'B', 'C'], 'Value': [1, 2, 3]})
df2 = pd.DataFrame({'Key': ['B'], 'Value': [4]})
inner_merge = pd.merge(df1, df2, on='Key', how='inner')
outer_merge = pd.merge(df1, df2, on='Key', how='outer')
print("Inner Merge:")
print(inner_merge)
print("Outer Merge:")
print(outer_merge)

В этой статье мы рассмотрели несколько методов слияния и соединения фреймов данных с использованием библиотеки Pandas в Python. Мы рассмотрели конкатенацию, слияние ключевых столбцов, объединение по индексу и различные типы объединений, такие как внутреннее, левое, правое и внешнее. Мы также узнали, как обрабатывать повторяющиеся имена столбцов и пропущенные значения во время операций слияния/объединения. С помощью этих методов вы можете эффективно комбинировать и анализировать данные из нескольких источников, обеспечивая мощные возможности манипулирования и анализа данных в ваших проектах Python.