Hoe twee dataframes in panda's te vergelijken
Vaak ben je misschien geïnteresseerd in het vergelijken van de waarden tussen twee panda DataFrames om hun overeenkomsten en verschillen te ontdekken.
In deze tutorial wordt uitgelegd hoe u dit moet doen.
Voorbeeld: vergelijking van twee DataFrames in Panda’s
Stel dat we de volgende twee panda-dataframes hebben, die elk gegevens over vier basketbalspelers bevatten:
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
Voorbeeld 1: Ontdek of de twee DataFrames hetzelfde zijn.
We kunnen eerst uitzoeken of de twee DataFrames identiek zijn met behulp van de DataFrame.equals() functie:
#see if two DataFrames are identical df1. equals (df2) False
De twee DataFrames bevatten niet exact dezelfde waarden, dus retourneert deze functie correct False .
Voorbeeld 2: Zoek de verschillen in spelerstatistieken tussen de twee DataFrames.
We kunnen de verschillen tussen de assists en punten van elke speler vinden met behulp van de pandas subtract() functie:
#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
De manier om dit te interpreteren is:
- Speler A had hetzelfde aantal punten in beide DataFrames, maar hij had nog 3 assists in DataFrame 2.
- Speler B had 9 punten meer en 2 assists meer in DataFrame 2 vergeleken met DataFrame 1.
- Speler C had 9 punten meer en 3 assists meer in DataFrame 2 vergeleken met DataFrame 1.
- Speler D had 5 punten meer en 5 assists meer in DataFrame 2 vergeleken met DataFrame 1.
Voorbeeld 3: Zoek alle rijen die alleen in één DataFrame bestaan.
We kunnen de volgende code gebruiken om een volledige lijst met rijen te krijgen die alleen in één DataFrame voorkomen:
#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
In dit geval delen de twee DataFrames geen identieke rijen, dus er zijn in totaal 8 rijen die slechts in één van de DataFrames voorkomen.
De kolom met het label „Exist“ vertelt ons handig in welke DataFrame elke rij uniek verschijnt.