Як порівняти два dataframes в pandas


Часто вам може бути цікаво порівняти значення між двома фреймами даних panda, щоб виявити їх подібність і відмінність.

Цей посібник пояснює, як це зробити.

Приклад: порівняння двох DataFrames у Pandas

Припустімо, що ми маємо наступні два фрейми даних panda, кожен з яких містить дані про чотирьох баскетболістів:

 import pandas as pd

#define DataFrame 1
df1 = pd. DataFrame ({'player': ['A', 'B', 'C', 'D'],
                   'points': [12, 15, 17, 24],
                   'assists': [4, 6, 7, 8]})
df1


        player points assists
0 to 12 4
1 B 15 6
2 C 17 7
3 D 24 88

#define DataFrame 2
df2 = pd. DataFrame ({'player': ['A', 'B', 'C', 'D'],
                    'points': [12, 24, 26, 29],
                    'assists': [7, 8, 10, 13]})
df2

	player points assists
0 to 12 7
1 B 24 8
2 C 26 10
3 D 29 13

Приклад 1: з’ясуйте, чи однакові два DataFrames.

Спочатку ми можемо з’ясувати, чи ідентичні два DataFrames, використовуючи функцію DataFrame.equals() :

 #see if two DataFrames are identical
df1. equals (df2)

False

Два DataFrames не містять однакові значення, тому ця функція правильно повертає False .

Приклад 2: Знайдіть різницю в статистиці гравців між двома DataFrames.

Ми можемо знайти різницю між передачами та очками кожного гравця за допомогою функції pandas subtract() :

 #subtract df1 from df2
df2. set_index ('player'). subtract (df1.set_index('player'))

	assist points
player		
At 0 3
B 9 2
C 9 3
D 5 5

Спосіб інтерпретації цього:

  • Гравець А мав однакову кількість очок в обох DataFrame, але він зробив на 3 передачі більше в DataFrame 2.
  • Гравець B мав на 9 очок більше та 2 результативних передач у DataFrame 2 порівняно з DataFrame 1.
  • Гравець C мав на 9 очок більше та 3 результативних передач у DataFrame 2 порівняно з DataFrame 1.
  • Гравець D мав на 5 очок і 5 передач більше у DataFrame 2 порівняно з DataFrame 1.

Приклад 3: знайдіть усі рядки, які існують лише в одному DataFrame.

Ми можемо використати наступний код, щоб отримати повний список рядків, які відображаються лише в одному DataFrame:

 #outer merge the two DataFrames, adding an indicator column called 'Exist'
diff_df = pd. merge (df1, df2, how=' outer ', indicator=' Exist ')

#find which rows don't exist in both DataFrames
diff_df = diff_df. loc [diff_df[' Exist '] != ' both ']
diff_df

	player points assists Exist
0 A 12 4 left_only
1 B 15 6 left_only
2 C 17 7 left_only
3 D 24 8 left_only
4 A 12 7 right_only
5 B 24 8 right_only
6 C 26 10 right_only
7 D 29 13 right_only

У цьому випадку два DataFrames не мають ідентичних рядків, тому загалом є 8 рядків, які з’являються лише в одному з DataFrames.

Стовпець із написом «Існувати» зручно повідомляє нам, у якому DataFrame унікально з’являється кожен рядок.

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *