En este artículo, vamos a ver cómo aumentar la velocidad de cálculo de los pandas utilizando la biblioteca modin. Modin es una biblioteca de python muy similar a pandas (casi idéntica en términos de sintaxis) capaz de manejar un gran conjunto de datos que no puede caber en la RAM de una sola vez. Los pandas son lo suficientemente buenos en términos de velocidad de ejecución para conjuntos de datos con un tamaño de MB y pocos GB, pero cuando se trata de conjuntos de datos realmente grandes, la velocidad para procesar los datos se convierte en un cuello de botella.
La biblioteca de Pandas fue diseñada para funcionar en un solo núcleo y, por lo tanto, con la potencia de cómputo de la era moderna, cada computadora portátil personal ahora viene con al menos 2 núcleos y Modin simplemente aprovecha esta oportunidad de ejecutar las operaciones en todos los núcleos disponibles, acelerando así todo el proceso.
Para instalar Modin y todas sus dependencias, use cualquiera de los siguientes comandos pip.
pip install modin[ray]
O,
pip install modin[dask]
O,
pip install modin[all]
Para limitar la cantidad de CPU a usar, podemos agregar las siguientes 2 líneas de código en su secuencia de comandos
import os # this specifies the number of # CPUs to use. os.environ["MODIN_CPUS"] = "2"
Ejemplo 1: operación de adición de marco de datos:
Las operaciones Append() son muy comunes en pandas y en el siguiente código aquí lo hemos demostrado ejecutándolo 10 veces usando pandas y Modin y cronometrándolo uno contra el otro para ver la diferencia de aceleración. Claramente, Modin supera a los pandas ya que usa todos los núcleos disponibles en mi sistema. También se usa el módulo de tiempo para medir la velocidad de las operaciones para compararlas entre sí, y resulta que Modin es 25 veces más rápido que los pandas en este caso.
Código:
Python3
import pandas as pd import modin.pandas as mpd import time start = time.time() # Creating a Custom Dataframe data = {'Name': ['Tom', 'nick', 'krish', 'jack', 'ash', 'singh', 'shilpa', 'nav'], 'Age': [20, 21, 19, 18, 6, 12, 18, 20]} df = pd.DataFrame(data) # Appending the dataframe to itself 10 times. for _ in range(10): df = df.append(df) end = time.time() print(f"Pandas Appending Time :{end-start}") start = time.time() modin_df = mpd.DataFrame(data) # Appending the dataframe to itself 10 times. for _ in range(10): modin_df = modin_df.append(modin_df) end = time.time() print(f"Modin Appending Time :{end-start}")
Salida :
Pandas Appending Time :0.682852745056152 Modin Appending Time :0.027661800384521484
Ejemplo 2: Modin es 4,4 veces más rápido que pandas.
Aquí estamos utilizando un archivo CSV de 602 MB de tamaño que se puede descargar desde este enlace . También renombré el archivo como demo.csv para que sea breve. En el siguiente código aquí, usamos el método fillna() que recorre todo el marco de datos y llena todos los valores de NaN con el valor deseado en mi ejemplo, es 0.
Código:
Python3
import pandas as pd import modin.pandas as mpd # Reading demo.csv file into pandas df df = pd.read_csv("demo.csv") s = time.time() df = df.fillna(value=0) e = time.time() print(f"Pandas fillna Time: {e-s}) # Reading demo.csv file into modin df modin_df = mpd.read_csv("demo.csv") s = time.time() modin_df = modin_df.fillna(value=0) e = time.time() print(f"Modin fillna Time: {e - s})
Salida :
Pandas fillna Time: 1.2 sec Modin fillna Time: 0.27 sec
Publicación traducida automáticamente
Artículo escrito por arun singh y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA