панди

Як приєднатися до фреймів даних у Pandas Python?

Як приєднатися до фреймів даних у Pandas Python?
Pandas DataFrame - це двовимірна (2D) структура даних, яка вирівняна у табличному форматі. Ці DataFrames можна комбінувати, використовуючи різні методи, такі як concat (), merge () та об'єднання. Панди мають високу продуктивність та повнофункціональні операції об’єднання, подібні до реляційної бази даних SQL. За допомогою функції злиття операції об’єднання можуть бути реалізовані між об’єктами DataFrames.

У цій статті ми розглянемо використання функції злиття, функції 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” - це назва стовпця, що використовується як ключ від правого DataFrame.

Для детальної розробки концепції приєднання 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 (
"Ідентифікатор": [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': ['Лахор', 'Ісламабад', 'Файсалабад', 'Карачі', 'Карачі', 'Ісламабад', 'Равалпінді', 'Ісламабад',
'Лахор']
)

Приєднуйтесь до фреймів даних за ключем

Ми можемо легко знайти товари, що продаються в Інтернеті, та клієнтів, які їх придбали. Отже, на основі ключа «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 (
"Ідентифікатор": [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 (
"Ідентифікатор": [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, customer, left_on = 'Product_Name', right_on = 'Product_Purchased'))

На екрані з'явиться такий вивід:

Приєднуйтесь до DataFrames, використовуючи How Argument

У наступних прикладах ми пояснимо чотири типи операцій Joins на Pandas DataFrames:

Внутрішнє приєднання до Панд

Ми можемо виконати внутрішнє з'єднання на декількох клавішах. Щоб відобразити докладнішу інформацію про продажі товару, візьміть 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 (
"Ідентифікатор": [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': ['Лахор', 'Ісламабад', 'Файсалабад', 'Карачі', 'Карачі', 'Ісламабад', 'Равалпінді', 'Ісламабад',
'Лахор']
)
друк (pd.злиття (товар, клієнт, як = 'внутрішній', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City']))

Наступний результат відображається у вікні після запуску вищевказаного коду:

Повне / зовнішнє приєднання до Pandas

Зовнішні приєднання повертають як правий, так і лівий значення 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 (
"Ідентифікатор": [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': ['Лахор', 'Ісламабад', 'Файсалабад', 'Карачі', 'Карачі', 'Ісламабад', 'Равалпінді', 'Ісламабад',
'Лахор']
)
друк (pd.злиття (продукт, клієнт, на = 'Product_ID', як = 'зовнішній'))

Встановіть для аргументу показника значення «True». Ви помітите, що в кінці додано новий стовпець "_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 (
"Ідентифікатор": [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': ['Лахор', 'Ісламабад', 'Файсалабад', 'Карачі', 'Карачі', 'Ісламабад', 'Равалпінді', 'Ісламабад',
'Лахор']
)
друк (pd.злиття (продукт, замовник, на = 'Product_ID', як = 'зовнішній', показник = True))

Як ви можете бачити на знімку екрана нижче, значення стовпців злиття пояснюють, який рядок належить до якого DataFrame.

Залишився приєднатися до Pandas

Ліве приєднання відображає лише відображувані рядки лівого DataFrame.  Це схоже на зовнішнє з'єднання. Отже, змініть значення аргументу «як» на «ліворуч». Спробуйте наступний код для реалізації ідеї Left join:

# імпорт бібліотеки 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 (
"Ідентифікатор": [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': ['Лахор', 'Ісламабад', 'Файсалабад', 'Карачі', 'Карачі', 'Ісламабад', 'Равалпінді', 'Ісламабад',
'Лахор']
)
друк (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 (
"Ідентифікатор": [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': ['Лахор', 'Ісламабад', 'Файсалабад', 'Карачі', 'Карачі', 'Ісламабад', 'Равалпінді', 'Ісламабад',
'Лахор']
)
друк (pd.злиття (продукт, замовник, на = 'Product_ID', як = 'правильно'))

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

Приєднання 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 (
"Ідентифікатор": [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': ['Лахор', 'Ісламабад', 'Файсалабад', 'Карачі', 'Карачі', 'Ісламабад', 'Равалпінді', 'Ісламабад',
'Лахор']
)
друк (pd.concat ([товар, замовник]))

Висновок:

У цій статті ми обговорили реалізацію функції merge (), функції concat () та операції приєднання в Pyndon Pandas. Використовуючи вищезазначені методи, ви можете легко приєднати два DataFrames і навчитися. як реалізувати операції об’єднання “внутрішні, зовнішні, ліві та праві” в Pandas. Сподіваємось, цей підручник допоможе вам у реалізації операцій об’єднання на різних типах DataFrames. Будь ласка, повідомте нам про свої труднощі у випадку будь-якої помилки.

Встановіть останню стратегічну гру OpenRA на Ubuntu Linux
OpenRA - це ігровий движок Libre / Free Real Time Strategy, який відтворює ранні ігри Вествуда, такі як класичний Command & Conquer: Red Alert. Пошире...
Встановіть найновіший емулятор Dolphin для Gamecube & Wii на Linux
Емулятор Dolphin дозволяє грати у вибрані вами ігри Gamecube та Wii на персональних комп’ютерах Linux (ПК). Будучи вільно доступним і відкритим ігров...
Як використовувати GameConqueror Cheat Engine в Linux
Стаття висвітлює посібник із використання механізму читів GameConqueror в Linux. Багато користувачів, які грають у ігри в Windows, часто використовуют...