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 に一意に出現するかを簡単に示します。