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?

フォルダ内の全てのファイルをappendする拡張ノードをBobに作らせる(SPSS Modeler データ加工逆引き9-31)

2
Posted at

フォルダ内の全てのファイルをappendする拡張ノードをBobに作らせる

スクリーンショット 2026-04-18 14.12.53.png

*SPSSを介さずBobにファイル作成を指示できますが後続のプロセスを含めたストリームによる反復利用を想定しています。

1.想定される利用目的

・365日分のCSVデータをフォルダを指定してまとめて読み込む
・設備毎に時間単位で分割されたセンサーデータをまとめて読み込む

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

ストリームとデータ

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

スクリーンショット 2026-04-18 14.18.06.png

a.入力するデータは以下の通りです。

a1
スクリーンショット 2026-04-18 14.19.43.png
a2
スクリーンショット 2026-04-18 14.20.01.png
a3
スクリーンショット 2026-04-18 14.20.19.png

b.[レコード追加]ノードを編集します。

スクリーンショット 2026-04-18 14.20.38.png

[テーブル]表示します。データが列方向に結合されました。

スクリーンショット 2026-04-18 14.21.03.png

ひとつの拡張ノードで複数ファイルを読み込む

[拡張のインポート]ノードを編集します。スクリプトをどのようにBobに書かせたかは後述します。
入力するパスを変更して利用します。

スクリーンショット 2026-04-18 14.21.43.png

[テーブル]表示します。最初のプロセスと同じテーブルを表示します。

スクリーンショット 2026-04-18 14.21.15.png

Bobによるスクリプトの作成手順

1.Bobを起動して、作業フォルダを指定します。

スクリーンショット 2026-03-31 11.13.04.png

2.SPSS Modeler[拡張のインポート]ノードからサンプル構文をコピーします。

スクリーンショット 2026-04-18 14.44.58.png

3.プロンプトを作成します。サンプル構文をペーストします。

プロンプト

SPSS Modelerの拡張のインポートノードで
/Users/aa517821/Desktop/Data1の中のファイルを
単純にappendしてひとつのCSVファイルにするネイティブPython APIスクリプトを書いてください
結果は同じファイルに保存してください

- 拡張のインポートノードのスクリプトの解説として
@https://www.ibm.com/docs/ja/spss-modeler/18.6.0?topic=spark-native-python-apis を参考にしてください
- シバンは不要です

###Use this code to export data from Python to Modeler
#import modelerpy
#if modelerpy.isComputeDataModelOnly():
#    outputDataModel = None
###Compute output data model here

#    modelerpy.setOutputDataModel(outputDataModel)
#else:
#    outputData = None
###Compute output data here

#    modelerpy.writePandasDataframe(outputData)


4.プロンプトを実行します。

スクリーンショット 2026-04-18 14.52.01.png

5.Bobの以下の出力を[拡張のインポート]にそのまま利用します。

Pythonスクリプト
import modelerpy
import pandas as pd
import os
import glob

if modelerpy.isComputeDataModelOnly():
    # データモデルのみを計算する場合
    # 最初のCSVファイルからデータモデルを取得
    data_dir = '/Users/aa517821/Desktop/Data1'
    csv_files = sorted(glob.glob(os.path.join(data_dir, '*.csv')))
    
    if csv_files:
        # 最初のファイルを読み込んでデータモデルを作成
        sample_df = pd.read_csv(csv_files[0])
        
        # データモデルを構築
        fields = []
        for col in sample_df.columns:
            dtype = sample_df[col].dtype
            
            if dtype == 'int64':
                storage = 'integer'
                measure = 'continuous'
            elif dtype == 'float64':
                storage = 'real'
                measure = 'continuous'
            elif dtype == 'object':
                storage = 'string'
                measure = 'nominal'
            else:
                storage = 'string'
                measure = 'nominal'
            
            fields.append(modelerpy.Field(col, storage, measure))
        
        outputDataModel = modelerpy.DataModel(fields)
        modelerpy.setOutputDataModel(outputDataModel)
    else:
        # ファイルが見つからない場合は空のデータモデル
        outputDataModel = modelerpy.DataModel([])
        modelerpy.setOutputDataModel(outputDataModel)
else:
    # 実際のデータを計算する場合
    data_dir = '/Users/aa517821/Desktop/Data1'
    csv_files = sorted(glob.glob(os.path.join(data_dir, '*.csv')))
    
    # すべてのCSVファイルを読み込んで結合
    df_list = []
    for file in csv_files:
        df = pd.read_csv(file)
        df_list.append(df)
    
    # データフレームを縦に結合(append)
    if df_list:
        outputData = pd.concat(df_list, ignore_index=True)
        
        # 結合したデータを同じディレクトリに保存
        output_file = os.path.join(data_dir, 'combined_data.csv')
        outputData.to_csv(output_file, index=False)
        
        # SPSS Modelerにデータを渡す
        modelerpy.writePandasDataframe(outputData)
    else:
        # ファイルが見つからない場合は空のデータフレーム
        outputData = pd.DataFrame()
        modelerpy.writePandasDataframe(outputData)

# Made with Bob



注意事項

フォルダのパスに日本語名が含まれる場合の表記の例
u"/Users/aa517821/CRM小売/キャンペーン最適化/output/"

今回の仕様だと新しい結合ファイルを同じフォルダに作成するため、
実行する毎にレコードが増える点を注意します。

4.参考情報

店舗の数だけファイルを分割するpython拡張ノードをBobに作らせる

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?