Cómo comparar dos DataFrames en Pandas

A menudo, es posible que le interese comparar los valores entre dos marcos de datos pandas para detectar sus similitudes y diferencias.

Este tutorial explica cómo hacerlo.

Ejemplo: comparar dos DataFrames en Pandas

Supongamos que tenemos los siguientes dos pandas DataFrames, cada uno de los cuales contiene datos sobre cuatro jugadores de baloncesto:

importar pandas como pd

#define DataFrame 1 
df1 = pd. DataFrame ({'jugador': ['A', 'B', 'C', 'D'],
                   'puntos': [12, 15, 17, 24],
                   'asiste': [4, 6, 7, 8]})
df1


        puntos de jugador asiste
0 A 12 4
1 B 15 6
2 C 17 7
3 D 24 88

#define DataFrame 2
 df2 = pd. DataFrame ({'jugador': ['A', 'B', 'C', 'D'],
                    'puntos': [12, 24, 26, 29],
                    'asiste': [7, 8, 10, 13]})
df2

	puntos de jugador asiste
0 A 12 7
1 B 24 8
2 C 26 10
3 D 29 13

Ejemplo 1: averigüe si los dos DataFrames son idénticos.

Primero podemos averiguar si los dos DataFrames son idénticos usando la función DataFrame.equals () :

#ver si dos DataFrames son idénticos 
df1. es igual a (df2)

Falso

Los dos DataFrames no contienen exactamente los mismos valores, por lo que esta función devuelve False correctamente .

Ejemplo 2: encuentre las diferencias en las estadísticas de los jugadores entre los dos DataFrames.

Podemos encontrar las diferencias entre las asistencias y los puntos para cada jugador usando la función pandas subtract () :

#Restar df1 de df2 
df2. set_index ('jugador'). restar (df1.set_index ('jugador'))

	puntos asiste
jugador		
A 0 3
B 9 2
C 9 3
D 5 5

La forma de interpretar esto es la siguiente:

  • El jugador A tuvo la misma cantidad de puntos en ambos DataFrames, pero tuvo 3 asistencias más en DataFrame 2.
  • El jugador B tuvo 9 puntos más y 2 asistencias más en DataFrame 2 en comparación con DataFrame 1.
  • El jugador C tuvo 9 puntos más y 3 asistencias más en DataFrame 2 en comparación con DataFrame 1.
  • El jugador D tuvo 5 puntos más y 5 asistencias más en DataFrame 2 en comparación con DataFrame 1.

Ejemplo 3: busque todas las filas que solo existen en un DataFrame.

Podemos usar el siguiente código para obtener una lista completa de filas que solo aparecen en un DataFrame:

#outer fusiona los dos DataFrames, agregando una columna indicadora llamada 'Exist' 
diff_df = pd. fusionar (df1, df2, cómo = ' exterior ', indicador = ' Existir ')

# encontrar qué filas no existen en ambos DataFrames
 diff_df = diff_df. loc [diff_df [' Exist ']! = ' both ']
diff_df

	puntos de jugador asiste existe
0 A 12 4 izquierda_sólo
1 B 15 6 izquierda_sólo
2 C 17 7 izquierda_sólo
3 D 24 8 izquierda_sólo
4 A 12 7 right_only
5 B 24 8 solo a la derecha
6 C 26 10 right_only
7 D 29 13 sólo a la derecha

En este caso, los dos DataFrames no comparten filas idénticas, por lo que hay 8 filas en total que solo aparecen en uno de los DataFrames.

La columna titulada «Exist» nos dice convenientemente en qué DataFrame aparece cada fila de forma única.

  • https://r-project.org
  • https://www.python.org/
  • https://www.stata.com/

Deja un comentario

Un valor atípico es una observación que se encuentra anormalmente alejada de otros valores en un conjunto de datos. Los…
statologos comunidad-2

Compartimos información EXCLUSIVA y GRATUITA solo para suscriptores (cursos privados, programas, consejos y mucho más)

You have Successfully Subscribed!