Dans le précédent article ( Partie 2 ), nous avons présenté comment la fonctionnalité d'intégration Python de JMP vous permet d'appeler du JSL depuis du code Python, et vice versa.
Revenons sur la première partie du code Python permettant d'importer les données de la Banque mondiale, que nous avons utilisée comme exemple jusqu'à présent. Ce code spécifie les pays cibles du G7, les années et les indicateurs (trois au total), puis importe ces données.
PythonコードCode Python
Toutefois, si vous souhaitez restreindre la sélection des pays cibles, utiliser des indicateurs différents ou modifier l'année cible, vous devrez réécrire le code ci-dessus.
Bien que cela ne représente pas un inconvénient majeur en soi, cela devient gênant lorsque vous modifiez fréquemment les conditions ou lorsque d'autres utilisateurs de JMP doivent l'utiliser.
Dans de tels cas, il est pratique de proposer une boîte de dialogue permettant aux utilisateurs de sélectionner des conditions comme celles-ci, leur permettant ainsi de spécifier librement les conditions qu'ils utiliseront pour leur analyse.
ダイアログdialogue
Par conséquent, cette fois-ci, je vais présenter une méthode permettant de rendre un script à conditions fixes plus polyvalent et réutilisable en écrivant les boîtes de dialogue de sélection des colonnes et de saisie des paramètres en JSL .
Veuillez noter que cette section ne fournira pas d'explication détaillée sur la création d'une boîte de dialogue. Son objectif est simplement de démontrer la polyvalence qu'offre la création d'une boîte de dialogue.
Créer une boîte de dialogue
Nous utiliserons JSL pour créer le dialogue. Par conséquent, il s'agit d'un cas où « écrire dans une perspective basée sur JSL (.jsl) est préférable ».
Voici une version améliorée du code JSL (Example1-2_WorldBank.jsl) présenté la dernière fois, qui affiche désormais une boîte de dialogue lors de l'exécution vous permettant d'effectuer les opérations suivantes :
- Sélectionnez les pays cibles parmi les sept pays du G7 (plusieurs sélections sont possibles à l'aide de la touche Ctrl).
- En plus des trois indicateurs précédents, nous avons ajouté la croissance du PIB (taux de croissance du PIB), l'inflation (taux d'inflation), le chômage (taux de chômage) et le taux de natalité (taux de fécondité), et vous pouvez sélectionner les indicateurs cibles parmi eux (plusieurs sélections sont possibles à l'aide de la touche Ctrl).
- Préciser les années de début et de fin
Le code complet est joint à cet article de blog. J'expliquerai ici les points clés concernant la création de la boîte de dialogue.
1. Définition des pays et des indicateurs pouvant être sélectionnés dans la boîte de dialogue.
Nous listons d'abord les pays et les indicateurs sélectionnables. Dans cet exemple, nous avons fait correspondre les codes utilisés par la Banque mondiale aux noms affichés.
// 選択できる国(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. Section de dialogue
Nous allons créer une boîte de dialogue à l'aide de la fonction New Window() . Un exemple de code est fourni dans le guide de script JMP.
La boîte de dialogue est organisée à l'aide d'une liste déroulante verticale (V List Box), d'une liste déroulante horizontale (H List Box) et d'un panneau (cadre d'en-tête), et à l'intérieur de celles-ci, vous placez une liste déroulante pour sélectionner un élément dans une liste et une zone de saisie numérique pour entrer des valeurs numériques.
// ダイアログの起動
selCountry = {};
selInd = {};
startY = .;
endY = .;
nw = New Window( "Get World Bank Data",
<
<MODAL></MODAL>
<BR /> <P><FONT size="4" color="#0000FF">3. Création de variables à transmettre à Python</FONT></P> <P><FONT size="4">Les noms des pays et des indicateurs sélectionnés sont convertis en codes utilisés par la Banque mondiale et répertoriés dans un tableau associatif. <STRONG>L'élément clé réside dans la fonction `Send()` de Python qui suit, transmet les variables JSL sous forme de variables Python portant les mêmes noms.</STRONG> Cela permet au code Python de la fonction `Submit()` suivante d'utiliser directement `countries` et d'autres 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">En utilisant les valeurs des variables transmises à Python, le package pandas_datareader générera un tableau de données pour le pays, l'indicateur et l'année spécifiés.</FONT></P> <P><FONT size="2">Remarque : Ce code privilégie la concision et ne contient donc pas beaucoup de code pour la vérification des valeurs d'entrée ni pour la gestion des erreurs.</FONT></P> <BR /> <P><FONT size="5" color="#FF6600">Visualisez et analysez les données obtenues via l'intégration Python à l'aide de JMP.</FONT></P> <P><FONT size="4">Lorsque vous exécuterez le script JSL, la boîte de dialogue que vous avez créée apparaîtra, vous permettant de spécifier le pays, l'indicateur et l'année pour la création des données.</FONT></P> <P><FONT size="4">Pour comparer les tendances des taux de croissance du PIB, des taux d'inflation et des taux de chômage au Japon, aux États-Unis, en Allemagne et en France avant et après la pandémie de COVID-19, nous allons créer des données couvrant la période de 2017 à 2024.</FONT></P> <P><FONT size="4">Si vous disposez des données sous forme de tableau JMP, vous pouvez afficher un graphique sous les noms de colonnes en cliquant sur l'icône d'histogramme (graphique d'en-tête) dans le tableau. La sélection d'une partie pertinente du graphique sélectionnera les données correspondantes, vous permettant ainsi d'explorer les données dans une certaine mesure au sein du tableau.</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();">Sélection des pays et des indicateurs fondée sur le dialogue</SPAN></SPAN></FONT></P> <P><FONT size="4">Ces données peuvent également servir à analyser les tendances annuelles à l'aide d'un graphique à bulles, comme présenté dans le premier volet. De plus, l'outil de création de graphiques permet de générer des graphiques linéaires et des histogrammes illustrant les tendances annuelles des indicateurs, comme indiqué ci-dessous.</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();">Visualisation</SPAN></SPAN></FONT></P> <P><FONT size="4">De plus, en utilisant [la prévision de séries temporelles], vous pouvez ajuster un modèle de lissage pour obtenir les valeurs futures prévues et les intervalles de prévision.</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();">modèle de séries temporelles</SPAN></SPAN></FONT></P> <BR /> <P><FONT size="5" color="#FF6600">En conclusion</FONT></P> <P>Dans cet article, j'ai présenté une méthode permettant de créer un « outil à usage général » en combinant un code de récupération de données écrit en Python avec une boîte de dialogue créée en JSL.</P> <P><FONT size="4">Les trois points principaux sont les suivants :</FONT></P>
<UL>
<LI><FONT size="4"><STRONG>Les boîtes de dialogue sont créées en JSL :</STRONG> par conséquent, même si le traitement principal est effectué en Python, il est plus facile de gérer un script initial au format .jsl. C’est l’un des points de désaccord concernant le choix entre « écrire en .py ou .jsl » abordé dans la partie 2.</FONT></LI>
</UL>
<UL>
<LI><FONT size="4"><STRONG>Les valeurs reçues sont transmises à Python via la méthode Send() de Python :</STRONG> étant donné que les noms des variables JSL deviennent identiques aux noms des variables Python, il est quasiment inutile de réécrire le code Python lui-même.</FONT></LI>
<LI><FONT size="4"><STRONG>Après avoir importé les données, vous pouvez les explorer à l'aide des tables de données JMP habituelles :</STRONG> vous pouvez utiliser telles quelles les fonctions d'analyse de JMP, telles que les générateurs de graphiques et les prévisions de séries chronologiques.</FONT></LI>
</UL> <P><FONT size="4">En utilisant Python pour l'acquisition et le traitement des données, puis JMP pour leur visualisation et leur analyse, et en confiant la définition des conditions d'entrée à une boîte de dialogue, ces conditions peuvent être fournies de l'extérieur sans modifier le script principal. Ceci accroît la flexibilité du script grâce à l'utilisation d'une boîte de dialogue.</FONT></P> <P><FONT size="4">Dans le prochain épisode ( <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">Partie 4</A> ), comme étape supplémentaire vers la généralisation, nous présenterons un exemple d'utilisation de packages Python pour exécuter des fonctions non incluses dans JMP, et de spécification des variables (colonnes) à analyser à l'aide d'une boîte de dialogue similaire à celle que nous avons créée cette fois-ci.</FONT></P> <BR /> <P><FONT size="4">par Naohiro Masukawa (JMP Japon)</FONT></P> <P><FONT size="4"><U><A href="https://community.jmp.com/t5/Naohiro-Masukawa/bg-p/nmasukawa-blog" target="_blank">Naohiro Masukawa - Communauté d'utilisateurs JMP</A></U></FONT></P>
</LINGO-BODY>
<CODE class=" language-jsl">
<LINGO-TEASER id="lingo-teaser-962736" slang="ja-JP" mode="UPDATE">
<P>Cet article présente brièvement le rôle d'une boîte de dialogue (un écran permettant aux utilisateurs de sélectionner et de saisir des paramètres tels que les pays cibles, les indicateurs et les périodes). Il explique ensuite comment créer un outil d'acquisition de données polyvalent, capable de s'adapter aux changements de paramètres, en créant une boîte de dialogue à l'aide du JSL de JMP et en l'intégrant à Python. L'avantage d'utiliser une boîte de dialogue réside dans la possibilité de modifier les conditions d'utilisation sans réécrire le script, ce qui facilite grandement la réutilisation et le partage avec d'autres utilisateurs.</P>
<BR />
</LINGO-TEASER>