Búsquedas rápidas utilizando Pandas en Python
Una línea de numpy que aumentará considerablemente la velocidad de las búsquedas dentro de columnas en Pandas.
Muchas veces tenemos que trabajar con Pandas y una de las tareas más comunes es la búsqueda dentro de una columna.
Para ello, lo más simple que podemos hacer es ejecutar la siguiente línea:
mask = df['column'] == 'Value'
df.loc[mask, 'column'] = 'NewValue'
Sin embargo, esta instrucción de Python es bastante lenta, sobre todo cuando estamos trabajando con DataFrames medianos o largos, y esto afecta a la performance general de todo nuestro proyecto.
NumPy al rescate
NumPy es mucho más rápido que Pandas para muchas tareas, en parte gracias a la vectorización y a que está escrito en lenguaje C.
Además, Pandas está construido sobre NumPy, por lo que podemos utilizar las funciones de NumPy para acelerar su funcionamiento. En este caso, utilizaremos la función np.in1d:
mask = np.in1d(df['column'], ['Value'])
df.loc[mask, 'column'] = 'NewValue'
Esta simple modificación de la búsqueda se ejecutará mucho más rápido que la búsqueda estándar de Pandas, y además nos permite también buscar varios valores a la vez añadiéndolos simplemente a la lista del segundo parámetro.
¿Quieres aprender más sobre preprocesar datos en Pandas?
Estoy escribiendo un libro sobre este tema. Su precio será de 30.00€, pero puedes obtener acceso instantáneo a cada capítulo que voy escribiendo pagando ahora 14.99€ (50% de descuento) para ayudarme mientras lo escribo.