Come confrontare due dataframe in panda


Spesso potresti essere interessato a confrontare i valori tra due DataFrames panda per individuare le loro somiglianze e differenze.

Questo tutorial spiega come farlo.

Esempio: confronto di due DataFrame in Panda

Supponiamo di avere i seguenti due DataFrames panda, ciascuno dei quali contiene dati su quattro giocatori di basket:

 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

Esempio 1: Scopri se i due DataFrame sono uguali.

Possiamo innanzitutto scoprire se i due DataFrame sono identici utilizzando la funzione DataFrame.equals() :

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

False

I due DataFrames non contengono esattamente gli stessi valori, quindi questa funzione restituisce correttamente False .

Esempio 2: trova le differenze nelle statistiche del giocatore tra i due DataFrames.

Possiamo trovare le differenze tra gli assist e i punti di ciascun giocatore utilizzando la funzione 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

Il modo di interpretarlo è:

  • Il giocatore A aveva lo stesso numero di punti in entrambi i DataFrame, ma aveva altri 3 assist in DataFrame 2.
  • Il giocatore B ha ottenuto 9 punti in più e 2 assist in più in DataFrame 2 rispetto a DataFrame 1.
  • Il giocatore C ha ottenuto 9 punti in più e 3 assist in più in DataFrame 2 rispetto a DataFrame 1.
  • Il giocatore D ha ottenuto 5 punti in più e 5 assist in più in DataFrame 2 rispetto a DataFrame 1.

Esempio 3: trova tutte le righe che esistono solo in un singolo DataFrame.

Possiamo utilizzare il seguente codice per ottenere un elenco completo di righe che appaiono solo in un singolo 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

In questo caso, i due DataFrames non condividono righe identiche, quindi ci sono 8 righe in totale che appaiono solo in uno dei DataFrames.

La colonna denominata “Esiste” ci dice convenientemente in quale DataFrame appare ogni riga in modo univoco.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *