Python Script アイコン 使い方ガイド 基礎編

はじめに

基礎編では、次の内容について解説します。

  1. Python Script アイコンの配置方法
  2. ログの表示方法
  3. csvファイルの読み込み方
  4. 入力の増やし方
  5. 出力の増やし方
  6. 動作確認用インタプリタの使い方

Python Script アイコンに初めて触れる人を対象にしています。

基礎編で使用しているデータは、「共有ワークスペース」にある「菖蒲.dft」です。

共有ワークスペース > サンプル > Alkano > データ > 菖蒲.dft

菖蒲.dft

1. Python Script アイコンを配置してみよう

この節では Python Script アイコンをシナリオに配置し、 「実行」して実行結果を生成します。

また、Python Script アイコンのパラメータ編集画面を開いて、 「入力設定」や「出力設定」でスクリプトとの対応関係を確認します。

【手順の概要】

  1. シナリオに「菖蒲.dft」を配置する
  2. 「菖蒲.dft」アイコンに「Python Script」アイコンを選択してつなぐ
  3. 「Python Script」アイコンを実行する
  4. 「Python Script」アイコンの設定を確認する
  5. 「Input Matching Controller」で入出力データを確認する

では、試してみましょう。

  1. シナリオに「菖蒲.dft」を配置する

    シナリオを新規に作成して、シナリオエリアに開きます。

    左のワークスペースエリアから「菖蒲.dft」をドラッグ&ドロップしてシナリオに配置します。

    菖蒲.dft

  2. 「菖蒲.dft」アイコンに「Python Script」アイコンを選択してつなぐ

    「菖蒲.dft」アイコンの右にある […] から [+] をクリックします。

    メニュー

    選択すると「Workflow Creation Palette」が起動します。(下図左)

    下方にある 「Python Script」アイコン [Python Script] をクリックして選択します。

    すると「Python Script」アイコンが「菖蒲.dft」アイコンに接続された状態で配置されます。(下図右)

    Workflow Creation Palette

  3. 「Python Script」アイコンを実行する

    「Python Script」アイコンの右にある […] から [▶] をクリックします。(下図左)

    実行すると「Python Script」の左上には[レ]マークが表示され、実行結果が生成された状態となります。(下図右)

    Python Script 実行

    入力データ「菖蒲.dft」と同じ結果であることが、可視化画面で確認できます。

    Python Script 結果

  4. 「Python Script」アイコンの設定を確認する

    「Python Script」アイコンをダブルクリックして、パラメータ編集画面を表示します

    Python Script 編集

    中央には、Python スクリプト

    result = table

    が表示されています。

    パラメータ編集画面の上部の「入力設定」と「出力設定」の右にある [v] をクリックして、 「入力設定」と「出力設定」を開きます。

    Python Script 入出力設定

    「入力設定」の「名前」はtable 、「出力設定」の「名前」はresult と表示されています。

    これはスクリプト

    result = table

    で使用されている変数名と対応します。

    「名前」の右には「型」が2つとも table と表示されています。 テーブルデータを入力とする場合は、入力設定の型をtableとします。同様に、出力を可視化画面にテーブル形式で表示させる場合は、出力設定の型をtableとします。

  5. 「Input Matching Controller」で入出力データを確認する

    「Python Script」アイコンでは、パラメータ編集画面の「入力設定」と「Input Matching Controller」が連動しています。 「Input Matching Controller」 とは、分析フロー上の入力のリンク(矢印)とアイコンで利用するデータを対応づけるための機能です。 「Input Matching Controller」を開くには、「Python Script」アイコンの右にある […] から [-□-](インプット設定) を選択します。

    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 文の内容を確認します。 さらに、例外を発生させてエラー情報が「ログ」の中に含まれることを確認します。

【手順の概要】

  1. 「Python Script」アイコンのパラメータ編集画面を開く
  2. Python スクリプトに print 文を追加し、実行する
  3. 「ジョブ一覧」を表示する
  4. print 文の内容を「ジョブ一覧」の「ログ」に表示する
  5. エラーを起こして「ジョブ一覧」の「ログ」に表示する

では、試してみましょう。

  1. 「Python Script」アイコンのパラメータ編集画面を開く

    前節で作成したフローの「Python Script」アイコンをダブルクリックして、 パラメータ編集画面を表示します。

    Python Script 編集

  2. Python スクリプトに print 文を追加する

    中央の Python スクリプトに print文 print("hello") を追加して実行します。

    Python Script 編集 print

  3. 「ジョブ一覧」を表示する

    MSIP画面の右上のアカウントが表示されているボタンをクリックします。

    MSIP画面

    サイドメニューが開きますので「ジョブ一覧を開く」を選択して 「ジョブ一覧」を開きます。 右下図では、今実行したのシナリオ「基礎編」が先頭に表示されています。

    サイドメニュー

  4. print 文の内容を「ジョブ一覧」の「ログ」に表示する

    開いた「ジョブ一覧」では、今作業中のシナリオのうち、 最も新しい日付のジョブを選択します。

    ここでは先頭行が該当するので、「シナリオ」が「基礎編」であるセルをクリックします。

    すると、「基礎編」が選択されて下の「ログ」にログが表示されます。 ログの中に print 文 hello が確認できます。

    中央のツマミをドラッグ&ドロップでスライドさせ、 下方の「ログ」の領域を大きくして見やすくできます。

    ジョブ一覧 選択

  5. エラーを起こして「ジョブ一覧」の「ログ」に表示する

    「Python Script」アイコンのスクリプトの入力である変数 table を定義されていない table1 に変更して実行します。 この場合、結果はエラーとなります。

    Python Script 編集 エラー

    「ジョブ一覧」のログにエラーが表示されているか確かめましょう。

    「ジョブ一覧」の先頭行の 「シナリオ」の「基礎編」をクリックします。 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

【手順の概要】

  1. 「Python Script」アイコンをシナリオに配置する
  2. read_csv 関数を使ったスクリプトに修正する
  3. 「Python Script」アイコンを実行する

では、試してみましょう。

  1. 「Python Script」アイコンをシナリオに配置する

    シナリオの空いているます目で右クリックし、メニューをポップアップします。 ポップアップしたメニューから [Python スクリプトを追加] を選択すると、 「Python Script」アイコンが配置されます

    先頭ノード python

  2. read_csv 関数を使ったスクリプトに修正する

    「Python Script」アイコンをダブルクリックして、パラメータ編集画面を表示します。

    「入力設定」を開いて [-] をクリックし、設定されていない状態にします。

    入力設定を削除

    また、スクリプトは初期状態の

    result = teble
    

    から

    from msi.common.dataframe import read_csv
    result = read_csv("C:/samples/iris.csv")
    

    に修正します。

    Python Script 編集

  3. 「Python Script」アイコンを実行する

    スクリプトを修正した後、[実行]をクリックします。 スクリプトの実行が終了すると、可視化画面で CSV ファイルが読まれたことが確認できます。

    Python Script 実行結果

この節のポイントです。

Python Script アイコンでは read_csv 関数を使用して、サーバにある CSV ファイルを 読み込むことができます。

【Q&A1】 Python Script アイコンを配置しただけですが、実行結果のある状態になります。なぜですか?

Python Script アイコンを配置したところ、アイコンを実行してないのに、 実行結果のある状態 「レ」 となるのは、キャッシュ機能によるものです。

結果あり

MSIP では、入力データとパラメータの組をインデックスとして実行結果を 検索する機能(キャッシュ機能)を備えています。

Python Script アイコンでは、パラメータはスクリプトとなります。 過去に、同じ入力データとスクリプトで実行した実行結果が存在する場合は、 それを実行結果とします。 そのため、入力データとつないだだけで結果がある状態となります。

実行結果がある状態で、アイコンを実行すると 「対象アイコンは既に実行されていますが、再実行しますか?」 と尋ねられます。 再実行を実施すると、結果は更新されます。

4. 2つのデータを Python Script アイコンの入力にしよう

この節では、「入力設定」で入力データを追加し、 2つのデータから新たなデータを生成して出力とします。 完成イメージは次のフローとなります。

2入力1出力

【手順の概要】

  1. 「菖蒲.dft」と「菖蒲(1).dft」および「Python Script」をシナリオに配置する
  2. 「入力設定」に入力データを追加する
  3. 2つの入力データから新たにデータを生成するスクリプトに変更する
  4. スクリプトを実行し、実行結果を確認する

では、試してみましょう。

  1. 「菖蒲.dft」と「菖蒲(1).dft」および「Python Script」をシナリオに配置する

    左のワークスペースエリアから「菖蒲.dft」をドラッグ&ドロップしてシナリオに配置します。

    ドラッグ&ドロップを2回繰返して、「菖蒲.dft」アイコン と「菖蒲(1).dft」アイコン が 存在する状態にします。 同じデータを配置すると、2つ目以降のデータには(1),(2)…と番号が割り振られます。

    さらに、2つのアイコンを「Python Script」アイコンにつなげます。

    2入力1出力

    「Python Script」アイコンは、キャッシュ機能により前回の実行結果がヒットして実行結果があるかもしれません。上図はその状況です。

  2. 「入力設定」に入力データを追加する

    「Python Script」アイコンをダブルクリックして、パラメータ編集画面を表示します。

    「入力設定」を開いて [+] をクリックし、入力データを追加します。 追加した入力データの名前は table1, table2 のように番号が振られます。 追加後に名前を変更することも可能です。

    「入力設定」の「名前」欄が、スクリプト内の変数名に対応します。 「入力設定」の「名前」が table1であるテーブルデータを利用する際は、スクリプト内に table1 と記載します。

    [実行] はクリックできない状態となり、 [保存] がクリックできるようになります。 [保存]をクリックして「Python Script」アイコンが2入力を受けつける設定に変更します。

    2入力で保存

    変更されたことは「Input Matching Controller」 で確認できます。

    入力追加の確認

  3. 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 に設定しています。

    2入力 編集

  4. スクリプトを実行し、実行結果を確認する

    スクリプトを修正した後、[実行]をクリックします。 スクリプトの実行が終了したら、可視化画面で「Python Script」の出力結果を確認します。 2つの入力データから計算した値が 可視化画面の result テーブルで確認できます。

    Python Script 実行結果

この節のポイントです。

Python Script アイコンの「入力設定」で入力データを追加すると複数の入力データを扱うことができます。

5. 2つのデータを Python Script アイコンの出力にしよう

この節では、「出力設定」で出力データを追加して2つのデータを出力とします。

【手順の概要】

  1. 「菖蒲.dft」と「Python Script」をシナリオに配置する
  2. 「出力設定」に出力データを追加する
  3. 1つの入力データから新たに2つのデータを生成するスクリプトに変更する
  4. スクリプトを実行し、実行結果を確認する

では、試してみましょう。

  1. 「菖蒲.dft」と「Python Script」をシナリオに配置する

    シナリオを新規に作成して、シナリオエリアに開きます。

    左のワークスペースエリアから「菖蒲.dft」をドラッグ&ドロップしてシナリオに配置します。

    菖蒲.dft

    さらに、「菖蒲.dft」アイコンから「Python Script」アイコンへつなげます。

    1入力2出力

  2. 「出力設定」に出力データを追加する

    「Python Script」アイコンをダブルクリックして、パラメータ編集画面を表示します。

    「出力設定」を開いて [+] をクリックし、出力データを追加します。 「出力設定」の「名前」欄が、スクリプト内の変数名に対応します。 追加した出力データの名前は result1, result2 のように番号が振られます。追加後に名前を変更することも可能です。

    「出力設定」の「名前」が result1 であるテーブルデータに出力結果を保存する場合は、 スクリプト内に result1 = ... と記載します。

    「出力設定」に出力データが追加されると[保存] がクリック可能となります。 出力データが2つであることを確認して、[保存]をクリックします。

    2出力で保存

  3. 1つの入力データから新たに2つのデータを生成するスクリプトに変更する

    中央の Python スクリプトを

    result = table[1] * 10
    result1 = table[1] * 5
    

    に変更します。

    result は「菖蒲.dft」の2列目である「がく長」を10倍した値が、 result1 は5倍した値が出力となります。

    2出力 編集

  4. スクリプトを実行し、実行結果を確認する

    スクリプトを修正した後、[実行]をクリックします。 スクリプトの実行が終了したら、可視化画面で「Python Script」の出力結果を確認します。

    result result1 の 2 つのテーブルが出力され、それぞれ入力の「菖蒲.dft」の「がく長」の 10倍の値と5倍の値のデータとなっています。

    Python Script 実行結果

この節のポイントです。

Python Script アイコンの「出力設定」で出力データを追加すると複数の出力データを扱うことができます。

6. 動作確認用インタプリタで入力データを見てみよう

この節では、前節で作成したフローの「Python Script」アイコンの入力データを 「動作確認用インタプリタ」で確認します。

「動作確認用インタプリタ」はパラメータ編集画面の下部にあります。 入力データを確認したり、 対話的にスクリプトを実行してデバッグする、などができます。

インタプリタ

【手順の概要】

  1. インタプリタに入力データを取り込む
  2. 入力データをインタプリタ上で確認する
  3. 入力データを使用して計算してみる

では、試してみましょう。

  1. インタプリタに入力データを取り込む

    [データ取り込み] をクリックすると table に入力データが取り込まれます。

    インタプリタ

  2. 入力データをインタプリタ上で確認する

    下方にプロンプトが In[最も大きい数字]: が表示されている横にクリックして、 マウスカーソルを移動します。 (下図では In[3]:

    table と入力して、Enterで実行します。実行すると、tableの内容が表示されます。

    インタプリタ

  3. 入力データを使用して計算してみる

    インタプリタにtable[1] * 10と入力すると、がく長の10倍が出力できます。

    インタプリタ

    このようにインタプリタはデバッグなどに利用できます。

【注意】 「動作確認用インタプリタ」には入力中のスクリプトが自動的に読み込まれるわけではありません。 必要に応じて、コンソールへ入力中のスクリプトをコピー&ペーストして実行してください。

この節のポイントです。

Python Script アイコンの「動作確認用インタプリタ」では [データ取り込み] を使用して データの内容を確認したり、対話的にスクリプトを実行してデバッグなどを行うことができます。

おわりに

今回利用した table や result は MSI DataFrame という弊社で 独自開発している独自のデータフレームオブジェクトです。

MSI DataFrame の利用方法については製品のヘルプからたどれます 「MSI DataFrame マニュアル」をご参照ください。

基礎編では、次の内容について解説しました。

  1. Python Script アイコンの配置方法
  2. ログの表示方法
  3. csvファイルの読み込み方
  4. 入力の増やし方
  5. 出力の増やし方
  6. 動作確認用インタプリタの使い方

中級編では、

  1. pandas のデータフレームへ変換
  2. pandas の関数の利用方法
  3. matplotlib を利用したグラフ出力

について解説します。

中級編はこちら