こんにちは!スタビジ編集部です!
今回はデシル分析についてその使われ方や具体的な活用事例を紹介していきます。
記事の後半では、実際にExcelやPythonを使ったデシル分析のやり方についても紹介します!
・デシル分析とは??(活用例も詳しく紹介)
・ABC分析やRFM分析との違い
・Excelでのデシル分析の実行、円グラフによる可視化
・Pythonを使ったデシル分析
目次
デシル分析とは??
それでは早速、デシル分析とは何なのか?について解説していきます!
デシル分析とはずばり、あるデータをもとに要素を10等分に分け、それぞれのグループの傾向や特性を分析する手法です!
ビジネスにおいては、10分割した各グループに対して異なる施策の検討や最適なリソース配分を決定するといった目的での活用事例があります。
最も一般的な使われ方としては以下になります。
顧客を累計購入金額の値によって1~10グループに分け、グループごとの購入ボリュームなどの傾向から顧客の特徴を理解し、各グループに対して最適なマーケティング施策を打つ
後に紹介しますがこのデシル分析、購入金額などの1指標を基にランキング形式で10段階にグループ分けしていく手法なので大変シンプルで汎用性が高いです!
そして毎度のことですが、この手法ももちろん、10個のグループに分けて、「できました!はい終わり!」では意味がございません。
そこから、具体的なアクションに繋げていくのです。
顧客分析で用いる場合には、売上上位のグループにはリテンションを高めるための特別な施策を用意するといった行動が有効かもしれません。
限られた予算の中で、施策を実施する際の優先順位を定めるのに活用することもできます。
また、顧客の信用リスクの評価や、市場ごとの傾向の違いの分析にも応用できます。
顧客をグルーピングするデシル分析を例に出しましたが、その他の例として、商品をグルーピング対象とし、それらを累計売上でランク付けするという使い方もできます。
その活用例と効果を以下にまとめます。
商品ごとの購入金額によるランク付け
①高価値な商品にリソースや広告予算を重点的に割り当てるために利用
→収益性の高い部分にフォーカスを当てられるのでROI(投資収益率)向上に繋がる
②在庫の最適な管理に利用
→上位グループの商品は適切な在庫を確保し、下位グループの商品は在庫コストを最小限におさえることで在庫最適化に繋がる
③価格戦略に利用
→上位グループの商品にはプレミアム価格を設定、そこからグラデーションを設け下位グループには競争力のある価格を提供するなど、価格設定の調整に活用
よく混同するABC分析やRFM分析との違い
同じ顧客分析等で利用する手法として、ABC分析やRFM分析があります。
本ブログでは、これらについても解説をしております。
本章では、これらとデシル分析の違いについて整理しておきます!
ずばり、相違点は以下になります。
・ABC分析では3つにグルーピングするのに対し、デシル分析では10個にグルーピングする違いがある。
・分け方にも違いあり。ABC分析では累積構成比を用いてグルーピングを行うのに対し、デシル分析ではデータをランキング形式で10等分に分割する違いがある。
・RFM分析も顧客分析として用いられるが、直近購入・購入頻度・購入金額といった3つの要素を総合的にスコア化して評価
(デシル分析では購入金額、などといった1軸に絞って評価を行う)
Excelを使ったデシル分析
ここから、実際にExcel上でデシル分析を実行していきます!
今回は顧客ごとのそれぞれの累計購入額がわかっているという状況で、その購入額を評価指標としてデシル分析を行ってみましょう。
以下の流れで分析を進めていきます。
1. データを用意する
2. データをソートする
3. データを10等分に分割する
4. 各デシルごとの必要な統計量を取得
5. グラフによる可視化
1. データを用意する
まず、今回の分析で使用する、顧客と累計購入額の対応表を準備します。
ここではランダムにデータを生成させ、50人の顧客IDとそれに対応する累計購入額を生成します。
顧客IDとそれに対応するこれまでの購入額総計(売上高)をセルに格納していきます。
※Excel1行目の列ごとのタイトルについては自分で分かりやすいものに設定しましょう!
実際にはC50までデータが続いています。
ちなみに、売上高をランダムに生成する際には範囲を指定してランダムな整数を返すRANDBETWEEN関数を用いています。
=RANDBETWEEN(100,100000)
# 100から100000までの整数をランダムに生成
2.データをソートする
次に、データを金額が大きい順に並び替えます。
以下のように、並び替えたいセルをまとめて選択した上で右クリック→並び替え→降順で簡単に顧客IDも含め並び替えることが出来ます!
結果は以下のようになります!
3. データを10等分に分割する
続いて、C01~C50の50人の顧客をその累計購入額をもとに、10グループ(デシル)に分割していきます!
新たな列を用意し、セルにはデシルランクを入力していきます。
データ数を10で割った値が各ランクに振り分けていく個数に当たります!
今回例として用いているのは顧客50人のデータなので、上位から5人ずつ、デシルランクが1、2、3、、と上がっていく形になります!
データ数がそこまで多くない場合には直接セルにデシルランクを格納していく方が速いですが、データ数が多い場合には順位の列を設けたうえでif関数を使いましょう!
以下がコード例になります!
=IF(E2<=5,1,IF(E2<=10,2,IF(E2<=15,3,IF(E2<=20,4,IF(E2<=25,5,IF(E2<=30,6,IF(E2<=35,7,IF(E2<=40,8,IF(E2<=45,9,10)))))))))
#順位のデータが格納されたE2セルが、10個のデシルのうちどこに入るかを条件分岐によって指定
#一つのセルを入力したら一番下まで引っ張るだけで1~10のデシルランクに自動で振り分け
以上でデシルランク1~10をそれぞれの顧客に対して振り分けることができました!
4. 各デシルごとの必要な統計量を取得
3.の工程までで、各データを10個のグループに分けるところまでは終了いたしました!
続いて各グループごとにどのような特徴が見られるのか、必要な統計量を取得していきましょう!
平均値は各グループごとにAVERAGE関数を用いて以下のように求めます。
=AVERAGE(B2:B6) #デシルランク「1」の平均値の算出
さらに、1~10のグループごとの累計構成比も求めていきましょう。
新たな列を用意します。
(一番上のセルを入力したら後は下までドラッグするだけでOKです!)
=SUM($B$2:B2)/SUM($B$2:$B$16)
# 分子は降順に並べた売上高の一番上から現在のセルまでの合計値
# 分母は全商品の売上高の合計値
結果はこのようになります。
5. グラフによる可視化
最後に、視覚的に分かりやすいように全体に対する各グループの累計構成比を円グラフで可視化してみましょう!
まずはデシルランクの列と累計構成比の列をまとめて選択します。
Ctrlキーを押しながらセルを引っ張ることで離れた複数の範囲を選択することが出来ます!
選択しましたら、挿入タブ→おすすめグラフ→円グラフと進みます!
この手順により、「デシルランクごとの各グループが全体売上に対してどのくらいを占めているか」を一目でイメージすることが出来ます!
必要に応じて、グループごとの平均値もグラフに加えるなど、工夫してみましょう!
Pythonを使ったデシル分析
続きまして、Pythonを用いたデシル分析も実行していきます!
前章で、Excelを使用しながらデシル分析の細かい流れについてご説明しました。
本章では、データが1つ1つの購買データとして管理されている場合を考えていきます!
先程は「顧客ID-累計購入額」のデータでしたが、今回は「顧客ID-1回の購入金額」が購入された回数だけ並んでいる形式です!
1. データを用意
2. 顧客ごとに累計購入金額を算出し、ソート
3. デシルランクごとに振り分け
1. データを用意
まずはPython上で、疑似的にデータを生成していきます。
使用したいデータがある場合はもちろんそちらを使用してください!
import pandas as pd
import random
# デモ用のデータを生成
n = 1000 # 顧客数
data = []
for _ in range(n):
customer_id = random.randint(1, 100) # 1から100までのランダムな顧客IDを生成
purchase_amount = round(random.uniform(1.0, 1000.0), 2) # ランダムな購入金額を生成
data.append([customer_id, purchase_amount])
# データをDataFrameに変換
columns = ['customer_id', '購入金額']
data_df = pd.DataFrame(data, columns=columns)
data_df #データの出力
生成したdata_dfの中身はこのように格納されています!
2. 顧客ごとに累計購入金額を算出し、ソート
続いて、顧客IDごとに累計購入金額を算出し、さらにその累計購入金額の大きい順に顧客を並び替えていきます。
# 顧客ごとに累計購入金額を計算
data_df['累計購入金額'] = data_df.groupby('customer_id')['購入金額'].cumsum()
# 顧客ごとにデータを設定
customer_data = data_df.drop_duplicates(subset=['customer_id'], keep='last')
# 累計購入金額でソート
sorted_data = customer_data.sort_values(by='累計購入金額', ascending=False)
sorted_data.drop(columns='購入金額', inplace=True) #累計を求めたため購入金額列は削除
sorted_data #データの出力
上記コードにより、customer_IDごとに全部でいくら購入したか?が算出されています。
降順ソートまで完了した顧客購入額データ(sorted_data)が以下になります!
3.デシルランクごとに振り分け
最後は顧客の累計購入金額のランキングによって10個のグループに振り分けていく作業です。
# decileごとにランク付け
sorted_data['decile'] = 10 - pd.qcut(sorted_data['累計購入金額'], q=10, labels=False)
# 通し番号を追加
sorted_data.reset_index(drop=True, inplace=True)
sorted_data.index += 1
# 結果を表示
print(sorted_data)
結果は、以下のようにcustomer_IDとそれに紐づく累計購入金額、デシルランクの値、の順で記載されています!
以上で、10グループへの振り分けまで完了いたしました!
デシル分析のまとめ
本記事では、デシル分析の特徴や活用事例、ExcelやPythonでの具体的な実行方法についてまとめました!
簡単に実装できてビジネスでも大活躍なデシル分析を理解し、ぜひ使えるようになっておきましょう!
デシル分析ではグルーピング後のアクションにも目を向けることで、「各グループごとに必要な統計量は何か?」についてもおのずとイメージが浮かんでくると思います!
とはいいつつ、まずは感覚を掴むところからなのでぜひ実装してみてください!!
このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。
そして僕の経験を詰め込んだデータサイエンス特化のスクール「スタアカ(スタビジアカデミー)」を運営していますので,興味のある方はぜひチェックしてみてください!
AIデータサイエンス特化スクール「スタアカ」
【価格】 | ライトプラン:1280円/月 プレミアムプラン:149,800円 |
---|---|
【オススメ度】 | |
【サポート体制】 | |
【受講形式】 | オンライン形式 |
【学習範囲】 | データサイエンスを網羅的に学ぶ 実践的なビジネスフレームワークを学ぶ SQLとPythonを組み合わせて実データを使った様々なワークを行う マーケティングの実行プラン策定 マーケティングとデータ分析の掛け合わせで集客マネタイズ |
データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!
当メディアが運営するスクールです。
24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!
カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!
他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。
そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!
Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!
ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!
・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ
データサイエンスに関する記事はこちら!
データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください!
=SUM($B$2:B6)/SUM($B$2:$B$51) #デシルランク「1」の全体に対する累計構成比の算出
# 分子はグループの合計値の計算
# 分母は全顧客の合計値の計算