Jak porównać dwie ramki danych w pandach


Często możesz być zainteresowany porównaniem wartości między dwiema ramkami DataFrame panda, aby dostrzec ich podobieństwa i różnice.

W tym samouczku wyjaśniono, jak to zrobić.

Przykład: porównanie dwóch ramek danych w Pandach

Załóżmy, że mamy dwie ramki danych pandy, z których każda zawiera dane dotyczące czterech koszykarzy:

 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

Przykład 1: Dowiedz się, czy dwie ramki danych są takie same.

Możemy najpierw sprawdzić, czy obie ramki DataFrame są identyczne, korzystając z funkcji DataFrame.equals() :

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

False

Dwie ramki danych nie zawierają dokładnie tych samych wartości, więc ta funkcja poprawnie zwraca False .

Przykład 2: Znajdź różnice w statystykach graczy pomiędzy dwiema ramkami DataFrame.

Możemy znaleźć różnice pomiędzy asystami i punktami każdego gracza za pomocą funkcji 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

Sposób interpretacji tego jest następujący:

  • Gracz A miał tę samą liczbę punktów w obu DataFrame, ale miał 3 asysty więcej w DataFrame 2.
  • Gracz B miał 9 punktów więcej i 2 asysty więcej w DataFrame 2 w porównaniu do DataFrame 1.
  • Gracz C miał 9 punktów więcej i 3 asysty więcej w DataFrame 2 w porównaniu do DataFrame 1.
  • Gracz D miał 5 punktów więcej i 5 asyst więcej w DataFrame 2 w porównaniu do DataFrame 1.

Przykład 3: Znajdź wszystkie wiersze, które istnieją tylko w jednej ramce danych.

Możemy użyć poniższego kodu, aby uzyskać pełną listę wierszy, które pojawiają się tylko w jednej ramce 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

W tym przypadku dwie ramki danych nie mają wspólnych wierszy, więc łącznie jest 8 wierszy, które pojawiają się tylko w jednej ramce danych.

Kolumna oznaczona „Istnieje” w wygodny sposób informuje nas, w której ramce danych pojawia się każdy wiersz.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *