この記事は、Tableau(タブロー) Public実践 BIツールデータ活用 100本ノック を読んで学んだことをまとめています。Knockタイトルや内容が本とは異なっている部分もありますので、あらかじめご了承ください。
この記事をきっかけにもっと勉強したいと思った方は、是非本をお手に取って読まれてください。
【リンク紹介】
・【一覧】Tableau Public実践 BIツールデータ活用100本ノック
・これまで書いたシリーズ記事一覧
この章では、RFM分析 を用いて優良顧客を定量的に定義していきます。
RFM分析とは
Recency (最終購入日)、Frequency (購入頻度)、Monetary (購入金額)の3つの観点から顧客を評価し、スコアリングまたはグルーピングする手法のこと。
Recency(最終購入金額)
Knock31:顧客ごとの最終注文日時を表示する
まずはKnock21~23 を参考に、この記事で使用するデータの準備を行います。
シートを新しく作成します(シート名は「Recency」)。
データペインの「order.csv 」のディメンションにある「注文日時 」を右クリックし、「作成 」→「計算フィールド 」を選択します。
Knock27 の時のように、名前を「最終注文日時 」に変更し、計算式を以下のように記述します。
「適用 」をクリックすると、データペインに新しく「最終注文日時」が作成されます。
データペインの「order.csv 」のディメンションにある「顧客ID 」を「行シェルフ 」へドラッグ&ドロップします。
※警告がでますが、「すべての要素を追加 」を選択します。
作成した「最終注文日時 」を「行シェルフ 」へ右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」で「最終注文日時(不連続) 」を選択します。
顧客ごとの最終注文日時が表示されました。
Knock32:最終購入日からの経過日数を算出する
「メニュー 」から「分析 」→「計算フィールドの作成 」を選択します。
名前を「今日の日付 」に変更し、最終注文日からの経過日数を計算するための基準日として「2023年1月1日」を設定します。
「適用 」をクリックすると、データペインに新しく「今日の日付」が作成されます。
同様にして「計算フィールドの作成 」を用いて、以下のようにもうひとつ作成します。
「適用 」をクリックすると、データペインに新しく「最終注文日からの経過日数」が作成されます。
作成した「今日の日付 」を「行シェルフ 」へ右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」で「今日の日付(不連続) 」を選択します。
作成した「最終注文日からの経過日数 」をマークカードの「テキスト 」にドラッグ&ドロップします。
画面は「降順」で並び替えたものです。
Knock33:ヒストグラムで経過日数を可視化する
シートを新しく作成します(シート名は「ヒストグラム(経過日数)」)。
「最終注文日からの経過日数 」を右クリック→「作成 」→「ビン 」を選択します。
「ビンのサイズ 」を「10 」に変更します。
!
実は私が最初テキスト通りに作業をしたら次のような結果になりました。
原因は「order.csv」のユニオンがなぜか外れており、order_202101しか取り込んでいない状態になっていたためでした。対処法としては一から作り直すこととしました。
おそらく第2章の記事の作成から日を開けて作成したため、その間に結合が解除された可能性がありますが…なぜ解除されたのかはわかりません 汗
「OK 」をクリックすると、データペインに新しく「最終注文日からの経過日数(ビン)」が作成されます。
作成した「最終注文日からの経過日数(ビン) 」を「列シェルフ 」にドラッグ&ドロップします。
「最終注文日からの経過日数 」を「行シェルフ 」に右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」で「カウント(最終注文日からの経過日数) 」を選択します。
Frequency(購入頻度)
Knock34:顧客別の購入頻度を算出する
シートを新しく作成します(シート名は「顧客ごとの購入回数」)。
データペインの「order.csv 」のディメンションにある「顧客ID 」を「行シェルフ 」にドラッグ&ドロップします。
※警告がでますが、「すべての要素を追加 」を選択します。
データペインの「order.csv 」のディメンションにある「注文日時 」を「行シェルフ 」にドラッグ&ドロップします。
※右クリックして「並べ替え 」を選択し、「降順」を選択しておきます。
データペインの「order.csv 」のメジャーにある「order.csv(カウント) 」を、マークカードの「テキスト 」にドラッグ&ドロップします。
Knock35:ヒストグラムで購入頻度の分布を可視化する
シートを新しく作成します(シート名は「ヒストグラム(顧客別購入回数)」)。
データペインの「order.csv 」のディメンションにある「注文ID 」を右クリック→「作成 」→「計算フィールド 」を選択します。
名前を「顧客別購入回数 」に変更し、計算式を以下のように記述します。
「適用 」をクリックすると、データペインに新しく「顧客別購入回数」が作成されます。
次に、作成した「顧客別購入回数」を右クリック→「作成 」→「ビン 」を選択します。
「ビンのサイズ 」を「10 」に変更します。
「OK 」をクリックすると、データペインに新しく「顧客別購入回数(ビン)」が作成されます。
「顧客別購入回数(ビン) 」を右クリック→「連続に変換 」を選択します。
作成した「顧客別購入回数(ビン) 」を「列シェルフ 」にドラッグ&ドロップします。
「顧客別購入回数 」を「行シェルフ 」に右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」で「カウント(顧客別購入回数) 」を選択します。
Knock36:散布図を使ってデータの関係性を可視化する
散布図を使って、最終注文日からの経過日数と購入頻度の関係性を見ていきます。
シートを新しく作成します(シート名は「散布図」)。
「最終注文日数からの経過日数 」を「行シェルフ 」に右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」で「最終注文日数からの経過日数 」を選択します。
「顧客別購入回数 」を「列シェルフ 」に右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」で「顧客別購入回数 」を選択します。
これにて散布図はひとまず表示されました。
さらに散布図を加工します。
3. データペインの「order.csv 」のディメンションにある「顧客ID 」をマークカードの「詳細 」にドラッグ&ドロップします。
※警告がでますが、「すべての要素を追加 」を選択します。
Knock27 で作成した、メジャーにある「顧客別注文金額 」をマークカードの「サイズ 」にドラッグ&ドロップします。
購入金額に比例して丸が大きくなっています。
最後に「傾向線 」を引いていきます。
「データペイン 」から「アナリティクスペイン 」に切り替えます。
アナリティクスペインの「傾向線 」を、「ビュー 」にドラッグ します。
ビューにドラッグすると「傾向線の追加 」という項目が表示されるので、「線形 」の上でドロップ します。
傾向線が表示されました。
Knock37:散布図の四分位範囲を可視化する
「散布図」シートを複製し、シート名を「四分位範囲」に変更します。
「行シェルフ 」の「最終注文日からの経過日数 」を右クリック→「メジャー 」→「合計 」を選択します。
ビューも少し変化します。
ビューの縦軸の「最終注文日からの経過日数 」を右クリック→「軸の編集 」を選択します。
「スケール 」の「反転 」を選択します。
まず、最終注文日数からの経過日数(縦軸)の四分位範囲を可視化します。
5. アナリティクスペインの「リファレンスライン 」を「ビュー 」にドラッグ します。
ビューにドラッグすると「リファレンスラインの追加 」という項目が表示されるので、下図のオレンジ部分の上でドロップします。
「リファレンス ライン、バンド、またはボックスの編集」が表示されるので、「分布 」を選択し、値は「四分位数 」、ラベルは「なし 」、「対称 」にチェックを入れます。
同様にして、顧客別購入回数(横軸)の四分位範囲を可視化します。
8. リファレンスラインをビューにドラッグし、「リファレンスラインの追加 」で下図のオレンジ部分の上でドロップします。
「リファレンス ライン、バンド、またはボックスの編集」が表示されるので、「分布 」を選択し、値は「四分位数 」、ラベルは「なし 」、「対称 」にチェックを入れます。
最後に、顧客別注文金額の四分位数を表示します。
10. 右側にある「合計(顧客別注文金額) 」の下の空欄部分を右クリックして、「サマリー 」を選択します。
「サマリー 」の横にある▼マークを押し、「第1四分位数 」、「第3四分位数 」を選択します。
RFM分析
Knock38:顧客をスコアリングする
Knock37の四分位数を基準に顧客をスコアリングします。
シートを新しく作成します(シート名は「RFM分析」)。
メニューから「分析 」→「計算フィールドの作成 」を選択し、以下3種類の計算フィールドを作成します。
Recency scoreのコード
IF [最終注文日からの経過日数] <= 25 THEN "4: 25日≧"
ELSEIF [最終注文日からの経過日数] <= 84 THEN "3: 84日≧"
ELSEIF [最終注文日からの経過日数] <= 304 THEN "2: 304日≧"
ELSEIF [最終注文日からの経過日数] >= 305 THEN "1: 305日≦"
END
Frequency scoreのコード
IF [顧客別購入回数] >= 10 THEN "4: 10回≦"
ELSEIF [顧客別購入回数] >= 5 THEN "3: 5回≦"
ELSEIF [顧客別購入回数] >= 2 THEN "2: 2回≦"
ELSEIF [顧客別購入回数] = 1 THEN "1: 1回"
END
Monetary scoreのコード
IF [顧客別注文金額] >= 182185 THEN "4: 182,185円≧"
ELSEIF [顧客別注文金額] >= 91000 THEN "3: 91,000円≧"
ELSEIF [顧客別注文金額] >= 40400 THEN "2: 40,400円≧"
ELSEIF [顧客別注文金額] < 40400 THEN "1: 40,400円≧"
END
ツールバーのドロップダウンリストから「標準 」を「ビュー全体 」に変更します。
「Recency score 」を「行シェルフ 」に右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」は「Recency score 」を選択します。
「Frequency score 」を「列シェルフ 」に右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」は「Frequency score 」を選択します。
「Monetary score 」をマークカードの「色 」と「詳細 」にそれぞれ右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」は「Monetary score 」を選択します。
データペインの「顧客ID 」をマークカードの「ラベル 」に右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」は「個別のカウント(顧客ID) 」を選択します。
完成?
これでRFM分析の可視化は完了しましたが、文字が小さかったり、四角アイコンが小さかったりとデザインが実用的ではなりません。もう少し使いやすくなる工夫をします。まずは各スコアをビュー上で表示させます。
マークカードの「サイズ 」、「ラベル 」で調整します。
調整は各自の判断で調整してみてください。
Knock39:優良顧客にフラグ付けを行う
優良顧客を「合計スコアが11以上 」であると定義し、該当するものをピックアップしてまとめます。
スコア合計が11以上となるマークを複数選択します。
選択したマーク上で右クリックし、「セットの作成 」を選択します。
名前を「合計スコア11以上 」に変更し、「OK」をクリックします。
データペインのディメンション に新しく「合計スコア11以上 」が作成されたことを確認できます。
「合計スコア11以上 」を右クリック→「作成 」→「計算フィールド 」を選択します。
名前を「優良顧客フラグ 」に変更し、計算式を以下のように記述します。
データペインのメジャー に新しく「優良顧客フラグ 」が作成されたことを確認できます。
シートを新しく作成します(シート名は「優良顧客フラグ」)。
データペインの「顧客ID 」を「行シェルフ 」にドラッグ&ドロップします。
データペインの「優良顧客フラグ 」をマークカードの「テキスト 」に右クリックでドラッグ&ドロップ します。
「フィールドのドロップ 」は「優良顧客フラグ 」を選択します。
Knock40:優良顧客の基本統計量を確認する
シートを新しく作成します(シート名は「優良顧客の基本統計量」)。
データペインの「優良顧客フラグ 」を「フィルターシェルフ 」にドラッグ&ドロップします。
「優良顧客フラグ 」を右クリック→「不連続に変換 」を選択します。
「フィールドのフィルター 」で「すべての値 」を選択し、「次へ」を選択します。
「フィルター 」で「1 」を選択します。
Knock26 の基本統計量の操作と同様にして、優良顧客の基本統計量を確認します。
メジャーネームのフィルターはこんな感じ
完成するとこのような表示になると思います。
\bf{\textcolor{red}{記事が役に立った方は「いいね」を押していただけると、すごく喜びます \ 笑}}
ご協力のほどよろしくお願いします。
Discussion