LoginSignup
0
0

More than 1 year has passed since last update.

SPSS Modelerのレコード追加ノードをPythonで書き換える。

Last updated at Posted at 2020-11-18

SPSS Modelerでデータを縦方向に追加するのが、レコード追加ノードです。
SQLでいうUNION ALLにあたる加工処理です。
これをPythonのpandasで書き換えてみます。

0.元データ

以下の2つの時系列のセンサーデータをつかって行います。
似たデータ項目ですが、列名が違っていたり、片方にしかない列が含まれています。

■データ1:Cond4n_e104.csv
M_CD: マシンコード
UP_TIIME: 稼働時間
POWER: 電力
TEMP: 温度
ERR_CD: エラーコード

image.png

■データ2:COND2n.csv
Time:稼働時間
Power:電力
Temperature:温度
Pressure:圧力
Uptime:起動時間
Status:状態コード
Outcome:エラーコード

image.png

1m.レコードの追加 Modeler版

データ1「Cond4n_e104.csv」の列に合わせて、データ2「COND2n.csv」を追加します。

image.png
まずフィルターノードを使って、データ2の列をデータ1の列名に合わせます。

image.png

次にレコード追加ノードを接続します。
M_CDに当たる列がデータ2のCOND2n.csvには存在しないのでNULLが入ります。
image.png

以下のようにデータ1にデータ2が追加されました。
image.png

ちなみにレコード追加ノードでは、フィールド一致基準のデフォルトは「名前」ですが、名前が違っていても、列位置を基準に追加することもできます。
また、追加するデータ2にしか含まれていないPressureなども追加したい場合はフィールド入力元で「すべてのデータセット」を選ぶと追加ができます。
さらにどちらのデータから来たかを示すタグ列をつけたりすることも可能です。

1p.レコードの追加 pandas版

フィルターノードに当たる処理をrenameとdropを使って行います。renameでデータ1と列名をそろえ、dropで不要な列を削除します。

#データ2の列をデータ1の列名に合わせます。
df2_1=df2.rename(columns={'Time': 'UP_TIME', 'Power': 'POWER', 'Temperature': 'TEMP', 'Outcome': 'ERR_CD'})\
    .drop(['Pressure','Uptime','Status'],axis=1)
df2_1

image.png

次に、レコード追加ノードにあたるレコード追加処理を行います。
方法は二つあってappendとconcatがあります。
どちらでも結果は同じです。3つ以上のデータを結合する場合はconcatの書き方の方がわかりやすくてよいと思います。

#appendを使う方法
df1.append(df2_1)
#concatを使う方法
pd.concat([df1,df2_1])

image.png

2. サンプル

サンプルは以下に置きました。

ストリーム
https://github.com/hkwd/200611Modeler2Python/raw/master/append/append.str
notebook
https://github.com/hkwd/200611Modeler2Python/blob/master/append/append.ipynb
データ
https://raw.githubusercontent.com/hkwd/200611Modeler2Python/master/data/Cond4n_e104.csv
https://raw.githubusercontent.com/hkwd/200611Modeler2Python/master/data/COND2n.csv

■テスト環境
Modeler 18.2.2
Windows 10 64bit
Python 3.7.9
pandas 1.0.5

4. 参考情報

重複レコード・ノード
https://www.ibm.com/support/knowledgecenter/ja/SS3RA7_18.2.1/modeler_mainhelp_client_ddita/clementine/distinct_settingstab.html

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