"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > FireDucks: ¡Obtenga un rendimiento superior al de los pandas sin coste de aprendizaje!

FireDucks: ¡Obtenga un rendimiento superior al de los pandas sin coste de aprendizaje!

Publicado el 2024-11-06
Navegar:515

Pandas es una de las bibliotecas más populares. Cuando buscaba una manera más fácil de acelerar su rendimiento, ¡descubrí FireDucks y me interesé en ella!

Comparación con los pandas: ¿Por qué FireDucks?

Un programa Pandas puede encontrar un problema de rendimiento grave dependiendo de cómo se haya escrito. Sin embargo, como científico de datos, quiero dedicar cada vez más tiempo a analizar datos en lugar de mejorar el rendimiento de mi código. Por lo tanto, sería fantástico si pudiera hacer algo como intercambiar el orden de los procesos y acelerar el rendimiento del programa automáticamente. Por ejemplo, el Proceso A =>Proceso B será más lento, por lo que lo reemplazaremos como Proceso B =>Proceso A. (Por supuesto, se garantiza que el resultado será el mismo). Se dice que los científicos de datos gastan alrededor del 45% de su tiempo preparando los datos, y cuando estaba pensando en hacer algo para acelerar el proceso, me encontré con un módulo llamado FireDucks.

Según la documentación de FireDucks, parece ser compatible solo con plataformas Linux. Como uso Windows en mi máquina principal, me gustaría probarlo desde WSL2 (Subsistema de Windows para Linux), un entorno que puede ejecutar Linux en Windows.

El entorno que probé es el siguiente.

  • SO Microsoft Windows 11 Pro
  • Versión 10.0.22631 Compilación 22631
  • Modelo del sistema Z690 Pro RS
  • Tipo de sistema basado en x64
  • Procesador de PC Intel(R) Core(TM) i3–12100 de 12.ª generación, 3300 Mhz, 4 núcleos, 8 procesadores lógicos
  • Producto de placa base Z690 Pro RS
  • Rol de plataforma Escritorio
  • Memoria física instalada (RAM)64,0 GB

Instalación y configuración de FireDucks

Instalar WSL

WSL se instaló con la ayuda de la siguiente documentación de Microsoft; la distribución de Linux es Ubuntu 22.04.1 LTS.

Instalar FireDucks

Luego instale FireDucks. Sin embargo, es muy fácil de instalar.
instalación de pip patos disparados

La instalación de FireDucks (junto con pyarrow, pandas y otras bibliotecas) llevará unos minutos.

Intenté ejecutar el siguiente código, la velocidad de carga fue tan rápida que los pandas tardaron 4 segundos y los fireDucks solo tardaron 74,5 ns.

# 1. analysis based on time period and creative duration
# convert timestamp to date/time object
df['timestamp_converted'] = pd.to_datetime(df['timestamp'], unit='s ')

# define time period 
def get_part_of_day(hour): 
  if 5 



Todo este preprocesamiento y análisis de datos tomó alrededor de 8 segundos en pandas, mientras que podría completarse en 4 segundos cuando se usa FireDucks. Se podría lograr casi el doble de velocidad.

Rendimiento mejorado

Una de las cosas más estresantes de usar pandas es esperar cuando se cargan grandes conjuntos de datos, y luego tengo que esperar operaciones complejas como groupby. Por otro lado, dado que FireDucks realiza una evaluación diferida, la carga no toma tiempo, por lo que el procesamiento se realiza donde es necesario, y sentí que fue muy significativo con una gran reducción en el tiempo total de espera.

En cuanto a otros rendimientos, parece que se ha logrado hasta 16 veces más rápido en comparación con los pandas, como anunció oficialmente la organización. (La próxima vez compararé el rendimiento con varias bibliotecas de la competencia).

FireDucks: Get performance beyond pandas with zero learning cost!

coste de aprendizaje cero

La capacidad de seguir la notación pandas exacta sin tener que pensar en nada es una gran ventaja. Además de FireDucks, existen otras bibliotecas de aceleración de marcos de datos, pero son demasiado costosas de aprender y demasiado fáciles de olvidar.

Por ejemplo, si quieres agregar columnas con polares, tienes que escribir algo como esto.

# pandas df["new_col"] = df["A"]   1
# polars 
df = df.with_columns((pl.col("A")   1).alias("new_col"))

Casi no es necesario cambiar un código existente

Tengo varios ETL y otros proyectos que usan pandas, y sería bueno ver una mejora en el rendimiento simplemente instalando y reemplazando la declaración de importación con FireDucks.

Si deseas agregarlo más, no dudes en comentar a continuación.

Declaración de liberación Este artículo se reproduce en: https://dev.to/codewithved/fireducks-get-performance-beyond-pandas-with-zero-learning-cost-9do?1 Si hay alguna infracción, comuníquese con [email protected] para borrarlo
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3