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)の実装方法について説明しました。これらの方法を活用して、データ分析をより効率的に進めていきましょう。.