Pythonのデータ分析ライブラリであるPandasでは、SQLのCASE WHENのような条件分岐の処理を行うことが可能です。以下にその方法を示します。

単一の条件分岐

条件分岐の対象が1つだけの場合には、Pandasで加工するにしてもSQLで加工するにしてもそれほど大変ではありません。例えば、以下のようにopenが2万円を超えたら1がつくようなフラグ変数を追加する場合を考えます。

sample_data['flg_open_20t'] = sample_data['open'].apply(lambda x : 1 if x >= 20000 else 0)

複数の状態に分岐させる場合

次に、case whenの条件分岐の対象になる列は1つのまま変わらないのだけれど、FLGではなくてカテゴリ変数のように複数の状態を表現する場合を考えます。例えば、以下のようにopenの値が1万円未満なら0、1万円以上1万5千円未満なら1、1万5千円以上2万円未満なら2、2万円以上なら3を表現したい場合です。

def func_cate(x):
    if x < 10000:
        return 0
    elif x >= 10000 and x < 15000:
        return 1
    elif x >= 15000 and x < 20000:
        return 2
    else:
        return 3

sample_data['cate_f'] = sample_data['open'].apply(func_cate)

元の値を変換する場合

元の値の一部を置換するタイプの処理はだいぶ面倒になります。例えば、以下のような場合です。openの値が1万9000円未満ならばNULLに置換、1万9000円以上2万円未満ならば19500に置換、2万円以上ならopenの値そのままとしたい場合です。

import numpy as np

def func_open_2(x):
    if x < 19000:
        return np.NaN
    elif x >= 19000 and x < 20000:
        return 19500
    else:
        return x

sample_data['open_2'] = sample_data['open'].apply(func_open_2)

以上、Pandasでの条件分岐(CASE WHEN)の実装方法について説明しました。これらの方法を活用して、データ分析をより効率的に進めていきましょう。.

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です