En la entrega anterior ( Parte 2 ), presentamos cómo la función de integración de Python de JMP permite llamar a JSL desde código Python, y viceversa.
Ahora, echemos otro vistazo a la primera parte del código Python para importar datos del Banco Mundial, que hemos usado como ejemplo hasta ahora. El código especifica los países del G7, los años y los indicadores (tres en total), y luego importa esos datos.
PythonコードCódigo Python
Sin embargo, si desea limitar el número de países objetivo, utilizar indicadores diferentes o cambiar el año objetivo, deberá reescribir el código anterior.
Si bien esto puede no ser un gran problema en sí mismo, se vuelve inconveniente cuando se cambian las condiciones con frecuencia o cuando otros usuarios de JMP necesitan usarlo.
En estos casos, resulta conveniente proporcionar un cuadro de diálogo que permita a los usuarios seleccionar condiciones como las siguientes, lo que les permite especificar libremente las condiciones que utilizarán para su análisis.
ダイアログdiálogo
Por lo tanto, en esta ocasión, presentaré un método para hacer que un script con condiciones fijas sea más versátil y reutilizable escribiendo los diálogos de selección de columnas y entrada de parámetros en JSL .
Tenga en cuenta que esta sección no ofrece una explicación detallada de cómo crear un cuadro de diálogo. Su propósito es simplemente demostrar la versatilidad que se puede lograr al crear uno.
Crear un cuadro de diálogo
Usaremos JSL para crear el diálogo. Por lo tanto, este es un caso en el que "es preferible escribir desde una perspectiva basada en JSL (.jsl) ".
Aquí tenéis una versión mejorada del código JSL (Example1-2_WorldBank.jsl) que presentamos la última vez, que ahora muestra un cuadro de diálogo en tiempo de ejecución que permite hacer lo siguiente:
- Seleccione los países objetivo de entre los siete países del G7 (es posible seleccionar varios países utilizando la tecla Ctrl).
- Además de los tres indicadores anteriores, hemos añadido GDP_growth (tasa de crecimiento del PIB), Inflation (tasa de inflación), Unemployment (tasa de desempleo) y Fertility_rate (tasa de natalidad), y puedes seleccionar el indicador objetivo entre ellos (es posible seleccionar varios utilizando la tecla Ctrl).
- Especificar los años de inicio y fin.
El código completo se adjunta a esta entrada del blog. Aquí explicaré los puntos clave relacionados con la creación del diálogo.
1. Definición de países e indicadores que se pueden seleccionar en el cuadro de diálogo.
En primer lugar, enumeramos los países e indicadores que se pueden seleccionar. En este ejemplo, hacemos coincidir los códigos utilizados por el Banco Mundial con los nombres que se muestran.
// 選択できる国(G7)・指標
countryNames = {"Japan", "United States", "Canada", "United Kingdom", "Germany", "France", "Italy"};
countryCodes = {"JP", "US", "CA", "GB", "DE", "FR", "IT"};
/* 選択できる指標: 人口,一人当たりGDP,経済成長率,インフレ率, 失業率,出生率,平均寿命 */
indNames = {"Population", "GDP_per_capita", "GDP_growth", "Inflation",
"Unemployment", "Fertility_rate", "Life_expectancy"};
indCodes = {"SP.POP.TOTL", "NY.GDP.PCAP.CD", "NY.GDP.MKTP.KD.ZG", "FP.CPI.TOTL.ZG",
"SL.UEM.TOTL.ZS", "SP.DYN.TFRT.IN", "SP.DYN.LE00.IN"};
2. Sección de diálogo
Crearemos un cuadro de diálogo utilizando la función New Window() . En la guía de scripting de JMP se proporciona un ejemplo de cómo escribir el código.
El cuadro de diálogo está organizado mediante un cuadro de lista vertical (V List Box), un cuadro de lista horizontal (H List Box) y un cuadro de panel (encabezado). Dentro de estos, se coloca un cuadro de lista para seleccionar elementos de una lista y un cuadro de edición numérica para introducir valores numéricos.
// ダイアログの起動
selCountry = {};
selInd = {};
startY = .;
endY = .;
nw = New Window( "Get World Bank Data",
<
<MODAL></MODAL>
<BR /> <P><FONT size="4" color="#0000FF">3. Creación de variables para pasar a Python</FONT></P> <P><FONT size="4">Los nombres de los países e indicadores seleccionados se convierten en códigos utilizados por el Banco Mundial y se listan como una matriz asociativa. <STRONG>El punto clave es la función `Send()` de Python, que pasa las variables JSL como variables de Python con los mismos nombres.</STRONG> Esto permite que el código Python en la función `Submit()` posterior utilice directamente `countries` y otras variables.</FONT></P> <CODE class=" language-jsl">// Python に渡す変数の作成
countries = {};
For( i = 1, i <= N Items( selCountry ), i++,
Insert Into( countries, countryMap[selCountry[i]] )
);
indicators = {};
For( i = 1, i <= N Items( selInd ), i++,
Insert Into( indicators, indCodeMap[selInd[i]] )
);
colnames = selInd;
// Show( countries, indicators, colnames, startY, endY );
Python Send( countries );
Python Send( indicators );
Python Send( colnames );
Python Send( startY );
Python Send( endY ); </CODE></FONT></P> <P><FONT size="4">Utilizando los valores de las variables pasadas a Python, el paquete pandas_datareader generará una tabla de datos para el país, el indicador y el año especificados.</FONT></P> <P><FONT size="2">Nota: Este código prioriza la concisión, por lo que no incluye mucho código para verificar los valores de entrada ni para el manejo de errores.</FONT></P> <BR /> <P><FONT size="5" color="#FF6600">Visualiza y analiza los datos obtenidos mediante la integración de Python utilizando JMP.</FONT></P> <P><FONT size="4">Al ejecutar el script JSL, aparecerá el cuadro de diálogo que creó, el cual le permitirá especificar el país, el indicador y el año para generar los datos.</FONT></P> <P><FONT size="4">Para comparar las tendencias de las tasas de crecimiento del PIB, las tasas de inflación y las tasas de desempleo en Japón, Estados Unidos, Alemania y Francia antes y después de la pandemia de COVID-19, crearemos datos que abarquen el período de 2017 a 2024.</FONT></P> <P><FONT size="4">Si puede obtener los datos como una tabla de datos JMP, puede mostrar un gráfico debajo de los nombres de las columnas haciendo clic en el icono de histograma (gráfico de encabezado) en la tabla de datos. Al seleccionar una parte relevante del gráfico, se seleccionarán los datos correspondientes, lo que le permitirá explorarlos hasta cierto punto dentro de la tabla de datos.</FONT></P> <P><FONT size="4"><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="ダイアログによる国と指標の選択" style="width: 999px;"><span class="lia-inline-image-display-wrapper" image-alt="ダイアログによる国と指標の選択" style="width: 999px;"><img src="https://us.v-cdn.net/6038925/uploads/images/112217i69CB0159845A07E6/P4.png" role="button" title="P4.png" alt="ダイアログによる国と指標の選択" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">ダイアログによる国と指標の選択</span></span><SPAN class="lia-inline-image-caption" onclick="event.preventDefault();">Selección de países e indicadores basada en el diálogo</SPAN></SPAN></FONT></P> <P><FONT size="4">Estos datos también pueden utilizarse para analizar las tendencias interanuales con animación mediante un gráfico de burbujas, tal como se presentó en la primera entrega. Además, con el [Creador de gráficos], puede crear gráficos de líneas y de barras que muestren las tendencias interanuales de los indicadores, como se muestra a continuación.</FONT></P> <P><FONT size="4"><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="可視化" style="width: 999px;"><span class="lia-inline-image-display-wrapper" image-alt="可視化" style="width: 999px;"><img src="https://us.v-cdn.net/6038925/uploads/images/112018iC6D52C5CF3BFD2FC/fig4.png" role="button" title="fig4.png" alt="可視化" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">可視化</span></span><SPAN class="lia-inline-image-caption" onclick="event.preventDefault();">Visualización</SPAN></SPAN></FONT></P> <P><FONT size="4">Además, utilizando [la previsión de series temporales], puede ajustar un modelo de suavizado para obtener valores previstos futuros e intervalos de previsión.</FONT></P> <P><FONT size="4"><SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="時系列モデル" style="width: 627px;"><span class="lia-inline-image-display-wrapper" image-alt="時系列モデル" style="width: 627px;"><img src="https://us.v-cdn.net/6038925/uploads/images/112218i3DBB79F853ECEB1B/P6.png" role="button" title="P6.png" alt="時系列モデル" /><span class="lia-inline-image-caption" onclick="event.preventDefault();">時系列モデル</span></span><SPAN class="lia-inline-image-caption" onclick="event.preventDefault();">Modelo de series temporales</SPAN></SPAN></FONT></P> <BR /> <P><FONT size="5" color="#FF6600">En conclusión</FONT></P> <P>En este artículo, presenté un método para crear una "herramienta de propósito general" combinando código de recuperación de datos escrito en Python con un cuadro de diálogo creado en JSL.</P> <P><FONT size="4">Los puntos principales son los siguientes tres:</FONT></P>
<UL>
<LI><FONT size="4"><STRONG>Los diálogos se crean usando JSL:</STRONG> por lo tanto, aunque el procesamiento principal se realice en Python, es más fácil de manejar si el script inicial está en formato .jsl. Este es uno de los puntos de controversia específicos en la decisión de "escribir en .py o .jsl" que analizamos en la Parte 2.</FONT></LI>
</UL>
<UL>
<LI><FONT size="4"><STRONG>Los valores recibidos se pasan a Python usando el método Send() de Python:</STRONG> Como los nombres de las variables JSL se convierten en los mismos nombres de variables en Python, apenas es necesario reescribir el código Python en sí.</FONT></LI>
<LI><FONT size="4"><STRONG>Tras importar los datos, puede explorarlos utilizando las tablas de datos habituales de JMP:</STRONG> podrá usar de inmediato las funciones de análisis de JMP, como los generadores de gráficos y la previsión de series temporales.</FONT></LI>
</UL> <P><FONT size="4">Al utilizar Python para adquirir y procesar datos, y posteriormente JMP para su visualización y análisis, y delegar la especificación de las condiciones de entrada a un cuadro de diálogo, estas condiciones pueden proporcionarse externamente sin modificar el script principal. Esto aumenta la versatilidad del script mediante el uso de cuadros de diálogo.</FONT></P> <P><FONT size="4">En la próxima entrega ( <A href="https://community.jmp.com/t5/Naohiro-Masukawa/%E7%B5%90%E5%B1%80-JMP%E3%81%AE-Python%E9%80%A3%E6%90%BA-%E3%81%A7%E4%BD%95%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%AE%E3%81%8B-%E7%AC%AC4%E5%9B%9E-JMP%E3%81%AB%E3%81%AA%E3%81%84%E5%88%86%E6%9E%90%E6%89%8B%E6%B3%95%E3%82%92-JMP%E3%81%AE%E6%93%8D%E4%BD%9C%E6%84%9F%E3%81%A7%E4%BD%BF%E3%81%86-%E5%85%A84%E5%9B%9E%E3%81%AE%E3%81%BE%E3%81%A8%E3%82%81%E5%8B%95%E7%94%BB%E3%81%82%E3%82%8A/ba-p/963459" target="_blank">Parte 4</A> ), como un paso más hacia la generalización, presentaremos un ejemplo de cómo usar paquetes de Python para ejecutar funciones no incluidas en JMP, y especificar las variables (columnas) que se van a analizar mediante un cuadro de diálogo similar al que creamos en esta ocasión.</FONT></P> <BR /> <P><FONT size="4">por Naohiro Masukawa (JMP Japón)</FONT></P> <P><FONT size="4"><U><A href="https://community.jmp.com/t5/Naohiro-Masukawa/bg-p/nmasukawa-blog" target="_blank">Naohiro Masukawa - Comunidad de usuarios de JMP</A></U></FONT></P>
</LINGO-BODY>
<CODE class=" language-jsl">
<LINGO-TEASER id="lingo-teaser-962736" slang="ja-JP" mode="UPDATE">
<P>Este artículo presenta brevemente la función de un cuadro de diálogo (una pantalla de operaciones donde los usuarios seleccionan e introducen condiciones como países objetivo, indicadores y periodos de tiempo). A continuación, explica cómo crear una herramienta de adquisición de datos de propósito general que se adapte de forma flexible a los cambios en las condiciones, mediante la creación de un cuadro de diálogo con JSL de JMP y su integración con Python. La ventaja de usar un cuadro de diálogo es que las condiciones de uso se pueden modificar sin necesidad de reescribir el script, lo que facilita su uso repetido y su compartición con otros usuarios.</P>
<BR />
</LINGO-TEASER>