Al trabajar con grandes conjuntos de datos conocer el espacio ocupa en memoria cada una de las características es clave. Especialmente cuando es necesario eliminar características para reducir el tamaño ocupado. La forma para obtener esta información en los DataFrame de Python es mediante el método memory_usage(), el cual permite evaluar y optimizar el uso de memoria en Pandas. En esta entrada se analizará cómo utilizar este método y se explicará por qué algunos datos pueden ocupar más espacio que otros.
memory_usageEn los DataFrame de Pandas, el método memory_usage() permite analizar el consumo de memoria que realiza cada una de las series del conjunto de datos. Información que se puede utilizar para reducir la huella de memoria. Algo que es especialmente útil cuando se trabaja con grandes conjuntos de datos y es necesario optimizar el rendimiento de los análisis y aplicaciones.
El método se puede llamar tal cual, simplemente escribiendo df.memory_usage(), donde df es el DataFrame que se desea analizar. Pero, en el caso de contar con objetos complejos, solamente ofrece una aproximación del uso de memoria. Para conseguir un análisis más preciso del uso de memoria se puede asignar en valor verdadero al parámetro deep, esto es llamar al método df.memory_usage(deep=True). Cuando se activa la opción deep evaluará el uso de memoria que hacen todos los registros del conjunto de datos.
La mejor manera de comprender el uso de memory_usage() es mediante un ejemplo práctico, para ello se usará el conjunto de datos “tips” de la biblioteca Seaborn. Para ello se debe importar la librería y cargar los datos. Una vez hecho esto, se puede llamar al método para conocer cuál es el uso de memoria de cada una de las columnas. Lo que se muestra en el siguiente ejemplo.
import seaborn as sns
import pandas as pd
# Cargar el conjunto de datos de ejemplo de Seaborn
tips = sns.load_dataset('tips')
# Obtener el uso de memoria del DataFrame
tips.memory_usage() Index 132 total_bill 1952 tip 1952 sex 368 smoker 368 day 448 time 368 size 1952 dtype: int64
En donde se puede ver como las columnas que más espacio ocupan son total_bill, tip y size, los valores reales. Pero, como se ha comentado antes, esto es una aproximación si se indica la opción deep=True en el método los resultados cambiarán.
# Obtener el uso de memoria en detalle del DataFrame tips.memory_usage(deep=True)
Index 132 total_bill 1952 tip 1952 sex 476 smoker 471 day 657 time 477 size 1952 dtype: int64
Nótese como para las columnas que son de tipo texto el valor cambia, esto es así porque en caso anterior solamente utilizo algunos valores para calcular el tamaño. Lo que ofrece una aproximación, pero no un valor exacto.
El resultado obtenido en la sección anterior se puede utilizar para identificar las columnas que más memoria consumen. En el caso anterior el conjunto de datos era pequeño y esto se puede hacer a mano, pero en uno con más columnas lo mejor es ordenar los resultados. Lo que se puede conseguir mediante el método sort_values().
# Obtener el uso de memoria del DataFrame ordenado tips.memory_usage(deep=True).sort_values(ascending=False)
total_bill 1952 tip 1952 size 1952 day 657 time 477 sex 476 smoker 471 Index 132 dtype: int64
Un resultado que nos facilita la selección de las columnas que se deben eliminar.
En esta entrada se ha visto el funcionamiento del método memory_usage() con el cual se puede conocer la memoria usada por cada una de las columnas de un conjunto de datos. Una información que se puede usar para optimizar el uso de memoria en Pandas.
Imagen de Cliff Smith en Pixabay
En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…
En la serie Creación de una API REST con Express y TypeScript construimos una API…
Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…
En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…
Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…
En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…
This website uses cookies.