Pandas で 2 つの dataframe を比較する方法


多くの場合、2 つのパンダ DataFrame 間の値を比較して、その類似点と相違点を特定することに興味があるかもしれません。

このチュートリアルではその方法を説明します。

例: Pandas での 2 つの DataFrame の比較

次の 2 つのパンダ DataFrame があり、それぞれに 4 人のバスケットボール選手に関するデータが含まれているとします。

 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: 2 つの DataFrame が同じかどうかを確認します。

まず、 DataFrame.equals()関数を使用して、2 つの DataFrame が同一かどうかを確認します。

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

False

2 つの DataFrame にはまったく同じ値が含まれていないため、この関数は正しくFalseを返します。

例 2: 2 つの DataFrame 間のプレーヤー統計の違いを見つけます。

pandassubtract()関数を使用して、各プレーヤーのアシストとポイントの差を見つけることができます。

 #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 は、データフレーム 1 と比較して、データフレーム 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

この場合、2 つの DataFrame は同一の行を共有していないため、DataFrame の 1 つにのみ表示される合計 8 行があります。

「Exist」というラベルの付いた列は、各行がどの DataFrame に一意に出現するかを簡単に示します。

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です