• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Herramientas
    • Método D’Hondt – Atribución de escaños
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad
    • Tiendas afiliadas
      • AliExpress
      • Amazon
      • Banggood
      • GeekBuying
      • Lenovo

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • Python
  • Pandas
  • NumPy
  • Matlab
  • Julia
  • Excel
  • IA Generativa

Mejora del rendimiento de pandas con Modin

abril 1, 2019 Por Daniel Rodríguez Deja un comentario
Tiempo de lectura: 4 minutos

Una de las bibliotecas más utilizada para la manipulación y análisis de datos en Python es pandas. Con ella es posible manipular tablas y series temporales. Además, ofrece la posibilidad de importar datos desde archivos CSV o Excel para su posterior manipulación. Al trabajar con grandes conjuntos de datos el tiempo de procesado puede ser un problema. Por lo que cualquier mejora del rendimiento de pandas es siempre interesante. Un paquete que promete mejorar el rendimiento de pandas es modin, en esta entrada se va a probar si esto es así.

Instalación de Modin

La instalación de Modin se puede realizar a través de pip como la mayoría de las librerías de Python. La instalación solamente requiere que se escriba en la terminal el siguiente comando.

pip install modin

Modin acelerar el rendimiento de los objetos DataFrame mediante la paralelización de las tareas. Una de sus grandes ventajas es que puede reemplazar a pandas y funcionar con el mismo código. Por lo que cambiar de pandas a Modin solo requiere cambiar la línea en la que se importa la librería.

Publicidad


Evaluación de la mejora del rendimiento de pandas con Modin

La mejora del rendimiento que ofrece Modin dependerá del número de núcleos del ordenador en el que se ejecute. Esperándose un factor de mejora igual al de núcleos disponibles. Una forma de comprobar esto es ver cómo mejora la carga de archivos con Modin respecto a pandas.

Análisis de Redes con Python
En Analytics Lane
Análisis de Redes con Python

Para ello se procederá a importar archivos de diferente tamaño con pandas y Modin. Cada uno de los archivos se importará cinco veces y se medirá su tiempo medio de carga.

Carga de archivos con pandas

La carga de los archivos con pandas se puede realizar y medir con el siguiente código.

from timeit import default_timer as timer
import pandas as pd

files = ['001Mb.csv', '006Mb.csv', '015Mb.csv', '033Mb.csv',
         '090Mb.csv', '271Mb.csv', '723Mb.csv']
sizes = [1, 6, 15, 33, 90, 271, 723]

time = [ [] for i in range(len(files)) ]

for file in range (len(files)):
    for i in range(5):
        start = timer()
        df = pd.read_csv(files[file])
        end = timer()
        time[file].append((end - start)) 

pandas = [sum(t)/len(t) for t in time]

En este se carga cada uno de los archivos cinco veces y se calcula el tiempo necesario para ello. Este tiempo se agrega a un vector y finalmente se calcula la media para cada uno de los archivos.

Publicidad


Carga de archivos con Modin

La carga de los archivos con Modin solamente requiere cambiar una línea de código. En lugar de importar pandas se ha de importar modin.pandas. Esto es lo que se muestra en el siguiente código.

import modin.pandas as pd

time = [ [] for i in range(len(files)) ]

for file in range (len(files)):
    for i in range(5):
        start = timer()
        df = pd.read_csv(files[file])
        end = timer()
        time[file].append((end - start)) 

modin = [sum(t)/len(t) for t in time]

Comparación de los resultados

La mejor forma de comprar los resultados es de forma gráfica. Simplemente representado el tiempo transcurrido con cada una de las librerías. También se puede comprobar cual ha sido la mejora, si esta existe, de utilizar Modin en lugar de pandas. Esto es lo que se hace con el siguiente código.

import matplotlib.pyplot as plt
import numpy as np

index = np.arange(len(sizes))
width = 0.35

fig, ax1 = plt.subplots()

ax1.bar(index, pandas, width, label='pandas')
ax1.bar(index + width, modin, width, label='modin')
ax2 = ax1.twinx()
plt.plot(index, [ m/p for m, p in zip(modin, pandas) ])

ax1.set_xlabel(u'Tamaño (Mb)')
ax1.set_ylabel(u'Tiempo (s)')
ax2.set_ylabel(u'modin / pandas')
ax1.legend()
plt.xticks(index, sizes)

plt.show()

Obteniéndose la siguiente gráfica.

Comparación de la carga de archivos en Modin frente a pandas
Comparación de la carga de archivos en Modin frente a pandas

En esta se puede ver el tiempo necesario para importar los diferentes archivos. Además, en el eje de la derecha se puede apreciar la ratio entre el tiempo que necesita Modin y pandas. Lo primero que se puede apreciar es que, con archivos pequeños, aproximadamente de 1 Mb, Modin es considerablemente más lento que pandas (tarda 12 veces). Pero eso ya cambia cuando el tamaño del archivo supera los 6 Mb. A partir de ahí la mejora que se obtiene es considerable. En la configuración utilizada, un procesador con dos núcleos, Modin tarda en importar los archivos menos de la mitad (0,47 veces) con los archivos más grandes.

Publicidad


Conclusiones

En esta entrada se ha comparado el rendimiento de dos librerías para trabajar con objetos DataFrame en Python: pandas y Modin. Observándose que se puede obtener una mejora del rendimiento de pandas con Modin en un factor proporcional a número de procesadores. Eso sí, cuando el tamaño del archivo supera un cierto límite. En las pruebas este ha sido de 6 Mb.

Así se puede concluir que Modin es una buena opción para reemplazar pandas cuando es necesario trabajar con archivos de cierto tamaño. Aunque, cuando se trabaja con archivos de tamaños modestos, por debajo del par de Mb, no es aconsejable.

Imágenes: Pixabay (Free-Photos)

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • ¡Nuevo video! 5 formas prácticas de obtener valores únicos en Pandas
  • 1100 publicaciones en Analytics Lane
  • ¡Nuevo video! Encuentra la posición en listas como un PRO
  • ¡Nuevo video! Iterar filas en Pandas sin romperte la cabeza
  • ¡Nuevo video! Gráficos de barras en Matplotlib sin complicarte

Publicado en: Python Etiquetado como: Pandas

Interacciones con los lectores

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

¡Nuevo video! Gráficos de barras en Matplotlib sin complicarte

julio 17, 2025 Por Daniel Rodríguez

¡Nuevo video! Iterar filas en Pandas sin romperte la cabeza

julio 15, 2025 Por Daniel Rodríguez

¡Nuevo video! Encuentra la posición en listas como un PRO

julio 10, 2025 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Obtención de valores únicos de una columna con Pandas publicado el mayo 8, 2019 | en Python
  • Cómo encontrar la posición de elementos en una lista de Python publicado el abril 12, 2021 | en Python
  • Combinar varios archivos Jupyter Notebook en uno publicado el noviembre 21, 2022 | en Python
  • Gráficos de barras en Matplotlib publicado el julio 5, 2022 | en Python
  • pandas Pandas: Cómo iterar sobre las filas de un DataFrame en Pandas publicado el septiembre 13, 2021 | en Python

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.5 (10)

Diferencias entre var y let en JavaScript

Publicidad

Comentarios recientes

  • Piera en Ecuaciones multilínea en Markdown
  • Daniel Rodríguez en Tutorial de Mypy para Principiantes
  • Javier en Tutorial de Mypy para Principiantes
  • javier en Problemas con listas mutables en Python: Cómo evitar efectos inesperados
  • soldado en Numpy básico: encontrar la posición de un elemento en un Array de Numpy

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2025 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto