Tableauでパレート分析をやってみた

2017.11.13

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

こんにちは、yoshimです。
今回は重要顧客による売上高への影響度を調べてみようと思います。 具体的にはパレート分析なるものをやってみて、「本当に20%のお客様が80%の売り上げを占めているのか」を検証してみようと思います。

パレート分析をするために、パレート図を作ることになるのですが、その過程でセカンダリ計算という機能を利用すると便利なので、こちらの紹介もいたします。

セカンダリ計算は利用頻度はあまり多くないかもしれませんが、「少し複雑な」表計算を簡単に実行することができます。使いこなせるとTableauでできることの幅が広がるので、知っておいて損はない機能です。

目次

パレート分析とは

パレート分析とは、マーケティングや品質管理等に用いられている、「効率的に業務を行うために優先順位をつける」際に役立つ手法です。 一般に「20-80の法則」と言われるような「上位20%のお客様が80%の売り上げを占める」といったようなことを確認することができます。 今回は一般的によく知られている「上位20%のお客様が80%の売り上げを占める」という仮定を、Tableau上で確認してみます。

具体的には、下記のような図を作るようです。 パレート分析_1   

セカンダリ計算とは

Tableauで「パレート分析」をする際に利用する機能なので、少しご紹介いたします。 (イメージするのが難しいので、実際にやってみたを読んでいただけると理解がしやすいかもしれません)

端的に言うと、「表計算による集計結果に対して、更に表計算ができる」、というものです。 例えば「累計で合計」を求めた計算結果に対して、更に「合計に対する割合」を求めるというようなイメージです。 ちょっと文面だけだとイメージがつきづらいので、下記の実際にやってみたでご説明します。 (「セカンダリ計算」は「累計と移動計算」でしか使えないのでご注意ください。)

Tableauによる説明は下記をご参照ください。
セカンダリ計算

実際にやってみた

手前味噌ですが、適当にデータを用意して実際にやってみました。(データのPKはトランザクション単位です) 実際にやってみた_1

このデータを使って「この会社ではパレートの法則が当てはまるのか」を確認します。
最終的には下記のようなパレート図を作ることを目的とします。 実際にやってみた_2

まずは、データを読み込みます。 実際にやってみた_3  

続いて、「会員ごとの売上の偏り」をざっくり集計しましょう。
会員IDごとの売上合計を集計して、(棒グラフで表示) 実際にやってみた_4

集計値でソートします。 実際にやってみた_5

全体を見たいので、「ビュー全体」が見れるようにしましょう。 ここまでで、会員ごとの売り上げの集計ができているのですが、これだけだとどれだけ一部の会員に売上が偏っているかを定量的に判断できません。
実際にやってみた_6

ここから、パレート曲線を引いて、「売り上げ金額の偏り」を見ていきます。 まずは行シェルフに「売上」をドロップします。 実際にやってみた_7

ここから「セカンダリ計算」機能を使ってパレート曲線を表示します。 「売上」から「表計算の追加」をクリックします。
実際にやってみた_8

まずは「売上合計の累計」を求めます。
実際にやってみた_8_2

これまでで、会員ごとの売上合計(上段)と、その累計(下段)を求めることができています。しかし、今回「パレート分析」なるもので求めたいものは下記の式の通りなので、まだ目的は達成していません。(下記式の分子の部分しか求められていない)
(累計での売上合計) / (売上の全合計)
ここで、「セカンダリ計算」機能を使うとちょうど上記の計算ができるようになります。 では、下記から実際に「セカンダリ計算」機能を使ってやってみます。

まず、「表計算の編集」をクリックして、 実際にやってみた8_3

ここで「売上」列に対して「2回」表計算処理をします。 まず、「累計で合計」を求めて(変更なし)、その集計結果に対してさらに「合計に対する割合」を求めます。 ここで、先にする計算を「プライマリ計算」、そのあとにする計算を「セカンダリ計算」と呼んでいます。

実際にやってみた_9  

この処理の結果出てきたグラフが「パレート曲線」になるものです。 (下半分に表示されている棒グラフの部分です。)
実際にやってみた_10  

これだと上下にグラフが分割していて見辛いので、パレート曲線を折れ線グラフにした上で一つにまとめます。 実際にやってみた_11

いずれかの集計軸を右クリックして「二重軸」を選択すると、パレート図ができました。 また、横軸に表示されている会員IDは表示する必要がないので、「ヘッダーを非表示」にした方がシンプルです。 パッと見た感じだと、「20%の会員が売上の80%を占める」といったところまでの偏りはなさそうです。

二重軸の設定をして、   実際にやってみた_12

会員IDを表示しないようにし、棒グラフと折れ線グラフの色を分けます。 実際にやってみた_13

ここまでで当初の目的であった「パレート図」の作成は完了しました。 続いて、「累計売上合計」が80のラインを引きます。
売り上げ累計について、「リファレンスライン」をドラッグ&ドロップして、
実際にやってみた_14

値を「0.8」とします。
実際にやってみた_14_2

完成...!
実際にやってみた_15

まとめ

Tableauで「パレート分析」をする方法についてご紹介いたしました。(長くなってしまい申し訳ございません) ただ、「パレート分析」だけでは「過去に一度だけ高額購入したお客様」も高ランクのお客様として認識してしまうことにもなりかねないので注意が必要です。 (より高度な分析としてRFM分析を採用することで、最終利用日や利用頻度等の情報も含めることができます。ただ、RFM分析でも「何を、どこで買ったか」、「特定のお客様のランク推移」等重要な情報がどうしても抜け落ちてしまうのには注意が必要です。) とはいえ、「セカンダリ計算」機能を使うと複雑な計算が楽にできるのは嬉しいですね。

「パレート分析」はこの分析だけで何かができる、というようなものではありませんが、「売上貢献度の偏り」をなんとなく把握するのには有効で、マーケティング部門の方のみならず、様々な部署の方が把握しておいてもいい指標なのではないか、と思います。また、この分析は一回確認して終わり、というものではなくある程度の期間継続してウォッチする、何かしらのイベントの前後で確認する、等の時間軸もある程度考慮する必要があります。

参考文献

Tableauデータ分析 ~入門から実践まで~

追記

これだけでもなんとなく「パレート分析」というものができるのですが、実際に活用しようとするともう少し手を加えたほうがいいと思います。 なので、後日「もう少し手を加えたもの」についてもご紹介する予定です。
具体的には、下記2点の編集を加えます。

  • 会員数累計数の可視化(上位◯◯%の会員の売り上げを累計すると売り上げ累計が80%に達する、を可視化)
  • クロス集計表の作成(今回作成したシートの下に、「同じ数字を表示するクロス集計表」を作成します。)