панды

Как присоединиться к DataFrames в Pandas Python?

Как присоединиться к DataFrames в Pandas Python?
Pandas DataFrame - это двумерная (2D) структура данных, выровненная в табличном формате. Эти DataFrames можно комбинировать с помощью различных методов, таких как concat (), merge () и joins. Pandas обладают высокой производительностью и полнофункциональными операциями соединения, которые напоминают реляционную базу данных SQL. Используя функцию слияния, можно реализовать операции соединения между объектами DataFrames.

В этой статье мы рассмотрим использование функции слияния, функции concat и различных типов операций объединения в Python Pandas. Все примеры будут выполняться через редактор pycharm. Начнем с подробностей!

Использование функции слияния

Базовый часто используемый синтаксис функции merge () приведен ниже:

pd.слияние (df_obj1, df_obj2, how = 'inner', on = None, left_on = None, right_on = None)

Поясним детали параметров:

Первые два df_obj1 а также df_obj2 аргументы - это имена объектов или таблиц DataFrame.

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

Аргумент "на" содержит имя столбца, для которого выполняется операция соединения. Этот столбец должен присутствовать в обоих объектах DataFrame.

В аргументах «left_on» и «right_on» «left_on» - это имя имени столбца в качестве ключа в левом фрейме данных. «Right_on» - это имя столбца, используемого в качестве ключа от правого фрейма данных.

Чтобы разработать концепцию объединения DataFrames, мы взяли два объекта DataFrame - product и customer. В DataFrame продукта представлены следующие сведения:

product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)

Фрейм данных клиента содержит следующие сведения:

customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Имя клиента": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город-заказчик»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)

Присоединение к DataFrames по ключу

Мы легко можем найти товары, продаваемые в Интернете, и клиентов, которые их приобрели. Итак, на основе ключа Product_ID мы выполнили операцию внутреннего соединения для обоих DataFrames следующим образом:

# импортировать библиотеку Pandas
импортировать панд как pd
product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)
customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Customer_Name": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)
печать (pd.объединить (продукт, клиент, on = 'Product_ID'))

Следующий вывод отображается в окне после выполнения вышеуказанного кода:

Если столбцы в обоих DataFrames различаются, то явно укажите имя каждого столбца с помощью аргументов left_on и right_on следующим образом:

импортировать панд как pd
product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)
customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Customer_Name": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)
печать (pd.слияние (продукт, клиент, left_on = 'Product_Name', right_on = 'Product_Purchased'))

На экране появится следующий результат:

Присоединяйтесь к DataFrames, используя аргумент How

В следующих примерах мы объясним четыре типа операций объединения в Pandas DataFrames:

Внутреннее присоединение в пандах

Мы можем выполнить внутреннее соединение для нескольких ключей. Чтобы отобразить более подробную информацию о продажах продукта, возьмите Product_ID, Seller_City из фрейма данных продукта и Product_ID и «Customer_City» из фрейма данных клиента, чтобы определить, что либо продавец, либо покупатель принадлежат к одному городу. Реализуйте следующие строки кода:

# импортировать библиотеку Pandas
импортировать панд как pd
product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)
customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Имя клиента": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город-клиент»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)
печать (pd.merge (product, customer, how = 'inner', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City'])))

Следующий результат отображается в окне после выполнения вышеуказанного кода:

Полное / внешнее соединение в пандах

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

# импортировать библиотеку Pandas
импортировать панд как pd
product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)
customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Имя клиента": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город-заказчик»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)
печать (pd.merge (product, customer, on = 'Product_ID', how = 'outer'))

Установите аргумент индикатора как «Истина». Вы заметите, что в конце добавлен новый столбец «_merge».

# импортировать библиотеку Pandas
импортировать панд как pd
product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)
customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Имя клиента": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город-клиент»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)
печать (pd.merge (product, customer, on = 'Product_ID', how = 'outer', indicator = True))

Как вы можете видеть на скриншоте ниже, значения столбца слияния объясняют, какая строка принадлежит какому DataFrame.

Left Join в пандах

Левое соединение отображает только строки левого фрейма данных.  Это похоже на внешнее соединение. Итак, измените значение аргумента "как" на "влево". Попробуйте следующий код, чтобы реализовать идею левого соединения:

# импортировать библиотеку Pandas
импортировать панд как pd
product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)
customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Customer_Name": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город-клиент»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)
печать (pd.merge (product, customer, on = 'Product_ID', how = 'left'))

Право присоединиться к пандам

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

# импортировать библиотеку Pandas
импортировать панд как pd
product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)
customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Имя клиента": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город-заказчик»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)
печать (pd.merge (product, customer, on = 'Product_ID', how = 'right'))

На следующем снимке экрана вы можете увидеть результат после выполнения вышеуказанного кода:

Объединение DataFrames с помощью функции Concat ()

Два DataFrames можно объединить с помощью функции concat. Базовый синтаксис функции конкатенации приведен ниже:

pd.concat ([df_obj1, df_obj_2]))

Два объекта DataFrames будут переданы в качестве аргументов.

Давайте присоединимся как к продукту DataFrames, так и к клиенту через функцию concat. Выполните следующие строки кода, чтобы объединить два DataFrames:

# импортировать библиотеку Pandas
импортировать панд как pd
product = pd.DataFrame (
"Product_ID": [101,102,103,104,105,106,107],
"Product_Name": ["наушники", "сумка", "обувь", "смартфон", "щетка для зубов", "наручные часы", "ноутбук"],
"Категория": ["Электроника", "Мода", "Мода", "Электроника", "Бакалея", "Мода", "Электроника"],
"Цена": [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
"Город-продавец": ["Исламабад", "Лахор", "Карачи", "Равалпинди", "Исламабад", "Карачи", "Фейсалабад"]
)
customer = pd.DataFrame (
'ID': [1,2,3,4,5,6,7,8,9],
"Имя клиента": ["Сара", "Сана", "Али", "Раис", "Махвиш", "Умар", "Мирха", "Асиф", "Мария"],
"Возраст": [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
Product_Purchased: [наушники, нет данных, наручные часы, нет данных, обувь, смартфон, нет данных, нет данных, ноутбук],
«Город-клиент»: [«Лахор», «Исламабад», «Фейсалабад», «Карачи», «Карачи», «Исламабад», «Равалпинди», «Исламабад»,
"Лахор"]
)
печать (pd.concat ([продукт, заказчик]))

Заключение:

В этой статье мы обсудили реализацию функции merge (), функции concat () и операции объединения в Pandas python. Используя вышеуказанные методы, вы можете легко объединить два DataFrames и изучить. как реализовать операции соединения «внутренний, внешний, левый и правый» в Pandas. Надеюсь, это руководство поможет вам реализовать операции соединения для различных типов DataFrames. Пожалуйста, дайте нам знать о своих трудностях в случае ошибки.

Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...
Установите последнюю версию игры OpenRA Strategy в Ubuntu Linux
OpenRA - это игровой движок Libre / Free Real Time Strategy, воссоздающий ранние игры Westwood, такие как классическая Command & Conquer: Red Alert. Р...
Установите последнюю версию эмулятора Dolphin для Gamecube и Wii в Linux
Эмулятор Dolphin позволяет вам играть в выбранные вами игры Gamecube и Wii на персональных компьютерах (ПК) Linux. Являясь свободно доступным игровым...