Как сравнить два dataframe в pandas


Часто вам может быть интересно сравнить значения между двумя кадрами данных panda, чтобы выявить их сходства и различия.

В этом уроке объясняется, как это сделать.

Пример: сравнение двух DataFrame в Pandas

Предположим, у нас есть следующие два DataFrame 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. Узнайте, одинаковы ли два DataFrame.

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

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

False

Два DataFrame не содержат одни и те же значения, поэтому эта функция правильно возвращает False .

Пример 2. Найдите различия в статистике игроков между двумя DataFrame.

Мы можем найти разницу между передачами и очками каждого игрока, используя функцию 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, но в DataFrame 2 у него было на 3 передачи больше.
  • Игрок Б набрал на 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

В этом случае два DataFrame не имеют одинаковых строк, поэтому всего 8 строк появляются только в одном из DataFrames.

Столбец с надписью «Существует» удобно сообщает нам, в каком DataFrame уникально отображается каждая строка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *