Im vorherigen Teil ( Teil 2 ) haben wir vorgestellt, wie die Python-Integrationsfunktion von JMP es ermöglicht, JSL aus Python-Code aufzurufen und umgekehrt.
Schauen wir uns nun noch einmal den ersten Teil des Python-Codes zum Importieren von Weltbankdaten an, den wir bisher als Beispiel verwendet haben. Der Code legt die Zielländer der G7-Staaten, die Jahre und die drei Indikatoren fest und importiert anschließend diese Daten.
PythonコードPython-Code
Wenn Sie jedoch die Zielländer eingrenzen, andere Indikatoren verwenden oder das Zieljahr ändern möchten, müssen Sie den obigen Code neu schreiben.
Dies mag an sich kein großes Problem darstellen, wird aber lästig, wenn man die Bedingungen häufig ändert oder wenn andere JMP-Benutzer es verwenden müssen.
In solchen Fällen ist es sinnvoll, ein Dialogfeld bereitzustellen, in dem die Benutzer Bedingungen wie die folgenden auswählen können, sodass sie die Bedingungen, die sie für ihre Analyse verwenden werden, frei festlegen können.
ダイアログDialog
Deshalb werde ich diesmal eine Methode vorstellen, mit der man ein Skript mit festen Bedingungen vielseitiger und wiederverwendbarer gestalten kann, indem man die Dialoge zur Spaltenauswahl und Parametereingabe in JSL schreibt .
Bitte beachten Sie, dass wir hier keine detaillierte Anleitung zum Erstellen von Dialogfeldern geben. Es geht lediglich darum, Ihnen die Vielseitigkeit von Dialogfeldern anhand eines Beispiels zu verdeutlichen.
Dialogfeld erstellen
Wir werden JSL verwenden, um den Dialog zu erstellen. Daher ist dies ein Fall, in dem „das Schreiben aus einer JSL-basierten Perspektive (.jsl) vorzuziehen ist “.
Hier ist eine verbesserte Version des JSL-Codes (Example1-2_WorldBank.jsl), der letztes Mal vorgestellt wurde und nun zur Laufzeit ein Dialogfeld anzeigt, das Ihnen Folgendes ermöglicht:
- Wählen Sie die Zielländer aus den sieben G7-Staaten aus (Mehrfachauswahl ist mit der Strg-Taste möglich).
- Zusätzlich zu den drei vorherigen Indikatoren haben wir GDP_growth (BIP-Wachstumsrate), Inflation (Inflationsrate), Unemployment (Arbeitslosenquote) und Fertility_rate (Geburtenrate) hinzugefügt. Sie können den gewünschten Indikator aus diesen auswählen (Mehrfachauswahl ist mit der Strg-Taste möglich).
- Angabe der Anfangs- und Endjahre
Der vollständige Code ist diesem Blogbeitrag beigefügt. Hier erläutere ich die wichtigsten Punkte zur Erstellung des Dialogs.
1. Definition der Länder und Indikatoren, die im Dialogfeld ausgewählt werden können.
Zunächst listen wir die auswählbaren Länder und Indikatoren auf. In diesem Beispiel haben wir die von der Weltbank verwendeten Codes den Bezeichnungen für die Anzeige zugeordnet.
// 選択できる国(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. Dialogabschnitt
Wir erstellen einen Dialog mithilfe der Funktion „New Window()“ . Ein Beispiel für die Code-Erstellung finden Sie im JMP-Skripting-Leitfaden.
Der Dialog ist in V-Listenfelder (vertikal), H-Listenfelder (horizontal) und Panel-Felder (Überschriftenrahmen) unterteilt. Innerhalb dieser Elemente platzieren Sie ein Listenfeld zur Auswahl aus einer Liste und ein Zahleneingabefeld zur Eingabe numerischer Werte.
// ダイアログの起動
selCountry = {};
selInd = {};
startY = .;
endY = .;
nw = New Window( "Get World Bank Data",
<
<MODAL></MODAL>
<BR /> <P><FONT size="4" color="#0000FF">3. Variablen erstellen, die an Python übergeben werden sollen</FONT></P> <P><FONT size="4">Die ausgewählten Länder- und Indikatornamen werden in von der Weltbank verwendete Codes umgewandelt und als assoziatives Array aufgelistet. <STRONG>Entscheidend ist der nachfolgende Aufruf von `Send()` in Python, der die JSL-Variablen als Python-Variablen mit denselben Namen übergibt.</STRONG> Dadurch kann der Python-Code im nachfolgenden Aufruf von `Submit()` direkt auf `countries` und andere Variablen zugreifen.</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">Mithilfe der an Python übergebenen Werte der Variablen gibt das pandas_datareader-Paket eine Datentabelle für das angegebene Land, den Indikator und das Jahr aus.</FONT></P> <P><FONT size="2">Hinweis: Bei diesem Code steht die Kürze im Vordergrund, daher enthält er nicht viel Code zur Überprüfung von Eingabewerten oder zur Fehlerbehandlung.</FONT></P> <BR /> <P><FONT size="5" color="#FF6600">Visualisierung und Analyse von Daten, die durch die Python-Integration gewonnen wurden, mithilfe von JMP.</FONT></P> <P><FONT size="4">Wenn Sie das JSL-Skript ausführen, erscheint der von Ihnen erstellte Dialog, in dem Sie das Land, den Indikator und das Jahr für die Datenerstellung angeben können.</FONT></P> <P><FONT size="4">Um die Entwicklung der BIP-Wachstumsraten, Inflationsraten und Arbeitslosenquoten in Japan, den Vereinigten Staaten, Deutschland und Frankreich vor und nach der COVID-19-Pandemie zu vergleichen, werden wir Daten für den Zeitraum von 2017 bis 2024 erstellen.</FONT></P> <P><FONT size="4">Wenn Sie die Daten als JMP-Datentabelle erhalten, können Sie unterhalb der Spaltennamen ein Histogramm anzeigen lassen, indem Sie in der Datentabelle auf das Histogrammsymbol (Überschriftendiagramm) klicken. Durch Auswahl eines relevanten Bereichs im Diagramm werden die entsprechenden Daten markiert, sodass Sie die Daten innerhalb der Datentabelle genauer untersuchen können.</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();">Dialogbasierte Auswahl von Ländern und Indikatoren</SPAN></SPAN></FONT></P> <P><FONT size="4">Diese Daten können auch zur Analyse von Jahrestrends mithilfe von Animationen in Form eines Blasendiagramms verwendet werden, wie im ersten Teil vorgestellt. Darüber hinaus können Sie mit dem [Grafikgenerator] Linien- und Balkendiagramme erstellen, die Jahrestrends für Indikatoren darstellen, wie unten gezeigt.</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();">Visualisierung</SPAN></SPAN></FONT></P> <P><FONT size="4">Darüber hinaus können Sie mithilfe der [Zeitreihenprognose] ein Glättungsmodell anpassen, um zukünftige prognostizierte Werte und Prognoseintervalle zu erhalten.</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();">Zeitreihenmodell</SPAN></SPAN></FONT></P> <BR /> <P><FONT size="5" color="#FF6600">Abschließend</FONT></P> <P>In diesem Artikel habe ich eine Methode zur Erstellung eines „universellen Werkzeugs“ vorgestellt, indem ich in Python geschriebenen Datenabrufcode mit einem in JSL erstellten Dialogfeld kombiniert habe.</P> <P><FONT size="4">Die wichtigsten Punkte sind die folgenden drei:</FONT></P>
<UL>
<LI><FONT size="4"><STRONG>Dialoge werden mit JSL erstellt:</STRONG> Daher ist die Handhabung einfacher, wenn das Startskript im .jsl-Format vorliegt, selbst wenn die Kernverarbeitung in Python erfolgt. Dies ist einer der Streitpunkte bei der Entscheidung „in .py oder .jsl schreiben“, die wir in Teil 2 besprochen haben.</FONT></LI>
</UL>
<UL>
<LI><FONT size="4"><STRONG>Die empfangenen Werte werden mit der Send()-Methode von Python an Python übergeben:</STRONG> Da die JSL-Variablennamen in Python die gleichen Variablennamen ergeben, ist es kaum nötig, den Python-Code selbst neu zu schreiben.</FONT></LI>
<LI><FONT size="4"><STRONG>Nach dem Import der Daten können Sie diese mithilfe der gewohnten JMP-Datentabellen untersuchen:</STRONG> Sie können die Analysefunktionen von JMP wie Diagrammgeneratoren und Zeitreihenprognosen unverändert nutzen.</FONT></LI>
</UL> <P><FONT size="4">Durch die Verwendung von Python zur Datenerfassung und -verarbeitung, anschließendem Einsatz von JMP zur Visualisierung und Analyse sowie die Auslagerung der Eingabebedingungen in ein Dialogfeld können die Bedingungen extern angegeben werden, ohne das Hauptskript zu ändern. Dies erhöht die Flexibilität des Skripts durch die Verwendung von Dialogfeldern.</FONT></P> <P><FONT size="4">Im nächsten Teil ( <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">Teil 4</A> ) werden wir als weiteren Schritt zur Verallgemeinerung ein Beispiel für die Verwendung von Python-Paketen zur Ausführung von Funktionen vorstellen, die nicht in JMP enthalten sind, und die zu analysierenden Variablen (Spalten) mithilfe eines Dialogfelds angeben, das dem von uns dieses Mal erstellten ähnelt.</FONT></P> <BR /> <P><FONT size="4">von Naohiro Masukawa (JMP Japan)</FONT></P> <P><FONT size="4"><U><A href="https://community.jmp.com/t5/Naohiro-Masukawa/bg-p/nmasukawa-blog" target="_blank">Naohiro Masukawa – JMP-Benutzergemeinschaft</A></U></FONT></P>
</LINGO-BODY>
<CODE class=" language-jsl">
<LINGO-TEASER id="lingo-teaser-962736" slang="ja-JP" mode="UPDATE">
<P>Dieser Artikel erläutert kurz die Funktion eines Dialogfelds (eines Bedienbildschirms, auf dem Benutzer Bedingungen wie Zielländer, Indikatoren und Zeiträume auswählen und eingeben). Anschließend wird erklärt, wie man mit JMPs JSL ein universelles Datenerfassungstool erstellt, das sich flexibel an veränderte Bedingungen anpassen lässt. Dazu wird ein Dialogfeld mit JMPs JSL erstellt und in Python integriert. Der Vorteil eines Dialogfelds liegt darin, dass die Nutzungsbedingungen geändert werden können, ohne das Skript neu schreiben zu müssen. Dies vereinfacht die wiederholte Verwendung und die Weitergabe an andere Benutzer erheblich.</P>
<BR />
</LINGO-TEASER>