Pandas에서 두 dataframe을 비교하는 방법


종종 두 개의 Panda DataFrame 사이의 값을 비교하여 유사점과 차이점을 찾는 데 관심이 있을 수 있습니다.

이 튜토리얼에서는 이를 수행하는 방법을 설명합니다.

예: Pandas에서 두 DataFrame 비교

각각 네 명의 농구 선수에 대한 데이터를 포함하는 다음과 같은 두 개의 팬더 DataFrame이 있다고 가정합니다.

 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.equals() 함수를 사용하여 두 DataFrame이 동일한지 확인할 수 있습니다.

 #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

이를 해석하는 방법은 다음과 같습니다.

  • 플레이어 A는 두 DataFrame에서 동일한 점수를 얻었지만 DataFrame 2에서는 3개의 어시스트를 더 기록했습니다.
  • 선수 B는 DataFrame 1에 비해 DataFrame 2에서 9점 더 많은 포인트와 2개 더 많은 어시스트를 기록했습니다.
  • 플레이어 C는 DataFrame 1에 비해 DataFrame 2에서 9점 더 많은 포인트와 3개 더 많은 어시스트를 기록했습니다.
  • 선수 D는 DataFrame 1에 비해 DataFrame 2에서 5점 더 많은 포인트와 5개 더 많은 어시스트를 기록했습니다.

예시 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은 동일한 행을 공유하지 않으므로 DataFrame 중 하나에만 나타나는 총 8개의 행이 있습니다.

“Exist”라고 표시된 열은 각 행이 고유하게 나타나는 DataFrame을 편리하게 알려줍니다.

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다