В тази статия ще разгледаме употребите на функцията за сливане, функцията concat и различни типове операции на обединяване в Pandas python. Всички примери ще бъдат изпълнени чрез редактора на pycharm. Нека започнем с подробностите!
Използване на функция за сливане
Основният често използван синтаксис на функцията merge () е даден по-долу:
pd.обединяване (df_obj1, df_obj2, how = 'вътрешен', on = None, left_on = None, right_on = None)Нека да обясним подробностите за параметрите:
Първите две df_obj1 и df_obj2 аргументите са имената на обектите или таблиците на DataFrame.
„какПараметърът се използва за различни видове операции на съединяване като „ляво, дясно, външно и вътрешно“. Функцията за сливане по подразбиране използва операция за вътрешно съединяване.
Аргументът "На" съдържа името на колоната, върху която се извършва операцията за присъединяване. Тази колона трябва да присъства и в двата обекта DataFrame.
В аргументите „left_on“ и „right_on“ „left_on“ е името на името на колоната като ключ в левия DataFrame. „Right_on“ е името на колоната, използвана като ключ от дясната рамка на данни.
За да разработим концепцията за присъединяване към DataFrames, взехме два обекта на DataFrame - продукт и клиент. Следните подробности присъстват в продукта DataFrame:
продукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
Клиентът DataFrame съдържа следните подробности:
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Лахор“]
)
Присъединете се към DataFrames на ключ
Лесно можем да намерим продукти, продавани онлайн, и клиентите, които са ги закупили. И така, въз основа на ключ “Product_ID”, ние извършихме операция за вътрешно обединяване на двата DataFrames, както следва:
# импортиране на библиотека Pandasимпортирайте панди като pd
продукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
„Град“: [„Лахор“, „Исламабад“, „Файсалабад“, „Карачи“, „Карачи“, „Исламабад“, „Равалпинди“, „Исламабад“,
„Лахор“]
)
печат (pd.обединяване (продукт, клиент, на = 'Product_ID'))
Следният изход се показва на прозореца след стартиране на горния код:
Ако колоните са различни в двата DataFrames, тогава изрично напишете името на всяка колона от аргументите left_on и right_on, както следва:
импортирайте панди като pdпродукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
„Град“: [„Лахор“, „Исламабад“, „Файсалабад“, „Карачи“, „Карачи“, „Исламабад“, „Равалпинди“, „Исламабад“,
„Лахор“]
)
печат (pd.обединяване (продукт, клиент, left_on = 'Product_Name', right_on = 'Product_Purchased'))
Следният изход ще се покаже на екрана:
Присъединете се към DataFrames, използвайки How Argument
В следващите примери ще обясним четири типа операции за присъединяване на Pandas DataFrames:
- Вътрешно присъединяване
- Външно присъединяване
- Ляво присъединяване
- Правилно присъединяване
Вътрешно присъединяване в Pandas
Можем да изпълним вътрешно съединение на множество клавиши. За да покажете повече подробности за продажбите на продукта, вземете Product_ID, Seller_City от продукта DataFrame и Product_ID и „Customer_City“ от клиента DataFrame, за да установите, че или продавачът, или клиентът принадлежи към същия град. Внедрете следните редове код:
# импортиране на библиотека Pandasимпортирайте панди като pd
продукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Лахор“]
)
печат (pd.обединяване (продукт, клиент, как = 'вътрешен', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City']))
Следният резултат се показва на прозореца след стартиране на горния код:
Пълно / външно присъединяване в Pandas
Външните обединения връщат както дясната, така и лявата стойност на DataFrames, които имат съвпадения. Така че, за да приложите външното присъединяване, задайте аргумента „как“ като външен. Нека модифицираме горния пример, като използваме концепцията за външно присъединяване. В кода по-долу той ще върне всички стойности както на левия, така и на десния DataFrames.
# импортиране на библиотека Pandasимпортирайте панди като pd
продукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Лахор“]
)
печат (pd.обединяване (продукт, клиент, на = 'Product_ID', как = 'външен'))
Задайте аргумента на индикатора като „True“ s. Ще забележите, че новата колона “_merge” е добавена в края.
# импортиране на библиотека Pandasимпортирайте панди като pd
продукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Лахор“]
)
печат (pd.обединяване (продукт, клиент, на = 'Product_ID', как = 'външен', индикатор = Вярно))
Както можете да видите на екранната снимка по-долу, стойностите на колоната за сливане обясняват кой ред принадлежи към кой DataFrame.
Ляв член в Pandas
Лявото присъединяване показва само редове на левия DataFrame. Подобно е на външното съединение. Така че, променете стойността на аргумента „как“ с „ляво“. Опитайте следния код, за да реализирате идеята за ляво присъединяване:
# импортиране на библиотека Pandasимпортирайте панди като pd
продукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Лахор“]
)
печат (pd.обединяване (продукт, клиент, на = 'Product_ID', how = 'left'))
Право присъединяване в Pandas
Правото съединение запазва всички десни редове DataFrame вдясно, заедно с редовете, които също са често срещани в левия DataFrame. В този случай аргументът „как“ е зададен като „дясна“ стойност. Изпълнете следния код, за да приложите правилната концепция за присъединяване:
# импортиране на библиотека Pandasимпортирайте панди като pd
продукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Лахор“]
)
печат (pd.обединяване (продукт, клиент, on = 'Product_ID', how = 'right'))
На следващата екранна снимка можете да видите резултата след стартиране на горния код:
Обединяване на DataFrames с помощта на функцията Concat ()
Два DataFrames могат да бъдат обединени с помощта на функцията concat. Основният синтаксис на функцията за конкатенация е даден по-долу:
pd.concat ([df_obj1, df_obj_2]))Два обекта DataFrames ще преминат като аргументи.
Нека се присъединим както към продукта DataFrames, така и към клиента чрез функцията concat. Изпълнете следните редове код, за да се присъедините към два DataFrames:
# импортиране на библиотека Pandasимпортирайте панди като pd
продукт = 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],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
клиент = 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“: [„слушалки“, „NA“, „ръчен часовник“, „NA“, „Обувки“, „Смартфон“, „NA“, „NA“, „Лаптоп“],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
„Лахор“]
)
печат (pd.concat ([продукт, клиент]))
Заключение:
В тази статия обсъдихме изпълнението на функцията merge (), функциите concat () и присъединяването в Pandas python. Използвайки горните методи, можете лесно да се присъедините към два DataFrames и научени. как да приложим операциите за присъединяване „вътрешна, външна, лява и дясна“ в Pandas. Надяваме се, че този урок ще ви насочи при изпълнението на операциите за обединяване на различни видове DataFrames. Моля, уведомете ни за вашите трудности в случай на грешка.