{"id":169845,"date":"2024-05-24T10:00:18","date_gmt":"2024-05-24T09:00:18","guid":{"rendered":"https:\/\/liora.io\/es\/?p=169845"},"modified":"2026-02-08T23:52:02","modified_gmt":"2026-02-08T22:52:02","slug":"todo-lo-que-necesita-saber-sobre-python-fugue","status":"publish","type":"post","link":"https:\/\/liora.io\/es\/todo-lo-que-necesita-saber-sobre-python-fugue","title":{"rendered":"Python Fugue: Todo sobre esta librer\u00eda"},"content":{"rendered":"<p><strong><b>La continua evoluci\u00f3n de las tecnolog\u00edas de procesamiento de datos ha llevado a la aparici\u00f3n de soluciones innovadoras que buscan simplificar la complejidad inherente a la gesti\u00f3n y an\u00e1lisis de vastos conjuntos de datos. Entre estas innovaciones, Python Fugue se destaca como una biblioteca poderosa que permite a los Cient\u00edficos de Datos e ingenieros desarrollar aplicaciones de c\u00f3mputo distribuido de manera m\u00e1s intuitiva y eficiente.<\/b><\/strong><\/p><p>El enfoque principal de <b>Fugue <\/b>es promover una <b>escritura de c\u00f3digo una vez<\/b>, ejecutable en cualquier lugar, sin modificaciones, independientemente de la plataforma de c\u00f3mputo distribuido elegida. Esto es posible gracias a su <a href=\"https:\/\/liora.io\/es\/api-que-es-y-para-que-sirve\">API<\/a> que abstrae las especificidades de cada motor de ejecuci\u00f3n, permitiendo a los usuarios beneficiarse de una flexibilidad y portabilidad sin igual para sus aplicaciones. Al adoptar Fugue, los desarrolladores pueden f\u00e1cilmente transformar <b>scripts<\/b> de <a href=\"https:\/\/liora.io\/es\/pandas-python\">Pandas<\/a> en tareas distribuidas a gran escala, optimizando el rendimiento y la eficiencia sin necesitar una experiencia profunda de los diferentes sistemas de c\u00f3mputo distribuido.<\/p>\t\t\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/es\/formacion-data-scientist\">M\u00e1s informaci\u00f3n sobre Python Fugue<\/a><\/div><\/div>\n\n\t\t\t<h3>Caracter\u00edsticas de Fugue<\/h3>\t\t\n\t\t<p>La adopci\u00f3n de Fugue en el campo del procesamiento de datos representa un punto de inflexi\u00f3n significativo gracias a sus caracter\u00edsticas \u00fanicas. La siguiente tabla detalla las caracter\u00edsticas principales de Fugue.<\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image1-2.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image1-2.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image1-2-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image1-2-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t<h4>Abstracci\u00f3n sin servidor<\/h4>\t\t\n\t\t<p>Fugue permite escribir aplicaciones de c\u00f3mputo distribuido sin preocuparse del servidor o del <b>entorno de ejecuci\u00f3n subyacente<\/b>. Esto significa que el c\u00f3digo escrito para Fugue puede ejecutarse en diferentes motores como <a href=\"https:\/\/liora.io\/es\/pyspark-todo-sobre-la-biblioteca-python\">Spark<\/a>, <a href=\"\/\">Dask<\/a>, o de forma <b>local<\/b>, <b>sin modificaciones<\/b>.<\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image6-2.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image6-2.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image6-2-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image6-2-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t<h4>Interfaz intuitiva<\/h4>\t\t\n\t\t<p>Su interfaz est\u00e1 dise\u00f1ada para ser <b>intuitiva<\/b> para los usuarios de Pandas y Spark, permitiendo una transici\u00f3n suave hacia el c\u00f3mputo distribuido sin necesitar una curva de aprendizaje abrupta.<\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image3-2-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image3-2-1.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image3-2-1-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image3-2-1-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t<h4>Soporte de m\u00faltiples motores de ejecuci\u00f3n<\/h4>\t\t\n\t\t<p>Fugue es compatible con una variedad de <b>motores de ejecuci\u00f3n<\/b>, ofreciendo a los usuarios la flexibilidad de elegir el entorno m\u00e1s adecuado a sus necesidades espec\u00edficas, ya sean de rendimiento, coste, u otros criterios.<\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image8.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image8.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image8-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image8-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t<h4>Independencia del lenguaje<\/h4>\t\t\n\t\t<p>Aunque dise\u00f1ado en Python, Fugue permite integrar funciones escritas en <b>otros idiomas<\/b>, como <a href=\"https:\/\/liora.io\/es\/sql-todo-lo-que-necesitas-saber-sobre-el-lenguaje-de-programacion-de-bases-de-datos\">SQL<\/a>, aumentando as\u00ed la versatilidad y potencia de las aplicaciones desarrolladas.<\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image7.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image7.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image7-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image7-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t<h4>Extensi\u00f3n y personalizaci\u00f3n<\/h4>\t\t\n\t\t<p>Fugue proporciona un conjunto de <b>extensiones<\/b> y <b>plugins<\/b>, permitiendo a los usuarios personalizar y extender la funcionalidad.<\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image2-2-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image2-2-1.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image2-2-1-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image2-2-1-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t<h4>Optimizaci\u00f3n del rendimiento<\/h4>\t\t\n\t\t<p>Gracias a su capacidad para <b>abstraer los detalles de bajo nivel<\/b>, Fugue optimiza autom\u00e1ticamente las tareas para el motor de ejecuci\u00f3n elegido, mejorando as\u00ed el rendimiento sin esfuerzo adicional por parte del desarrollador.<\/p>\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"512\" height=\"512\" src=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image4-2-1.png\" alt=\"\" loading=\"lazy\" srcset=\"https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image4-2-1.png 512w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image4-2-1-300x300.png 300w, https:\/\/liora.io\/app\/uploads\/sites\/7\/2024\/04\/image4-2-1-150x150.png 150w\" sizes=\"(max-width: 512px) 100vw, 512px\">\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t<h4>Simplicidad de migraci\u00f3n<\/h4>\t\t\n\t\t<p>La <b>migraci\u00f3n<\/b> de scripts existentes de procesamiento de datos a un entorno de c\u00f3mputo distribuido es facilitada, reduciendo significativamente el tiempo y los recursos necesarios para adaptar aplicaciones a gran escala.<\/p>\t\t\n\t\t\t<h3>Ejemplo de uso de Fugue<\/h3>\t\t\n\t\t<p>Veamos un ejemplo pr\u00e1ctico que ilustra el uso de Fugue para construir y desplegar un simple modelo de aprendizaje autom\u00e1tico en diferentes motores de ejecuci\u00f3n. Este ejemplo demuestra la polivalencia de Fugue al permitir a los usuarios ejecutar el mismo c\u00f3digo de ML en entornos <b>locales<\/b>, <a href=\"\/\">Spark<\/a>, o Dask, sin modificaciones sustanciales.<\/p>\t\t\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/es\/formacion-data-scientist\">Dominar Python Fugue<\/a><\/div><\/div>\n\n\t\t\t<h4>1. Creaci\u00f3n de un conjunto de datos ficticio<\/h4>\t\t\n\t\t<p>Comencemos por crear un DataFrame de Pandas simple para simular un conjunto de datos de precios de apartamentos, con caracter\u00edsticas como el tama\u00f1o del apartamento (en metros cuadrados), la distancia hasta el centro de la ciudad (en kil\u00f3metros) y su precio.<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>import pandas as pd\n# Creaci\u00f3n de un DataFrame de ejemplo\ndata = {\n    \"size\": [50, 60, 70, 80, 90],\n    \"distance\": [5, 3, 2, 8, 7],\n    \"price\": [250000, 270000, 290000, 200000, 230000]\n}\ndf = pd.DataFrame(data)<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t<h4>2. Preparaci\u00f3n de los datos y entrenamiento del modelo<\/h4>\t\t\n\t\t<p>Ahora definamos una funci\u00f3n que tomar\u00e1 el DataFrame como entrada, preparar\u00e1 los datos para el entrenamiento, entrenar\u00e1 un modelo de regresi\u00f3n lineal simple y devolver\u00e1 los coeficientes del modelo.<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>from sklearn.model_selection import train_test_split\nfrom sklearn.linear_model import LinearRegression\ndef train_model(df: pd.DataFrame) -> pd.DataFrame:\n    X = df[[\"size\", \"distance\"]]\n    y = df[\"price\"]\n    # Divisi\u00f3n de los datos en conjuntos de entrenamiento y de prueba\n    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n    # Entrenamiento del modelo de regresi\u00f3n lineal\n    model = LinearRegression()\n    model.fit(X_train, y_train)\n    # Devolvemos los coeficientes del modelo\n    return pd.DataFrame({\n        \"coef\": [\"intercept\", \"size\", \"distance\"],\n        \"value\": [model.intercept_, *modele.coef_]\n    })\n<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t\t<h4>3. Ejecuci\u00f3n en diferentes motores con Fugue<\/h4>\t\t\n\t\t<p>Con Fugue, ahora vamos a ejecutar la funci\u00f3n de entrenamiento del modelo en varios motores de ejecuci\u00f3n sin cambiar el c\u00f3digo.<\/p>\t\t\n\t\t\t<pre data-line=\"\">\t\t\t\t<code readonly=\"true\">\n\t\t\t\t\t<xmp>from fugue import FugueWorkflow\n# Ejecuci\u00f3n en Spark\n# Es posible indicar otro motor de ejecuci\u00f3n como Dask o Ray.\n# Si no se indica, la ejecuci\u00f3n ser\u00e1 local \nwith FugueWorkflow(engine=\u201dspark\u201d) as dag:\n    df_initial = dag.df(df)\n    results = df_initial.transform(train_model)\n    results.show()<\/xmp>\n\t\t\t\t<\/code>\n\t\t\t<\/pre>\n\t\t<p>Este ejemplo ilustra c\u00f3mo Fugue simplifica el proceso de construcci\u00f3n y despliegue de modelos de aprendizaje autom\u00e1tico en diferentes entornos de c\u00f3mputo.<\/p>\t\t\n\t\t\t<h3>Para concluir<\/h3>\t\t\n\t\t<p>Fugue resulta ser una herramienta <b>poderosa<\/b> y <b>vers\u00e1til<\/b> para la manipulaci\u00f3n y el an\u00e1lisis de datos a gran escala, as\u00ed como para el desarrollo y despliegue de modelos de aprendizaje autom\u00e1tico. Gracias a su capacidad para abstraer las co plejidades de los diferentes motores de ejecuci\u00f3n, permite a los Cient\u00edficos de Datos y desarrolladores concentrarse plenamente en la resoluci\u00f3n de problemas de negocio, sin verse obstaculizados por los detalles t\u00e9cnicos relacionados con la infraestructura subyacente.<\/p><p>Fugue se posiciona, por lo tanto, no solo como un <b>facilitador t\u00e9cnico<\/b>, sino tambi\u00e9n como un <b>catalizador de innovaci\u00f3n<\/b>, abriendo posibilidades anteriormente inaccesibles debido a la complejidad t\u00e9cnica. Al hacer accesible y manejable el c\u00f3mputo distribuido, Fugue fomenta la experimentaci\u00f3n, colaboraci\u00f3n y eficiencia en el desarrollo de soluciones de datos.<\/p>\t\t\n\t\t\t\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex is-content-justification-center\"><div class=\"wp-block-button \"><a class=\"wp-block-button__link wp-element-button \" href=\"https:\/\/liora.io\/es\/formacion-data-scientist\">Formaci\u00f3n en Python Fugue<\/a><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>La continua evoluci\u00f3n de las tecnolog\u00edas de procesamiento de datos ha llevado a la aparici\u00f3n de soluciones innovadoras que buscan simplificar la complejidad inherente a la gesti\u00f3n y an\u00e1lisis de vastos conjuntos de datos. Entre estas innovaciones, Python Fugue se destaca como una biblioteca poderosa que permite a los Cient\u00edficos de Datos e ingenieros desarrollar [&hellip;]<\/p>\n","protected":false},"author":74,"featured_media":169847,"comment_status":"open","ping_status":"open","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"editor_notices":[],"footnotes":""},"categories":[2440],"class_list":["post-169845","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-ia"],"acf":[],"_links":{"self":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/169845","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/users\/74"}],"replies":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/comments?post=169845"}],"version-history":[{"count":1,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/169845\/revisions"}],"predecessor-version":[{"id":183428,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/posts\/169845\/revisions\/183428"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/media\/169847"}],"wp:attachment":[{"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/media?parent=169845"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liora.io\/es\/wp-json\/wp\/v2\/categories?post=169845"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}