2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AI+スクリプトでCSVファイルの差分を追加する(SPSS Modeler データ加工逆引き9-27)

2
Posted at

生成AI+スクリプトでCSVファイルの差分を追加する

スクリーンショット 2025-12-26 16.08.17.png

解説動画(4min)

1.想定される利用目的

・週次でCSVの差分データを追加する際の手間をスクリプトで効率化する
・同一フォルダ内の複数ファイルを一括でレコード追加する

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

ストリーム

データ

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

スクリーンショット 2025-12-26 16.09.21.png

a.[可変長ファイル]ノードを編集します。[Sales.csv]を任意のフォルダに格納しファイルパスを設定します。[エンコード]は[UTF-8]を指定します。

スクリーンショット 2025-12-26 16.11.04.png

[プレビュー]します。9月の購買実績データです。

スクリーンショット 2025-12-26 16.10.34.png

b.[レコード追加]ノードを編集します。設定はせずデフォルトのままです。

スクリーンショット 2025-12-26 16.11.20.png

c.[フラットファイル]ノードを編集します。ファイルパスを設定して実行するとaと同じファイルが別名[Sales2.csv]で作成されます。スクリプトを使って差分追加した上で更新させます。

スクリーンショット 2025-12-26 16.11.39.png

完成したスクリプトを実行する

Modelerのメニュー>ツール>ストリームのプロパティ>実行タブを開きます。

スクリーンショット 2025-12-26 16.12.26.png

赤枠のスクリプト全文実行ボタンを押します。

スクリーンショット 2025-12-26 16.13.03.png

改めてCを実行します。

スクリーンショット 2025-12-26 16.18.51.png

自動生成した入力ノードを[テーブル]表示します。10月1日から7日までのデータが追加されています。

スクリーンショット 2025-12-26 16.16.01.png

スクリプトの作成手順

生成AIに以下のプロンプトを与えることで完成版のPythonスクリプトを得ることができます。

まず冒頭で後続のPythonスクリプトに10月3日から7日のデータ追加を加筆するように指示しています。

[#ストリームの作成]以下では
10月1日と10月2日の入力とデータ追加の見本となるPythonスクリプトを示しています。

プロンプト

次のPythonスクリプトの延長で
2025-10-03.csv
2025-10-04.csv
2025-10-05.csv
2025-10-06.csv
2025-10-07.csv
を構文にループは使わず完成させてください


#ストリームの作成
stream = modeler.script.stream()

#レコード追加ノードの定義
appendnode = stream.findByType("append", None)


#差分追加する入力ファイルノードの作成
node001 = stream.createAt("variablefile", "a001", 100, 200)
node001.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-01.csv")
node001.setPropertyValue("encoding", "UTF-8")

node002 = stream.createAt("variablefile", "a002", 100, 300)
node002.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-02.csv")
node002.setPropertyValue("encoding", "UTF-8")


#テーブルの作成と接続
stream.link(node001, appendnode)
stream.link(node002, appendnode)


完成版は以下のとおりです。

Pythonスクリプト


# ストリームの作成
stream = modeler.script.stream()

# レコード追加ノードの定義
appendnode = stream.findByType("append", None)

# 差分追加する入力ファイルノードの作成
node001 = stream.createAt("variablefile", "a001", 100, 200)
node001.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-01.csv")
node001.setPropertyValue("encoding", "UTF-8")

node002 = stream.createAt("variablefile", "a002", 100, 300)
# ※ご提示のまま(Sprit)で設定しています。必要なら Split に修正してください。
node002.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-02.csv")
node002.setPropertyValue("encoding", "UTF-8")

# --- ここから追加分(ループ不使用で明示的に定義) ---

node003 = stream.createAt("variablefile", "a003", 100, 400)
node003.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-03.csv")
node003.setPropertyValue("encoding", "UTF-8")

node004 = stream.createAt("variablefile", "a004", 100, 500)
node004.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-04.csv")
node004.setPropertyValue("encoding", "UTF-8")

node005 = stream.createAt("variablefile", "a005", 100, 600)
node005.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-05.csv")
node005.setPropertyValue("encoding", "UTF-8")

node006 = stream.createAt("variablefile", "a006", 100, 700)
node006.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-06.csv")
node006.setPropertyValue("encoding", "UTF-8")

node007 = stream.createAt("variablefile", "a007", 100, 800)
node007.setPropertyValue("full_filename", u"/Users/aa517821/Library/CloudStorage/OneDrive-IBM/Thinkpad/clementine/Split/Diff/2025-10-07.csv")
node007.setPropertyValue("encoding", "UTF-8")

# テーブルの作成と接続
stream.link(node001, appendnode)
stream.link(node002, appendnode)

# 追加分の接続(ループ不使用で明示)
stream.link(node003, appendnode)
stream.link(node004, appendnode)
stream.link(node005, appendnode)
stream.link(node006, appendnode)
stream.link(node007, appendnode)

注意事項

入力するファイルが多い場合にはリストを別に渡すほうが効率的です。

4.参考情報

SPSS Modelerでフォルダ内のCSVを一括で読み込む(Modelerスクリプト版)

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

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

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?