「JMPでPythonのコードが書ける!」
これは事実ですが、この表現だけだと、「わざわざJMPで書かなくても、Pythonのエディタや統合開発環境を使えばいいのでは?」と思ってしまうかもしれません。
これから説明することは、JMPに搭載されているPython統合(インテグレーション)機能についてです。この機能を使うことで、
「JMPの機能をPython環境を使って強化・拡張できる」
というメリットがあります。

とはいっても、この表現でもいまいちピンとこなく、「結局何ができるの?」と思うかもしれません。
そこで本ブログシリーズ(全4回)では、結局何ができるんだということと、どのようなメリットがあるのかについて、具体的なコードや利用例を挙げながら説明していきます。
第1回では、簡単な利用例を通して、PythonとJMPを組み合わせるメリットを紹介します。具体的には、次の内容を取り上げます。
- JMPにPython環境が同梱されていること
- PythonスクリプトエディタでPythonのコードを記述・実行する方法
- パッケージのインストールと、JMP独自のjmp/jmputilsパッケージ
- 利用例:pandas_datareaderで取得した経済指標データを、JMPのバブルプロットで可視化する
※本記事は、Windows版JMPの利用を想定としたものになっています。
JMPにPython環境がインストールされる
本記事執筆時点でのJMPの最新バージョンは「JMP 19」ですが、一つ前のバージョンである「JMP 18」からPython統合機能が大幅に拡張されました。
JMPをインストールすると、インストールフォルダ内にPython環境も併せてインストールされます。そのため、JMPを使うマシンにPythonを別途インストールしておく必要はありません。
また、このPython環境の恩恵により、JMP内のエディタでPythonコードを記述・実行したり、JMPのデータテーブルなどを操作できるjmpパッケージを利用したりできます。

※注意:ユーザ自ら上記の「jmp_python.exe」を実行する必要はありません。
Pythonスクリプトエディタ
JMPの「Pythonスクリプトエディタ」では、エディタ内にPythonのコードを記述し、実行することができます。
JMPホームウィンドウのメニューから [ファイル] > [新規作成] > [Pythonスクリプト]を選択すると、Pythonスクリプトエディタが開きます。記述したコードは、[編集] > [スクリプトの実行]で実行でき、実行結果はログウィンドウに出力されます。

パッケージのインストールと読み込み
PythonでpandasやNumPyなどのパッケージを利用する際は、最初にこれらのパッケージをインストールし、コード内でimport 文などを使い読み込む必要があります。
JMPのPython統合環境でも同様に、パッケージを利用するには、その環境内にパッケージをインストールする必要があります。
また、jmp、 jmputilsというJMP独自のパッケージを利用できます。これらのパッケージを使うと主に次のようなことができます。
- jmp:JMPデータテーブルの操作(新規作成、列の追加・削除・変更など)、開いているJMPデータテーブルの情報の取得
- jmputils:JMPのPython統合環境へのパッケージのインストール
この後の例では、Pythonのpandasパッケージとpandas_datareaderパッケージを使うため、次のコマンドでインストールします。

一度JMPのPython環境内にインストールすれば、JMPを終了しても、次回以降に再度インストールする必要はありません。
JMPでPython統合環境を使うメリット
JMPでPython統合環境を使うメリットは、PythonとJMPそれぞれの得意分野を組み合わせられる点にあります。それぞれの得意分野を挙げておきます。
Python:JMPに搭載されていない機能や分析手法を使うことができる
Pythonには、データの取得や最新の分析手法を実装したパッケージが数多く公開されています。これらを利用することで、JMPに標準搭載されていない機能や手法も分析に取り入れることができます。
JMP:GUIでの操作、データを「探索する」ことが得意
一方、JMPはGUIによるデータテーブルの操作、対話的な分析、グラフとデータテーブルの連動といった、データを探索するための機能に優れています。こうした操作をPythonだけで実現するのは簡単ではありません。
つまり、「Pythonで分析手法の幅を広げ、JMPで結果を探索・可視化する」というように、双方のよいところを互いに補完することができるのです。
このことを、次の例1で説明します。
利用例1:pandas_datareaderを用いた経済指標データの読み込みと可視化
Pythonのpandas_datareaderパッケージを利用すると、世界銀行(World Bank)が提供する国別の経済データを取得することができます。
そこで、JMPのPython統合環境を使ってこれらのデータを取得し、JMPのデータテーブルとして読み込みます。さらに、JMPの「バブルプロット」を用いて、年ごと・国ごとの指標の推移を可視化します。
取得するデータ:G7各国の2000年から2024年の年ごとの一人当たりGDP、平均寿命、人口
コード例は、以下の通りです(Example1-1_WorldBank.py、本ブログに付属)。普段Pythonコードを書いている方であれば、通常のPythonコードと同じように記述されていることが分かると思います。
このコードでは、主に以下の2つのことを記述しています。
- pandas_datareaderパッケージをインポートして、世界銀行のデータを取得する
- 取得したデータ(DataFrame形式)の列名の変更などを行い、JMPのデータテーブルとして読み込む

jmp.from_dataframe() は、pandasなどのデータフレームからJMPのデータテーブルを作成する関数です。
- 上記のコードのうち、JMPに固有の記述は、import jmpと最後のjmp.from_dataframe(df)のみです。それ以外は、普通のPythonコードです。
このコマンドを、スクリプトエディタのメニューから [編集] > [スクリプトの実行]を選択すると、次のようなJMPのデータテーブルを開くことができます。

JMPのデータテーブルとして取得できましたので、ここからはJMPの機能を使ってデータを可視化、探索できます。
一例としてJMPの [バブルプロット] を用い、次のように列を指定すると、各国のGDPと平均寿命の関係の推移をアニメーションで確認することができます。

このコードとその後の分析について、PythonとJMPがそれぞれ担った役割は次の通りです。
Python:pandas_datareaderを使って、世界銀行の経済指標データを取得する
JMP:取得したデータを、アニメーション表示ができるバブルプロットで可視化する
双方の得意なことを組み合わせることで、一連の分析が実現できた例といえます。
尚、Pythonスクリプトで記述したコードは、[ファイル] > [名前をつけて保存]を選択し、Pythonコード形式(拡張子 py)で保存できます。
jmp、jmputilsパッケージの詳細(スクリプトの索引の利用)
jmp、jmputilsパッケージで利用できるコマンドの詳細は、スクリプトの索引([ヘルプ] > [スクリプトの索引])から確認できます。左上の項目を「Python」に切り替えると、各コマンドの構文や説明、コード例を確認することができます。

おわりに
第1回では、JMPにPython環境が同梱されていること、Pythonスクリプトエディタでコードを実行できること、そしてPythonで取得したデータをJMPのデータテーブルとして扱えることを紹介しました。
次回(第2回)では、例1に対してデータの取得から可視化(バブルプロット)までの一連の作業をコード化する方法、Pythonを起点とした書き方(.py)とJSLを起点とした書き方(.jsl)の違いについて取り上げます。
by 増川 直裕(JMP Japan)
Naohiro Masukawa - JMP User Community
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.