Nella puntata precedente ( Parte 2 ), abbiamo illustrato come la funzionalità di integrazione Python di JMP consenta di richiamare JSL dal codice Python e viceversa.
Ora, diamo un'altra occhiata alla prima parte del codice Python per l'importazione dei dati della Banca Mondiale, che abbiamo usato finora come esempio. Il codice specifica i paesi del G7 di destinazione, gli anni e gli indicatori (tre in totale), e quindi importa i dati.
PythonコードCodice Python
Tuttavia, se si desidera restringere il campo dei paesi target, utilizzare indicatori diversi o modificare l'anno di riferimento, sarà necessario riscrivere il codice sopra riportato.
Sebbene di per sé questo non rappresenti un grosso problema, diventa scomodo quando si modificano frequentemente le condizioni o quando altri utenti di JMP devono utilizzarlo.
In questi casi, è opportuno fornire una finestra di dialogo che permetta agli utenti di selezionare condizioni come le seguenti, consentendo loro di specificare liberamente le condizioni che utilizzeranno per la loro analisi.
ダイアログdialogo
Pertanto, questa volta introdurrò un metodo per rendere uno script con condizioni fisse più versatile e riutilizzabile scrivendo le finestre di dialogo per la selezione delle colonne e l'inserimento dei parametri in JSL .
Si prega di notare che in questa sede non forniremo una spiegazione dettagliata su come creare una finestra di dialogo. Lo scopo è semplicemente quello di farvi sperimentare in prima persona la versatilità delle finestre di dialogo.
Crea una finestra di dialogo
Utilizzeremo JSL per creare la finestra di dialogo. Pertanto, in questo caso è preferibile "scrivere da una prospettiva basata su JSL (jsl) ".
Ecco una versione migliorata del codice JSL (Example1-2_WorldBank.jsl) presentato la volta scorsa, che ora visualizza una finestra di dialogo in fase di esecuzione che consente di eseguire le seguenti operazioni:
- Seleziona i paesi target tra i sette paesi del G7 (è possibile effettuare selezioni multiple utilizzando il tasto Ctrl).
- Oltre ai tre indicatori precedenti, abbiamo aggiunto GDP_growth (tasso di crescita del PIL), Inflation (tasso di inflazione), Unemployment (tasso di disoccupazione) e Fertility_rate (tasso di natalità), e puoi selezionare l'indicatore desiderato tra questi (è possibile effettuare selezioni multiple utilizzando il tasto Ctrl).
- Specificare gli anni di inizio e fine
Il codice completo è allegato a questo post del blog. Qui di seguito, spiegherò i punti chiave relativi alla creazione della finestra di dialogo.
1. Definizione dei paesi e degli indicatori selezionabili nella finestra di dialogo.
Innanzitutto, elenchiamo i paesi e gli indicatori selezionabili. In questo esempio, abbiamo abbinato i codici utilizzati dalla Banca Mondiale ai nomi visualizzati.
// 選択できる国(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. Sezione di dialogo
Creeremo una finestra di dialogo utilizzando la funzione New Window() . Un esempio di come scrivere il codice è fornito nella guida di scripting di JMP.
La finestra di dialogo è organizzata utilizzando caselle di riepilogo verticali (V List Box), caselle di riepilogo orizzontali (H List Box) e caselle di controllo (Panel Box), e al loro interno si posizionano una casella di riepilogo per selezionare elementi da un elenco e una casella di modifica numerica per inserire valori numerici.
// ダイアログの起動
selCountry = {};
selInd = {};
startY = .;
endY = .;
nw = New Window( "Get World Bank Data",
<
<MODAL></MODAL>
<BR /> <P><FONT size="4" color="#0000FF">3. Creazione di variabili da passare a Python</FONT></P> <P><FONT size="4">I nomi dei paesi e degli indicatori selezionati vengono convertiti in codici utilizzati dalla Banca Mondiale e elencati come un array associativo. <STRONG>Il punto chiave è la successiva funzione Python Send(), che passa le variabili JSL come variabili Python con gli stessi nomi.</STRONG> Ciò consente al codice Python nella successiva funzione Python Submit() di utilizzare direttamente `countries` e altre variabili.</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">Utilizzando i valori delle variabili passate a Python, il pacchetto pandas_datareader genererà una tabella di dati per il paese, l'indicatore e l'anno specificati.</FONT></P> <P><FONT size="2">Nota: questo codice privilegia la concisione, quindi non include molto codice per il controllo dei valori di input o la gestione degli errori.</FONT></P> <BR /> <P><FONT size="5" color="#FF6600">Visualizza e analizza i dati ottenuti tramite l'integrazione con Python utilizzando JMP.</FONT></P> <P><FONT size="4">Quando esegui lo script JSL, verrà visualizzata la finestra di dialogo che hai creato, che ti permetterà di specificare il paese, l'indicatore e l'anno per creare i dati.</FONT></P> <P><FONT size="4">Per confrontare l'andamento dei tassi di crescita del PIL, dei tassi di inflazione e dei tassi di disoccupazione in Giappone, Stati Uniti, Germania e Francia prima e dopo la pandemia di COVID-19, creeremo dati relativi al periodo dal 2017 al 2024.</FONT></P> <P><FONT size="4">Se è possibile ottenere i dati come tabella dati JMP, è possibile visualizzare un grafico sotto i nomi delle colonne facendo clic sull'icona dell'istogramma (grafico di intestazione) nella tabella dati. Selezionando una parte rilevante del grafico, verranno selezionati i dati corrispondenti, consentendo di esplorare i dati all'interno della tabella.</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();">Selezione di paesi e indicatori basata sul dialogo</SPAN></SPAN></FONT></P> <P><FONT size="4">Questi dati possono essere utilizzati anche per analizzare le tendenze annuali tramite un grafico a bolle, come introdotto nella prima parte. Inoltre, il [Graph Builder] consente di creare grafici a linee e a barre che mostrano le tendenze annuali degli indicatori, come illustrato di seguito.</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();">Visualizzazione</SPAN></SPAN></FONT></P> <P><FONT size="4">Inoltre, utilizzando la [previsione delle serie temporali], è possibile adattare un modello di livellamento per ottenere valori futuri previsti e intervalli di previsione.</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();">Modello di serie temporali</SPAN></SPAN></FONT></P> <BR /> <P><FONT size="5" color="#FF6600">Insomma</FONT></P> <P>In questo articolo ho presentato un metodo per creare uno "strumento generico" combinando codice di recupero dati scritto in Python con una finestra di dialogo creata in JSL.</P> <P><FONT size="4">I punti principali sono i seguenti tre:</FONT></P>
<UL>
<LI><FONT size="4"><STRONG>Le finestre di dialogo vengono create utilizzando JSL:</STRONG> pertanto, anche se l'elaborazione principale avviene in Python, è più facile da gestire se lo script iniziale è in formato .jsl. Questo è uno dei punti specifici di disaccordo nella decisione "scrivere in .py o .jsl" che abbiamo discusso nella Parte 2.</FONT></LI>
</UL>
<UL>
<LI><FONT size="4"><STRONG>I valori ricevuti vengono passati a Python utilizzando il metodo Send() di Python:</STRONG> poiché i nomi delle variabili JSL diventano gli stessi nomi delle variabili in Python, non è quasi necessario riscrivere il codice Python stesso.</FONT></LI>
<LI><FONT size="4"><STRONG>Dopo aver importato i dati, è possibile esplorarli utilizzando le tabelle dati standard di JMP:</STRONG> si possono utilizzare immediatamente le funzioni di analisi di JMP, come i generatori di grafici e le previsioni di serie temporali.</FONT></LI>
</UL> <P><FONT size="4">Utilizzando Python per acquisire ed elaborare i dati, e poi JMP per la visualizzazione e l'analisi, e delegando la specifica delle condizioni di ingresso a una finestra di dialogo, le condizioni possono essere fornite esternamente senza modificare lo script principale. Ciò aumenta la versatilità dello script grazie all'utilizzo di una finestra di dialogo.</FONT></P> <P><FONT size="4">Nella prossima puntata ( <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> ), come ulteriore passo verso la generalizzazione, introdurremo un esempio di utilizzo di pacchetti Python per eseguire funzioni non incluse in JMP e specificheremo le variabili (colonne) da analizzare tramite una finestra di dialogo simile a quella che abbiamo creato questa volta.</FONT></P> <BR /> <P><FONT size="4">di Naohiro Masukawa (JMP Giappone)</FONT></P> <P><FONT size="4"><U><A href="https://community.jmp.com/t5/Naohiro-Masukawa/bg-p/nmasukawa-blog" target="_blank">Naohiro Masukawa - Comunità degli utenti JMP</A></U></FONT></P>
</LINGO-BODY>
<CODE class=" language-jsl">
<LINGO-TEASER id="lingo-teaser-962736" slang="ja-JP" mode="UPDATE">
<P>Questo articolo introduce brevemente il ruolo di una finestra di dialogo (una schermata operativa in cui gli utenti selezionano e inseriscono condizioni quali paesi target, indicatori e periodi di tempo). Successivamente, spiega come creare uno strumento di acquisizione dati generico in grado di adattarsi in modo flessibile ai cambiamenti delle condizioni, creando una finestra di dialogo utilizzando JSL di JMP e integrandola con Python. Il vantaggio di utilizzare una finestra di dialogo è che le condizioni d'uso possono essere modificate senza riscrivere lo script, semplificando l'utilizzo ripetuto e la condivisione con altri utenti.</P>
<BR />
</LINGO-TEASER>