はじめに
基礎編では、次の内容について解説します。
- Python Script アイコンの配置方法
- ログの表示方法
- csvファイルの読み込み方
- 入力の増やし方
- 出力の増やし方
- 動作確認用インタプリタの使い方
Python Script アイコンに初めて触れる人を対象にしています。
基礎編で使用しているデータは、「共有ワークスペース」にある「菖蒲.dft」です。
共有ワークスペース > サンプル > Alkano > データ > 菖蒲.dft
1. Python Script アイコンを配置してみよう
この節では Python Script アイコンをシナリオに配置し、 「実行」して実行結果を生成します。
また、Python Script アイコンのパラメータ編集画面を開いて、 「入力設定」や「出力設定」でスクリプトとの対応関係を確認します。
【手順の概要】
- シナリオに「菖蒲.dft」を配置する
- 「菖蒲.dft」アイコンに「Python Script」アイコンを選択してつなぐ
- 「Python Script」アイコンを実行する
- 「Python Script」アイコンの設定を確認する
- 「Input Matching Controller」で入出力データを確認する
では、試してみましょう。
シナリオに「菖蒲.dft」を配置する
シナリオを新規に作成して、シナリオエリアに開きます。
左のワークスペースエリアから「菖蒲.dft」をドラッグ&ドロップしてシナリオに配置します。
「菖蒲.dft」アイコンに「Python Script」アイコンを選択してつなぐ
「菖蒲.dft」アイコンの右にある
[…]
から[+]
をクリックします。選択すると「Workflow Creation Palette」が起動します。(下図左)
下方にある 「Python Script」アイコン
[Python Script]
をクリックして選択します。すると「Python Script」アイコンが「菖蒲.dft」アイコンに接続された状態で配置されます。(下図右)
「Python Script」アイコンを実行する
「Python Script」アイコンの右にある
[…]
から[▶]
をクリックします。(下図左)実行すると「Python Script」の左上には
[レ]
マークが表示され、実行結果が生成された状態となります。(下図右)入力データ「菖蒲.dft」と同じ結果であることが、可視化画面で確認できます。
「Python Script」アイコンの設定を確認する
「Python Script」アイコンをダブルクリックして、パラメータ編集画面を表示します
中央には、Python スクリプト
result = table
が表示されています。
パラメータ編集画面の上部の「入力設定」と「出力設定」の右にある
[v]
をクリックして、 「入力設定」と「出力設定」を開きます。「入力設定」の「名前」は
table
、「出力設定」の「名前」はresult
と表示されています。これはスクリプト
result = table
で使用されている変数名と対応します。
「名前」の右には「型」が2つとも
table
と表示されています。 テーブルデータを入力とする場合は、入力設定の型をtable
とします。同様に、出力を可視化画面にテーブル形式で表示させる場合は、出力設定の型をtable
とします。「Input Matching Controller」で入出力データを確認する
「Python Script」アイコンでは、パラメータ編集画面の「入力設定」と「Input Matching Controller」が連動しています。 「Input Matching Controller」 とは、分析フロー上の入力のリンク(矢印)とアイコンで利用するデータを対応づけるための機能です。 「Input Matching Controller」を開くには、「Python Script」アイコンの右にある
[…]
から[-□-]
(インプット設定) を選択します。「Input Matching Controller」には 「入力設定」の「名前」にある
table
が表示されています。 「菖蒲.dft」 アイコンの実行結果である 「data」が「Python Script」 アイコンの入力table
に なっていることがわかります。
この節のポイントです。
Python Script アイコンのスクリプトは、初期値として
result = table
となっています。
result
は出力、table
は入力です。
それらは「入力設定」と「出力設定」の「名前」で設定されています。
つまり、このスクリプトの処理は、入力である table を 出力である result にそのまま渡していることになります。
2. ログを表示してみよう
この節では、Python Scriptアイコンのログの表示方法について解説します。
ログの表示は処理の途中結果を確認したり、 実行がどこまで進んだかを確認するために利用します。
前節で作成したフローの「Python Script」アイコンのスクリプトに print 文を追加し、 「ジョブ一覧」の「ログ」で print 文の内容を確認します。 さらに、例外を発生させてエラー情報が「ログ」の中に含まれることを確認します。
【手順の概要】
- 「Python Script」アイコンのパラメータ編集画面を開く
- Python スクリプトに print 文を追加し、実行する
- 「ジョブ一覧」を表示する
- print 文の内容を「ジョブ一覧」の「ログ」に表示する
- エラーを起こして「ジョブ一覧」の「ログ」に表示する
では、試してみましょう。
「Python Script」アイコンのパラメータ編集画面を開く
前節で作成したフローの「Python Script」アイコンをダブルクリックして、 パラメータ編集画面を表示します。
Python スクリプトに print 文を追加する
中央の Python スクリプトに print文
print("hello")
を追加して実行します。「ジョブ一覧」を表示する
MSIP画面の右上のアカウントが表示されているボタンをクリックします。
サイドメニューが開きますので「ジョブ一覧を開く」を選択して 「ジョブ一覧」を開きます。 右下図では、今実行したのシナリオ「基礎編」が先頭に表示されています。
print 文の内容を「ジョブ一覧」の「ログ」に表示する
開いた「ジョブ一覧」では、今作業中のシナリオのうち、 最も新しい日付のジョブを選択します。
ここでは先頭行が該当するので、「シナリオ」が「基礎編」であるセルをクリックします。
すると、「基礎編」が選択されて下の「ログ」にログが表示されます。 ログの中に print 文
hello
が確認できます。中央のツマミをドラッグ&ドロップでスライドさせ、 下方の「ログ」の領域を大きくして見やすくできます。
エラーを起こして「ジョブ一覧」の「ログ」に表示する
「Python Script」アイコンのスクリプトの入力である変数
table
を定義されていないtable1
に変更して実行します。 この場合、結果はエラーとなります。「ジョブ一覧」のログにエラーが表示されているか確かめましょう。
「ジョブ一覧」の先頭行の 「シナリオ」の「基礎編」をクリックします。
table1
が定義されていないというエラーを確認できます。
この節のポイントです。
Python Script アイコンのスクリプトの print 文や発生したエラー情報は 「ジョブ一覧」の「ログ」の中に表示されます。 Python Script アイコンの実行がエラー終了したときは、まずは、「ジョブ一覧」の「ログ」を確認するとよいでしょう。
3. CSV ファイルを読み込んでみよう
この節では、Python Script アイコンのスクリプトで read_csv 関数を使用し CSV ファイルを読んで出力とします。 また、「入力設定」では入力データをなしとし、フローの起点アイコンにしてみます。
対象の CSV ファイルは、MSIP をインストールした PC(サーバ)
に存在することが前提です。
この節では、iris.csv を利用します。
ここでは CSV ファイルのパスを C:/samples/iris.csv
とします。
【注意】 パス区切りに \
(バックスラッシュ)を使用する場合は \\
のように2つ重ねてください。
例) C:\\samples\\iris.csv
この節ではパスの区切りを /
(スラッシュ)としています。
例) C:/samples/iris.csv
【手順の概要】
- 「Python Script」アイコンをシナリオに配置する
- read_csv 関数を使ったスクリプトに修正する
- 「Python Script」アイコンを実行する
では、試してみましょう。
「Python Script」アイコンをシナリオに配置する
シナリオの空いているます目で右クリックし、メニューをポップアップします。 ポップアップしたメニューから
[Python スクリプトを追加]
を選択すると、 「Python Script」アイコンが配置されますread_csv 関数を使ったスクリプトに修正する
「Python Script」アイコンをダブルクリックして、パラメータ編集画面を表示します。
「入力設定」を開いて
[-]
をクリックし、設定されていない状態にします。また、スクリプトは初期状態の
result = teble
から
from msi.common.dataframe import read_csv result = read_csv("C:/samples/iris.csv")
に修正します。
「Python Script」アイコンを実行する
スクリプトを修正した後、
[実行]
をクリックします。 スクリプトの実行が終了すると、可視化画面で CSV ファイルが読まれたことが確認できます。
この節のポイントです。
Python Script アイコンでは read_csv 関数を使用して、サーバにある CSV ファイルを 読み込むことができます。
【Q&A1】 Python Script アイコンを配置しただけですが、実行結果のある状態になります。なぜですか?
Python Script アイコンを配置したところ、アイコンを実行してないのに、
実行結果のある状態 「レ」
となるのは、キャッシュ機能によるものです。
MSIP では、入力データとパラメータの組をインデックスとして実行結果を 検索する機能(キャッシュ機能)を備えています。
Python Script アイコンでは、パラメータはスクリプトとなります。 過去に、同じ入力データとスクリプトで実行した実行結果が存在する場合は、 それを実行結果とします。 そのため、入力データとつないだだけで結果がある状態となります。
実行結果がある状態で、アイコンを実行すると 「対象アイコンは既に実行されていますが、再実行しますか?」 と尋ねられます。 再実行を実施すると、結果は更新されます。
4. 2つのデータを Python Script アイコンの入力にしよう
この節では、「入力設定」で入力データを追加し、 2つのデータから新たなデータを生成して出力とします。 完成イメージは次のフローとなります。
【手順の概要】
- 「菖蒲.dft」と「菖蒲(1).dft」および「Python Script」をシナリオに配置する
- 「入力設定」に入力データを追加する
- 2つの入力データから新たにデータを生成するスクリプトに変更する
- スクリプトを実行し、実行結果を確認する
では、試してみましょう。
「菖蒲.dft」と「菖蒲(1).dft」および「Python Script」をシナリオに配置する
左のワークスペースエリアから「菖蒲.dft」をドラッグ&ドロップしてシナリオに配置します。
ドラッグ&ドロップを2回繰返して、「菖蒲.dft」アイコン と「菖蒲(1).dft」アイコン が 存在する状態にします。 同じデータを配置すると、2つ目以降のデータには(1),(2)…と番号が割り振られます。
さらに、2つのアイコンを「Python Script」アイコンにつなげます。
「Python Script」アイコンは、キャッシュ機能により前回の実行結果がヒットして実行結果があるかもしれません。上図はその状況です。
「入力設定」に入力データを追加する
「Python Script」アイコンをダブルクリックして、パラメータ編集画面を表示します。
「入力設定」を開いて
[+]
をクリックし、入力データを追加します。 追加した入力データの名前は table1, table2 のように番号が振られます。 追加後に名前を変更することも可能です。「入力設定」の「名前」欄が、スクリプト内の変数名に対応します。 「入力設定」の「名前」が
table1
であるテーブルデータを利用する際は、スクリプト内にtable1
と記載します。[実行]
はクリックできない状態となり、[保存]
がクリックできるようになります。[保存]
をクリックして「Python Script」アイコンが2入力を受けつける設定に変更します。変更されたことは「Input Matching Controller」 で確認できます。
2つの入力データから新たにデータを生成するスクリプトに変更する
中央の Python スクリプトを2つの入力データを使用するように変更します。
スクリプトを
result = table[1] * 10 + table1[1] * 5
に変更します。
table
は「Input Matching Controller」で確認したtable
に対応する入力テーブルである「菖蒲.dft」です。table1
は「Input Matching Controller」で確認したtable1
に対応する入力テーブルである「菖蒲.dft(1)」です。table[1]
は「菖蒲.dft」の2列目である「がく長」です。table1[1]
は「菖蒲.dft(1)」の2列目である「がく長」です。 各テーブルの2列目の値をそれぞれ10倍、5倍した値を足した結果を出力result
に設定しています。スクリプトを実行し、実行結果を確認する
スクリプトを修正した後、
[実行]
をクリックします。 スクリプトの実行が終了したら、可視化画面で「Python Script」の出力結果を確認します。 2つの入力データから計算した値が 可視化画面の result テーブルで確認できます。
この節のポイントです。
Python Script アイコンの「入力設定」で入力データを追加すると複数の入力データを扱うことができます。
5. 2つのデータを Python Script アイコンの出力にしよう
この節では、「出力設定」で出力データを追加して2つのデータを出力とします。
【手順の概要】
- 「菖蒲.dft」と「Python Script」をシナリオに配置する
- 「出力設定」に出力データを追加する
- 1つの入力データから新たに2つのデータを生成するスクリプトに変更する
- スクリプトを実行し、実行結果を確認する
では、試してみましょう。
「菖蒲.dft」と「Python Script」をシナリオに配置する
シナリオを新規に作成して、シナリオエリアに開きます。
左のワークスペースエリアから「菖蒲.dft」をドラッグ&ドロップしてシナリオに配置します。
さらに、「菖蒲.dft」アイコンから「Python Script」アイコンへつなげます。
「出力設定」に出力データを追加する
「Python Script」アイコンをダブルクリックして、パラメータ編集画面を表示します。
「出力設定」を開いて
[+]
をクリックし、出力データを追加します。 「出力設定」の「名前」欄が、スクリプト内の変数名に対応します。 追加した出力データの名前は result1, result2 のように番号が振られます。追加後に名前を変更することも可能です。「出力設定」の「名前」が
result1
であるテーブルデータに出力結果を保存する場合は、 スクリプト内にresult1 = ...
と記載します。「出力設定」に出力データが追加されると
[保存]
がクリック可能となります。 出力データが2つであることを確認して、[保存]
をクリックします。1つの入力データから新たに2つのデータを生成するスクリプトに変更する
中央の Python スクリプトを
result = table[1] * 10 result1 = table[1] * 5
に変更します。
result
は「菖蒲.dft」の2列目である「がく長」を10倍した値が、result1
は5倍した値が出力となります。スクリプトを実行し、実行結果を確認する
スクリプトを修正した後、
[実行]
をクリックします。 スクリプトの実行が終了したら、可視化画面で「Python Script」の出力結果を確認します。result
result1
の 2 つのテーブルが出力され、それぞれ入力の「菖蒲.dft」の「がく長」の 10倍の値と5倍の値のデータとなっています。
この節のポイントです。
Python Script アイコンの「出力設定」で出力データを追加すると複数の出力データを扱うことができます。
6. 動作確認用インタプリタで入力データを見てみよう
この節では、前節で作成したフローの「Python Script」アイコンの入力データを 「動作確認用インタプリタ」で確認します。
「動作確認用インタプリタ」はパラメータ編集画面の下部にあります。 入力データを確認したり、 対話的にスクリプトを実行してデバッグする、などができます。
【手順の概要】
- インタプリタに入力データを取り込む
- 入力データをインタプリタ上で確認する
- 入力データを使用して計算してみる
では、試してみましょう。
インタプリタに入力データを取り込む
[データ取り込み]
をクリックするとtable
に入力データが取り込まれます。入力データをインタプリタ上で確認する
下方にプロンプトが
In[最も大きい数字]:
が表示されている横にクリックして、 マウスカーソルを移動します。 (下図ではIn[3]:
)table
と入力して、Enterで実行します。実行すると、table
の内容が表示されます。入力データを使用して計算してみる
インタプリタに
table[1] * 10
と入力すると、がく長の10倍が出力できます。このようにインタプリタはデバッグなどに利用できます。
【注意】 「動作確認用インタプリタ」には入力中のスクリプトが自動的に読み込まれるわけではありません。 必要に応じて、コンソールへ入力中のスクリプトをコピー&ペーストして実行してください。
この節のポイントです。
Python Script アイコンの「動作確認用インタプリタ」では [データ取り込み]
を使用して
データの内容を確認したり、対話的にスクリプトを実行してデバッグなどを行うことができます。
おわりに
今回利用した table や result は MSI DataFrame という弊社で 独自開発している独自のデータフレームオブジェクトです。
MSI DataFrame の利用方法については製品のヘルプからたどれます 「MSI DataFrame マニュアル」をご参照ください。
基礎編では、次の内容について解説しました。
- Python Script アイコンの配置方法
- ログの表示方法
- csvファイルの読み込み方
- 入力の増やし方
- 出力の増やし方
- 動作確認用インタプリタの使い方
中級編では、
- pandas のデータフレームへ変換
- pandas の関数の利用方法
- matplotlib を利用したグラフ出力
について解説します。