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.

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert