3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Modelerスクリプトで複数ファイルを加工して結合する(SPSS Modeler データ加工逆引き9-15)

Last updated at Posted at 2023-04-25

複数ファイルを加工して結合する(Modelerスクリプトによるループ処理)

スクリーンショット 2023-04-06 13.19.41.png

1.想定される利用目的

・同じような処理を効率的に実施するためPythonスクリプトを利用してループさせる
・IoTセンサーデータのような日毎ファイルから特徴量を抽出して分析用テーブルを作成する

2.サンプルストリームのダウンロード

サンプルデータ1(右クリックでダウンロード)
https://raw.githubusercontent.com/yoichiro0903n/blue/main/1.csv

サンプルデータ2
https://raw.githubusercontent.com/yoichiro0903n/blue/main/2.csv

サンプルデータ3
https://raw.githubusercontent.com/yoichiro0903n/blue/main/3.csv

3.サンプルストリームの説明

スクリーンショット 2023-04-06 13.20.04.png

a.[可変長ファイル]ノードを編集します。サンプルの3つのうち、ストリーム設計には[1.csv]を利用します。

スクリーンショット 2023-04-06 13.58.32.png

データは以下の通りです。顧客の取引明細データです。

スクリーンショット 2023-04-06 14.38.34.png

[データ型]タブで[値の確定]ボタンを押しておきます。後続dで大分類のメンバーを認識させるためです。
スクリーンショット 2023-04-06 13.58.59.png

顧客の日毎の情報に要約する(特徴量を生成する)

b.[レコード]ノードを編集します。
スクリーンショット 2023-04-06 13.50.20.png

c.[レコード]ノードを編集します。この2段階集計でカテゴリ数(大分類数)をカウントできます。
スクリーンショット 2023-04-06 13.50.47.png

d.[フラグ設定]ノードを編集します。
スクリーンショット 2023-04-06 13.51.12.png

e.[レコード結合]ノードを編集します。
スクリーンショット 2023-04-06 13.51.54.png

[プレビュー]します。ループの1回目で記録されるデータです。
スクリーンショット 2023-04-06 14.49.49.png

f.[フラットファイル]ノードを編集します。赤枠のように出力するテキストファイル名称とパスを記述します。青枠はチェックを入れて実行するとノードgが自動生成されます。ノードが生成されたら青枠チェックを外しておきます。
スクリーンショット 2023-04-06 14.53.16.png

Modelerスクリプトでループを設定する

以下のメニューからスクリプト画面を開きます。
スクリーンショット 2023-04-06 15.02.44.png

Pythonモードで以下のようにスクリプトを記述します。[このスクリプトを実行]を選択します。
スクリーンショット 2023-04-06 14.59.26.png

pythonスクリプト
stream = modeler.script.stream()
data = stream.findByType("variablefile",None)
output = stream.findByType("outputfile",None)


num = 1
while num <= 3 :
    data.setPropertyValue("full_filename", u"/Users/aa517821/Desktop/" + str(num) + ".csv")
    if num == 1:
     output.setPropertyValue("write_mode", "Overwrite")
    else:
     output.setPropertyValue("write_mode", "Append")
    stream.findByType("outputfile",None).run(None)	
    num = num + 1

stream.findByType("table",None).run(None)	



ループ処理を実行する

画面の▶︎ボタンを押すと3つのファイルが順番に加工処理され同じテーブルに統合して表示されます。

スクリーンショット 2023-04-06 15.05.35.png

注意事項

ModelerでPythonスクリプトを用いるとき、日本語Shift-JISのノードラベルや文字列を指定する場合はご注意下さい。「u”レコード集計”」のように「u」を先頭につける必要があります。

今回はファイル名を番号にしてループしやすくしています。OSコマンドで複数のファイルをリネームすると事前の準備が楽になります。

4.参考情報

Modelerスクリプトについて解説した記事

SPSS Modeler ノードリファレンス目次

SPSS Modeler 逆引きストリーム集(データ加工)

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?