Nella puntata precedente ( Parte 1 ), abbiamo illustrato il vantaggio di utilizzare la funzionalità di integrazione Python integrata in JMP, che consente di scrivere codice Python all'interno di JMP, completando così i punti di forza di entrambi gli strumenti. Ad esempio, è possibile ampliare la gamma di metodi di analisi con Python ed esplorare e visualizzare i risultati con JMP.
Questa volta esamineremo la relazione tra JSL (JMP Scripting Language), il linguaggio proprietario di JMP, e Python.
L'integrazione di JMP con Python consente di richiamare JSL dal codice Python e viceversa. In altre parole, è possibile scrivere lo stesso processo partendo da Python o partendo da JSL.
P0.png
In questa sessione, utilizzando come caso di studio l'Esempio 1 della sessione precedente (acquisizione di dati dalla Banca Mondiale), mostreremo questi due metodi di scrittura affiancati, organizzando le caratteristiche di ciascuno e il ragionamento alla base del loro utilizzo appropriato.
Esecuzione di script JSL da un ambiente Python (scritti utilizzando un approccio basato su Python)
Nell'esempio precedente, abbiamo mostrato il codice Python per estrarre indicatori economici dalla Banca Mondiale e inserirli in una tabella dati di JMP. Gli analisti possono quindi visualizzare e analizzare i dati estratti selezionando i grafici a bolle e altre opzioni dal menu di JMP.
In tal caso, potresti chiederti se sia possibile programmare non solo l'estrazione dei dati, ma anche la creazione di report di analisi JMP.
Illustrerò questo concetto con l'esempio precedente della creazione di un report con grafico a bolle.
L'immagine sottostante mostra il report del grafico a bolle (output) con le opzioni [Linee di traiettoria] > [Tutte] e [Etichette] > [Tutte] selezionate tramite il pulsante triangolare rosso in alto a sinistra. Questa opzione visualizza il nome del paese per ogni bolla e mostra la traiettoria del movimento della bolla con delle linee quando viene animata la tendenza anno per anno.
Selezionando [Salva script] > [Vai alla finestra script] per questo report, si aprirà una finestra di script JSL in cui è possibile visualizzare lo script che definisce le specifiche e le opzioni delle colonne per questo report.
P1.png
Questo script (JSL) può essere scritto nell'editor di script Python insieme al codice Python ed eseguito direttamente. L'immagine seguente mostra lo script Python (Example1-1_WorldBank.py) mostrato in precedenza con l'aggiunta del codice di esecuzione JSL (Example1-2_WorldBank.py).
jmpパッケージの run_jsl() の中にJSLを記述すると、Python環境の中でJSLスクリプトを実行することができます。
Quando si utilizza `run_jsl (''' ... ''')` con tre virgolette singole, tutto ciò che si scrive tra di esse, comprese le interruzioni di riga, verrà trattato come una stringa.。
P2.png
La sezione rossa nel diagramma sopra rappresenta il codice che esegue il JSL aggiunto. Permettetemi di spiegare brevemente la parte relativa al JSL.
最初の Current Data Table() は、現在アクティブになっているデータテーブルを返すコマンドです。この例では、直前に世界銀行の経済指標をJMPのデータテーブルとして取り込んでいるので、そのテーブルを dtという変数に格納しています。また、Set Name() で、データテーブル名を「World Bank Data」に変更しています。
dt = Current Data Table();
dt << Set Name( "World Bank Data" );
Il comando successivo modifica il formato di visualizzazione (Format) della tabella dati. Questo è mostrato come esempio di sintassi JSL e l'elaborazione successiva funzionerà anche senza di esso.
L'ultima parte è la sezione del grafico a bolle. Qui specifichiamo quali colonne assegnare alla variabile `dt` corrente (che abbiamo designato in precedenza) per X, Y, dimensione della bolla, ecc., e quali opzioni utilizzare durante l'esecuzione del grafico. Il codice JSL salvato in precedenza tramite [Salva script] > [Vai alla finestra dello script] funzionerà così com'è, ma di seguito è riportata una versione semplificata che include solo i comandi necessari.</CODE></FONT></P>
<PRE><CODE class=" language-jsl">dt << Bubble Plot(
X( :GDP_per_capita ),
Y( :Life_expectancy ),
Sizes( :Population ),
Time( :Year ),
Coloring( :Country ),
ID( :Country ),
Label( "All" ),
Trail Lines( "All" ),
);
Eseguendo questo codice, sarà possibile caricare i dati dalla Banca Mondiale e visualizzare un grafico a bolle in un'unica operazione.
Funzionalità per interagire con Python in un ambiente JSL (scrivere codice partendo da JSL)
Finora abbiamo dimostrato che è possibile eseguire JSL da un ambiente Python, ma, viceversa, è anche possibile eseguire codice Python da un ambiente JSL.
Ecco lo stesso codice di prima (Example1-2_WorldBank.py), riscritto come codice JSL (Example1-2_WorldBank.jsl).
JSLの Python Submit() 関数を使うと、引数として渡した文字列の中に書かれたPythonコードを実行できます。今回は、先ほどのPythonスクリプトのうちPythonのコード部分を、Python Submit() の中に入れただけです。
La stringa che passi a Submit() di Python è "\[ eRacchiudendo il testo tra `]\"`, tutto ciò che è scritto al suo interno può essere trattato come testo.
P3.png
Se selezioni [Modifica] > [Esegui script] per questo script JSL, otterrai lo stesso output di uno script Python.
Quale approccio dovrei adottare: scrivere codice che inizi con Python (.py) o scrivere codice che inizi con JSL (.jsl)?
La scelta dipende dal metodo su cui si concentra principalmente l'elaborazione .
Utilizza un file .py se l'analisi principale coinvolge librerie Python. Utilizza un file .jsl se devi creare finestre di dialogo per selezionare le colonne o generare report JMP complessi.
Esistono casi in cui è preferibile scrivere codice che inizi con Python (.py).
- L'analisi utilizzerà principalmente librerie Python come scikit-learn.
- Questo è pensato per chi ha familiarità con il codice Python.
Quando è preferibile scrivere codice che inizi con JSL (.jsl)?
- Il funzionamento del JMP sarà fondamentale per l'intero processo.
- Automatizza e personalizza la visualizzazione dei report JMP dopo l'analisi.
- Aggiungere finestre di dialogo per la selezione delle colonne e l'inserimento dei parametri per rendere lo strumento più versatile.
Insomma
In questo articolo abbiamo esaminato la relazione tra Python e JSL nelle funzionalità di integrazione Python di JMP. I punti chiave sono i seguenti:
- Python環境からは、jmpパッケージの
<EM>run_jsl()</EM> を使ってJSLを実行できる(Pythonを起点とした書き方)
- JSL環境からは、
Python Submit() を使ってPythonコードを実行できる(JSLを起点とした書き方)
- Indipendentemente dal punto di partenza, è possibile ottenere risultati pressoché identici; la scelta dipende dal fatto che l'elaborazione principale venga eseguita lato Python o lato JMP.
Nella prossima puntata ( Parte 3 ), mostreremo un esempio di come trasformare questi script fissi in strumenti versatili che chiunque può utilizzare ripetutamente, aggiungendo finestre di dialogo per la selezione delle colonne e l'inserimento dei parametri tramite JSL.
di Naohiro Masukawa (JMP Giappone)
Naohiro Masukawa - Comunità degli utenti JMP