Cómo comparar dos DataFrames en Pandas

Puedes opinar sobre este contenido:
  • 0
  • 0
  • 0
  • 0

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/

Redactor del artículo

  • Luis Benites
    Director de Statologos.com

    Tengo una Maestría en Ciencias en Estadística Aplicada y he trabajado en algoritmos de aprendizaje automático para empresas profesionales tanto en el sector de la salud como en el comercio minorista.

    Ver todas las entradas

¿Te hemos ayudado?

Ayudanos ahora tú, dejanos un comentario de agradecimiento, nos ayuda a motivarnos y si te es viable puedes hacer una donación:

La ayuda no cuesta nada

Por otro lado te rogamos que compartas nuestro sitio con tus amigos, compañeros de clase y colegas, la educación de calidad y gratuita debe ser difundida, recuerdalo:

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!