LoginSignup
0
0

More than 1 year has passed since last update.

SPSS Modelerの分類ノードをPythonで書き換える。購入商品カテゴリの統合

Last updated at Posted at 2021-09-14

SPSS Modelerで、カテゴリデータを統合したり、表記ゆれのあるカテゴリデータを統合したりする「分類ノード」をPythonのpandasで書き換えてみます。

0.加工前のイメージ

■加工前
誰(CUSTID)がいつ(SDATE)何(PRODUCTID、L_CLASS商品大分類、M_CLASS商品中分類)をいくら(SUBTOTAL)購入したかが記録されたID付POSデータを使います。

L_CLASSにはBAG,COSMETICS,SHOESの3つのカテゴリが含まれています。

image.png

カテゴリが多すぎる場合にいくつかのカテゴリをまとめて一つのカテゴリにしたり、「バッグ」「bag」「鞄」などの表現が複数ある同じカテゴリを一つの「BAG」というカテゴリにまとめたり、ということにこの分類ノードは使います。

1m.①商品カテゴリの統合。Modeler版

■加工後イメージ
商品大分類(L_CLASS)の「BAG」と「COSMETICS」を「雑貨」という一つのカテゴリにまとめます。

分類ノードを使うためには、まずカテゴリデータを「データ型」ノードでインスタンス化する必要があります。
データ型ノードで「値の読み込み」を行い、L_CLASSにあるカテゴリがBAG,COSMETICS,SHOESであることを読み込みます。
image.png

次にデータ分類ノードを接続します。
「データ分類先」は「既存のフィールド」に設定すると既存のカテゴリ列を入れ替えることができます。
「データ分類フィールド」に「L_CLASS」を選択します。
そして「取得」ボタンをクリックし、さらに「コピー」ボタンをクリックします。
そうすると以下のように元の値と新しい値としてBAG,COSMETICS,SHOESが入力されます。

image.png

そして、新しい値のBAG,COSMETICSを「雑貨」に書き換えます。
image.png

テーブルノードをつないで、再分類した結果を確認します。
BAG,COSMETICSが「雑貨」に変換されていることがわかります。
image.png

1p.①商品カテゴリの統合。pandas版

pandasでカテゴリ値を置き換える場合はreplace関数を使います。

分かりやすくするために置換するカテゴリ値のマッピングをコレクションで用意します。
そしてreplace関数の引数として、{列名:マッピング・コレクション}を引数として指定します。

mapping={'BAG': '雑貨', 
         'COSMETICS': '雑貨'}
df1=df.replace({'L_CLASS': mapping})
df1

以下のようにBAG,COSMETICSを「雑貨」に変換されていることがわかります。
image.png

replace自体は上記でできるのですが、Modelerのように、既存のカテゴリ値から初期値としてのマッピングのコレクションを作れると便利です。
df['L_CLASS'].unique()でカテゴリ値を抜き出しコレクションを作り、pprintでwidth=1を指定することで元の値と新しい値の組合せの初期値が表示できます。

mapping2={}
for val in df['L_CLASS'].unique():
    mapping2[val]=val
import pprint
pprint.pprint(mapping2, width=1)
{'BAG': 'BAG',
 'COSMETICS': 'COSMETICS',
 'SHOES': 'SHOES'}

この結果からマッピングのコレクションを作れば作りやすいと思います。

2. サンプル

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

ストリーム
https://github.com/hkwd/200611Modeler2Python/blob/master/reclassify/reclassify.str?raw=true
notebook
https://github.com/hkwd/200611Modeler2Python/blob/master/reclassify/reclassify.ipynb
データ
https://raw.githubusercontent.com/hkwd/200611Modeler2Python/master/data/sampletranDEPT4en2019S.csv

■テスト環境
Modeler 18.3
Windows 10 64bit
Python 3.8.10
pandas 1.3.0

3. 参考情報

pandas.DataFrame, Seriesの要素の値を置換するreplace

データ分類ノードのオプション設定 - IBM Documentation

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