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!
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.
WSL se instaló con la ayuda de la siguiente documentación de Microsoft; la distribución de Linux es Ubuntu 22.04.1 LTS.
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 5Todo 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).
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.
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