Revista Informática

Uso de Eval en Pandas para analizar datos de forma sencilla

Publicado el 12 diciembre 2022 por Daniel Rodríguez @analyticslane
Uso de Eval en Pandas para analizar datos de forma sencilla

El método eval() de los DataFrames de Pandas permite indicar mediante una cadena de texto las operaciones que se desean realizar sobre las columnas del conjunto de datos. Con un funcionamiento similar al de método query(). Pudiendo combinar ambos para llevar a cabo operaciones complejas sobre los datos de los DataFrames de una forma relativamente sencilla. Veamos algunos de los usos de eval en Pandas para simplificar los procesos de análisis de datos.

Uso del método eval en Pandas

Los DataFrame de Pandas cuentan con el método eval() para indicar operaciones que se deben realizar sobre las columnas. El método recibe como parámetro obligatorio una cadena de texto con las operaciones a realizar y devuelve como salida un objeto con el resultado. Aunque, opcionalmente, se puede indicar que los resultados los guarda en el propio objeto mediante el parámetro inplace.

Uno de los usos más básicos de eval() puede ser la obtención de estadísticos básicos de los datos. Por ejemplo, el máximo y mínimo de una columna. Para ello se debe indicar en la cadena de texto el nombre de la columna, punto y la función. Pudiendo indicar tantas operaciones como se desee. Esto se puede ver en el siguiente ejemplo en el que se cargan los datos de exoplanetas de Seaborn y se obtienen los valores máximo y mínimo del periodo orbital.

import numpy as np
import pandas as pd
import seaborn as sb

planets = sb.load_dataset('planets')

planets.eval("orbital_period.max(), orbital_period.min()")
array([730000.0, 0.09070629], dtype=object)

Lo que sería equivalente a realizar la siguiente operación.

[max(planets.orbital_period), min(planets.orbital_period)]

Concatenación de métodos para realizar análisis complejos

Quizás el ejemplo anterior no sea una gran ventaja respecto a realizar los análisis normalmente en Python. Pero si se combinan varias instrucciones se pueden realizar análisis complejos de una forma más sencilla. Por ejemplo, los datos de periodos orbital están en días, pero si se desea realizar el análisis en horas solamente hay que multiplicar el valor por 24, lo que se puede hacer usando el método eval.

planets.eval("orbital_period = orbital_period * 24")

Ahora, si se combina esto con la operación anterior, se puede obtener los resultados en días.

planets.eval("orbital_period = orbital_period * 24").eval("orbital_period.max(), orbital_period.min()")
array([17520000.0, 2.17695096], dtype=object)

Uso conjunto con el método query()

Combinando lo visto hasta ahora con query, se puede realizar operaciones más complejas aún. Por ejemplo, realizar el análisis solamente para los datos que cumplen un criterio. Como en el siguiente ejemplo en el que se obtienen los máximos y mínimos para los planetas descubiertos en 2010 con una masa mayor que 0.05.

planets.query('year == 2010 and mass > 0.05').eval("orbital_period.max(), orbital_period.min()")
array([5584.0, 6.495], dtype=object)

Conclusiones

Se han visto algunas de las opciones que ofrece el método eval en Pandas. Un método que combinado con nuestra imaginación permite realizar análisis complejos en un par de líneas, especialmente si se combina con otros métodos como query.

Imagen de yatsusimnetcojp en Pixabay


Volver a la Portada de Logo Paperblog