¿Cómo comparar dos marcos de datos con Pandas Compare?
Si trabaja con análisis de datos o ciencia de datos, entonces ya conoce la importancia de comparar DataFrames. Afortunadamente, la biblioteca de Python, pandas, ofrece un práctico método de "comparación" que le permite comparar dos DataFrames y resaltar sus diferencias. Este método es increíblemente útil para identificar discrepancias entre conjuntos de datos y tomar decisiones informadas basadas en esas diferencias.
En este artículo, exploraremos cómo usar pandas compare para comparar dos DataFrames y profundizaremos en algunas de las opciones de personalización disponibles. Ya sea que sea un analista de datos experimentado o un novato, este artículo le brindará el conocimiento que necesita para que Pandas utilice la comparación de manera efectiva y segura.
Sintaxis básica
La sintaxis básica de la función comparar() es la siguiente:
df1.compare(df2, **kwargs)
donde df1 y df2 son los dos marcos de datos que queremos comparar. El argumento **kwargs permite pasar varias opciones y parámetros a la función.
Ejemplo
Comencemos con un ejemplo simple. Supongamos que tenemos dos marcos de datos, df1 y df2, como se muestra a continuación:
import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [1, 2, 4], 'B': [4, 5, 7]})
Los dos marcos de datos tienen las mismas columnas pero valores diferentes. Podemos usar la función compare() para comparar estos dos marcos de datos de la siguiente manera:
comparison = df1.compare(df2)
print(comparison)
Producción
Esto generará el siguiente resultado:
A B
-3 6 7
+4 0 1
El resultado muestra variaciones entre los dos marcos de datos. Las entradas de −3 y 6 debajo de la columna A significan que el valor en df2 es 3 menor que df1, mientras que las entradas de +4 y 0 debajo de la columna A indican que el valor en df2 es 4 mayor que df1. En consecuencia, las entradas de 7 y 1 en la columna B indican que el valor en df2 es 1 mayor que df1.
Ejemplo
Aquí hay un ejemplo más de cómo comparar dos marcos de datos usando la función pandas compare():
import pandas as pd
# Create two dataframes to compare
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [1, 2, 4], 'B': [4, 5, 7]})
# Compare the two dataframes using the compare() function
comparison = df1.compare(df2)
# Print the comparison
print(comparison)
Producción
Esto generará el siguiente resultado:
A
2 3 B
-3 0 6
+4 0 7
La función compare() genera un nuevo marco de datos que muestra las diferencias entre df1 y df2. El marco de datos resultante antepone las filas con - para indicar que los valores correspondientes están presentes en df1 pero no en df2. Sin embargo, las filas con el prefijo + indican que los valores correspondientes están presentes en df2 pero no en df1. Además, los encabezados de las columnas con diferencias se incluyen en el marco de datos resultante para mayor claridad.
Parámetros y opciones
La función compare() tiene varios parámetros y opciones que permiten una mayor flexibilidad al comparar marcos de datos. Echemos un vistazo a algunos de estos.
'Mantener_forma'
El parámetro keep_shape controla si los marcos de datos comparados deben tener la misma forma. De forma predeterminada, este parámetro está establecido en Verdadero, lo que significa que los marcos de datos comparados deben tener la misma cantidad de filas y columnas. Si se establece en Falso, la función comparará solo las columnas comunes e ignorará las columnas adicionales en cualquiera de los marcos de datos.
Ejemplo
Aquí hay un ejemplo
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [1, 2, 4], 'B': [4, 5, 7], 'C': [8, 9, 10]})
comparison = df1.compare(df2, keep_shape=False)
print(comparison)
Producción
Esto generará el siguiente resultado:
A B
-3 6 7
+4 0 1
Observe que se ignora la columna adicional C en df2.
'mantener_igual'
El parámetro keep_equal es responsable de determinar si los marcos de datos comparados deben contener valores equivalentes en las columnas comparadas. De forma predeterminada, este parámetro está establecido en False, lo que implica que la función compare() considerará dos valores como equivalentes, incluso si tienen tipos distintos (como 1 y 1.0). Sin embargo, si keep_equal se establece en True, la función compare() solo considerará equivalentes los valores con tipos coincidentes.
Ejemplo
Aquí hay un ejemplo:
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [1.0, 2, 4], 'B': [4, 5, 7]})
comparison = df1.compare(df2, keep_equal=True)
print(comparison)
Producción
Esto generará el siguiente resultado:
A
1 2 3
+1 0 0
-0 0 0
Vale la pena señalar que al comparar dos marcos de datos usando la función comparar(), los valores en una columna que tengan diferentes tipos no se considerarán iguales. Por ejemplo, al comparar df1 y df2, el +1 ubicado debajo de la segunda fila de la columna A indica que el valor en df2 es uno más que el de df1. Esto se debe a que el valor en df2 es un valor flotante, mientras que el valor en df1 es un número entero. De manera similar, el −0 debajo de la tercera fila de la columna A indica que el valor en df2 es cero menor que el de df1, ya que el valor en df2 es un número entero, mientras que el valor en df1 es un flotante.
'mantener_forma' y 'mantener_igual'
Los parámetros keep_shape y keep_equal se pueden usar juntos para controlar tanto la forma como la igualdad de los marcos de datos comparados. Por ejemplo:
Ejemplo
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df2 = pd.DataFrame({'A': [1.0, 2, 4], 'B': [4, 5, 7], 'C': [8, 9, 10]})
comparison = df1.compare(df2, keep_shape=False, keep_equal=True)
print(comparison)
Producción
Esto generará el siguiente resultado:
A
1 2 3
+1 0 0
-0 0 0
Observe que la columna C adicional en df2 se ignora y los valores de la columna A que tienen diferentes tipos no se consideran iguales.
Conclusión
En resumen, la biblioteca Pandas ofrece una función útil conocida como "comparar", que permite a los analistas de datos y científicos identificar y enfatizar rápidamente las diferencias entre dos DataFrames. El método "comparar" proporciona flexibilidad para personalizar el proceso de comparación según requisitos específicos. Además, Pandas ofrece una amplia gama de otros métodos y herramientas para satisfacer diferentes necesidades de manipulación y análisis de datos. Por lo tanto, perfeccionar las habilidades en Pandas puede ser una ventaja significativa para los profesionales de datos que buscan manejar y analizar de manera eficiente grandes conjuntos de datos.