Як об’єднати два кадри даних у Python – Pandas?
У багатьох ситуаціях реального життя дані, які ми хочемо використовувати, надходять у кількох файлах. Нам часто потрібно об’єднати ці файли в один DataFrame для аналізу даних. Panda надає такі засоби для легкого поєднання Series або DataFrame з різними видами встановленої логіки для індексів і функцій реляційної алгебри у випадку операцій типу об’єднання/злиття. Ми також можемо об’єднати дані з кількох таблиць панди . Крім того, pandas також надає утиліти для порівняння двох серій або DataFrame і узагальнення їхніх відмінностей.
Конкатенація DataFrames у Pandas
Функція concat() у Pandas використовується для додавання стовпців або рядків з одного DataFrame до іншого. The Функція Pandas concat(). виконує всю важку роботу, пов’язану з виконанням операцій конкатенації вздовж осі, одночасно виконуючи необов’язкову логіку набору (об’єднання або перетину) індексів (якщо такі є) на інших осях.
Python3
import> pandas as pd> # First DataFrame> df1> => pd.DataFrame({> 'id'> : [> 'A01'> ,> 'A02'> ,> 'A03'> ,> 'A04'> ],> > 'Name'> : [> 'ABC'> ,> 'PQR'> ,> 'DEF'> ,> 'GHI'> ]})> # Second DataFrame> df2> => pd.DataFrame({> 'id'> : [> 'B05'> ,> 'B06'> ,> 'B07'> ,> 'B08'> ],> > 'Name'> : [> 'XYZ'> ,> 'TUV'> ,> 'MNO'> ,> 'JKL'> ]})> frames> => [df1, df2]> result> => pd.concat(frames)> display(result)> |
Вихід:
id Name 0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL
Об’єднання DataFrames у Pandas
Коли ми об’єднували наші DataFrames, ми просто додавали їх один до одного, тобто складали вертикально або пліч-о-пліч. Інший спосіб об’єднати DataFrames — використовувати стовпці в кожному наборі даних, які містять спільні значення (загальний унікальний ідентифікатор). Об’єднання DataFrames за допомогою спільного поля називається об’єднанням. Стовпці, що містять спільні значення, називаються ключем(ами) об’єднання. Об’єднання DataFrame у такий спосіб часто корисно, коли один DataFrame є таблицею пошуку, що містить додаткові дані, які ми хочемо включити в інший.
Примітка: Цей процес об’єднання таблиць подібний до того, що ми робимо з таблицями в База даних SQL .
Під час склеювання кількох DataFrames ви можете вибрати, як обробляти інші осі (окрім тієї, що об’єднується). Це можна зробити двома способами:
- Візьміть об’єднання їх усіх, join=’outer’. Це параметр за замовчуванням, оскільки він призводить до нульової втрати інформації.
- Поїдьте на перехресті, приєднайтеся=’внутрішній’.
Приклад: внутрішнє з’єднання двох фреймів даних за допомогою методу concat().
У цьому прикладі два панди DataFrames, df1> і df3> , об’єднуються за допомогою внутрішнього об’єднання на основі їхніх індексів. Результуючий DataFrame під назвою «результат» містить лише рядки, де міститься стовпець «ідентифікатор». df1> відповідає стовпцю «Місто» в df3> .
Python3
import> pandas as pd> df1> => pd.DataFrame({> 'id'> : [> 'A01'> ,> 'A02'> ,> 'A03'> ,> 'A04'> ],> > 'Name'> : [> 'ABC'> ,> 'PQR'> ,> 'DEF'> ,> 'GHI'> ]})> df3> => pd.DataFrame({> 'City'> : [> 'MUMBAI'> ,> 'PUNE'> ,> 'MUMBAI'> ,> 'DELHI'> ],> > 'Age'> : [> '12'> ,> '13'> ,> '14'> ,> '12'> ]})> # the default behaviour is join='outer'> # inner join> result> => pd.concat([df1, df3], axis> => 1> , join> => 'inner'> )> display(result)> |
Вихід:
id Name City Age 0 A01 ABC MUMBAI 12 1 A02 PQR PUNE 13 2 A03 DEF MUMBAI 14 3 A04 GHI DELHI 12
Конкатенація за допомогою функції append().
Корисним ярликом для concat() є метод екземпляра append() у Series і DataFrame. Цей метод можна використовувати для об’єднання даних із кількох таблиць у Pandas. Ці методи фактично передували concat.
Приклад 1: Об’єднання двох DataFrame за допомогою методу append().
У цьому прикладі два Pandas DataFrames, df1> і df2> , поєднуються за допомогою append> метод, у результаті чого створюється новий DataFrame під назвою «результат». Отриманий DataFrame містить усі рядки з обох df1> і df2> , з безперервним індексом.
Python3
import> pandas as pd> # First DataFrame> df1> => pd.DataFrame({> 'id'> : [> 'A01'> ,> 'A02'> ,> 'A03'> ,> 'A04'> ],> > 'Name'> : [> 'ABC'> ,> 'PQR'> ,> 'DEF'> ,> 'GHI'> ]})> # Second DataFrame> df2> => pd.DataFrame({> 'id'> : [> 'B05'> ,> 'B06'> ,> 'B07'> ,> 'B08'> ],> > 'Name'> : [> 'XYZ'> ,> 'TUV'> ,> 'MNO'> ,> 'JKL'> ]})> # append method> result> => df1.append(df2)> display(result)> |
Вихід:
id Name 0 A01 ABC 1 A02 PQR 2 A03 DEF 3 A04 GHI 0 B05 XYZ 1 B06 TUV 2 B07 MNO 3 B08 JKL
Примітка: append() може приймати декілька об’єктів для конкатенації.
Приклад 2: об’єднання даних із кількох таблиць у Pandas
У цьому прикладі три Pandas DataFrames, df1> , df2> , і df3> , додаються разом за допомогою append> метод. Отриманий DataFrame під назвою «результат» об’єднує всі рядки з трьох DataFrame, зберігаючи безперервний індекс.
Python3
import> pandas as pd> # First DataFrame> df1> => pd.DataFrame({> 'id'> : [> 'A01'> ,> 'A02'> ,> 'A03'> ,> 'A04'> ],> > 'Name'> : [> 'ABC'> ,> 'PQR'> ,> 'DEF'> ,> 'GHI'> ]})> # Second DataFrame> df2> => pd.DataFrame({> 'id'> : [> 'B05'> ,> 'B06'> ,> 'B07'> ,> 'B08'> ],> > 'Name'> : [> 'XYZ'> ,> 'TUV'> ,> 'MNO'> ,> 'JKL'> ]})> df3> => pd.DataFrame({> 'City'> : [> 'MUMBAI'> ,> 'PUNE'> ,> 'MUMBAI'> ,> 'DELHI'> ],> > 'Age'> : [> '12'> ,> '13'> ,> '14'> ,> '12'> ]})> # appending multiple DataFrame> result> => df1.append([df2, df3])> display(result)> |
Вихід:
id Name City Age 0 A01 ABC NaN NaN 1 A02 PQR NaN NaN 2 A03 DEF NaN NaN 3 A04 GHI NaN NaN 0 B05 XYZ NaN NaN 1 B06 TUV NaN NaN 2 B07 MNO NaN NaN 3 B08 JKL NaN NaN 0 NaN NaN MUMBAI 12 1 NaN NaN PUNE 13 2 NaN NaN MUMBAI 14 3 NaN NaN DELHI 12