条件によって値が定まる列を作成する方法を解説します。ExcelのIF関数に相当する機能です。
説明
条件を決め、それに当てはまるか否かで、異なる値を新たな列に作成します。列追加アイコンを利用します。
以下の例では、「利益」列の値が1000以上か否かという条件によって、「優良顧客フラグ」列の値を変えています。
使い方
データに列追加アイコンを接続します。
設定画面を開き、「追加する列名」に新しい列名を入力します。
「計算式」に、次の形で式を記載します。
select((条件式, 条件に当てはまるときの値), default=条件に当てはらないときの値)
これは、ExcelのIF関数のIF(条件式, 条件に当てはまるときの値, 条件に当てはらないときの値)
という記法に対応します。アイコンを実行すると、列が追加されたデータが出力されます。
例1)列の値と比較する
例として、次の動作を行う場合の方法を解説します。
- 「優良顧客フラグ」列を追加し、「利益」列が 1000 以上の場合は文字列
優良
、そうでない場合は文字列非優良
とする
ある列の内容は table['列名']
で参照することができます。この場合の「計算式」は次のように表せます。
select((table['利益'] >= 1000, '優良'), default='非優良')
実行した結果、以下の様に「優良顧客フラグ」列が追加されます。
例2)列の値と複数の条件で比較する
例として、次の動作を行う場合の方法を解説します。
- 「顧客ランク」列を追加し、「利益」列が 2000 以上の場合は文字列
A
、1000 以上の場合は文字列B
、どちらにも当てはまらなない場合はC
とする
複数の条件を指定したい場合、select((条件式1, 条件1に当てはまるときの値), (条件式2, 条件2に当てはまるときの値), ..., default=条件に当てはらないときの値)
といった形式で複数の条件式を続けて記述することが可能です。条件式1、条件式2、...の順に判定されます。この場合の「計算式」は次のように表せます。
select((table['利益'] >= 2000, 'A'), (table['利益'] >= 1000, 'B'), default='C')
例3)特殊値か否かを判定する
例として、次の動作を行う場合の方法を解説します。
- 「利益2」列を追加し、「利益」列が
NA
等の特殊値であれば 0 を、そうでなければなければ「利益」列そのままの値を格納する
table['列名'].is_valid()
で、特殊値かどうかを判定できます。特殊値ではない場合、この結果は真になるため、記述方法としては select((table['列名'].is_valid(), 特殊値でない場合の値), default=特殊値の場合の値)
となります。この場合の「計算式」は、実際の条件を当てはめると次のように表せます。
select((table['利益'].is_valid(), table['利益']), default=0)
例4)複数の列の間で演算を行った値を追加する
例として、次の動作を行う場合の方法を解説します。
- 「単価」列を追加し、「利益」列が
NA
等の特殊値であれば 0 を、そうでなければ「利益」列 ÷ 「購買点数」列を計算した値を格納します。
この場合の「計算式」は次のように表せます。
select((table['利益'].is_valid(), table['利益'] / table['購買点数']), default=0)
select
関数の詳細な利用方法に関しては、MSI DataFrame マニュアル の 3.1.17. 条件判定と条件選択 をあわせてご参照ください。
分析への応用
分析では、数値の範囲に応じてカテゴリ化してから、目的変数や説明変数にしたい場合があります。(例1、例2)
また、データから NA
等の特殊値を除いてから分析したい場合もあります。(例3、例4)
このように、列追加アイコンを利用すると、分析のための柔軟な処理が可能となります。
OnePoint
ルールに応じてデータにラベルの列を追加したい と類似する機能です。ルールに応じてデータにラベルの列を追加したい では グルーピングアイコン を用いています。 グルーピングアイコンでは、追加される列は必ずカテゴリー型の列になりますが、列追加アイコンを用いると数値を追加することができます。
関連項目
- ルールに応じてデータにラベルの列を追加したい
- 数値列同士の四則演算をした列を追加したい
MSI DataFrame マニュアル
- select