データ解析

デシル分析のやり方を分かりやすく解説!エクセルとPythonで実際に分析!

デシル分析について解説!エクセルとPythonでの実装も!
記事内に商品プロモーションを含む場合があります
ウマたん
ウマたん
当サイト【スタビジ】の本記事では、顧客を分析する手法の一種であるデシル分析について詳しく解説していきます!デシル(decile≒10分割)分析は、あるデータをもとに要素を10等分に分け、それぞれのグループの傾向や特性を分析する手法なんです!

こんにちは!スタビジ編集部です!

今回はデシル分析についてその使われ方や具体的な活用事例を紹介していきます。

記事の後半では、実際にExcelやPythonを使ったデシル分析のやり方についても紹介します!

・デシル分析とは??(活用例も詳しく紹介)
・ABC分析やRFM分析との違い
・Excelでのデシル分析の実行、円グラフによる可視化
・Pythonを使ったデシル分析

デシル分析とは??

そもそも推定とは?

それでは早速、デシル分析とは何なのか?について解説していきます!

デシル分析とはずばり、あるデータをもとに要素を10等分に分け、それぞれのグループの傾向や特性を分析する手法です!

ビジネスにおいては、10分割した各グループに対して異なる施策の検討や最適なリソース配分を決定するといった目的での活用事例があります。

ウマたん
ウマたん
このデシル分析は、顧客を購入金額などをもとに10個のグループに分類する手法なんです!(メインの使われ方)

最も一般的な使われ方としては以下になります。

顧客を累計購入金額の値によって1~10グループに分け、グループごとの購入ボリュームなどの傾向から顧客の特徴を理解し、各グループに対して最適なマーケティング施策を打つ

後に紹介しますがこのデシル分析、購入金額などの1指標を基にランキング形式で10段階にグループ分けしていく手法なので大変シンプルで汎用性が高いです!

ロボたん
ロボたん
なるほど!デシル分析はとってもシンプルな手法なんだね!でもなんで10個にデータを分割するの?
ウマたん
ウマたん
質問が鋭くなってきたね、、!いくつか理由があるよ。まず、10グループに分けることで各グループに十分な数のデータが含まれつつ、その比較も行いやすいバランスの良い分割数なんだ!
ロボたん
ロボたん
ふむふむ、でも10個じゃなくてもいい気が。。
ウマたん
ウマたん
あとは、多くの組織や研究者が10グループに分けるというアプローチを使っていて、異なるデータ間や業界間での比較を行えるというメリットがあるよ!ただ、分析の目的やデータの性質によっては10にこだわり過ぎずにグループ数を変更することもあるんだ!

そして毎度のことですが、この手法ももちろん、10個のグループに分けて、「できました!はい終わり!」では意味がございません

そこから、具体的なアクションに繋げていくのです。

顧客分析で用いる場合には、売上上位のグループにはリテンションを高めるための特別な施策を用意するといった行動が有効かもしれません。

限られた予算の中で、施策を実施する際の優先順位を定めるのに活用することもできます。

また、顧客の信用リスクの評価や、市場ごとの傾向の違いの分析にも応用できます。

 

顧客をグルーピングするデシル分析を例に出しましたが、その他の例として、商品をグルーピング対象とし、それらを累計売上でランク付けするという使い方もできます。

その活用例と効果を以下にまとめます。

商品ごとの購入金額によるランク付け

①高価値な商品にリソースや広告予算を重点的に割り当てるために利用
収益性の高い部分にフォーカスを当てられるのでROI(投資収益率)向上に繋がる

②在庫の最適な管理に利用
上位グループの商品は適切な在庫を確保し、下位グループの商品は在庫コストを最小限におさえることで在庫最適化に繋がる

③価格戦略に利用
上位グループの商品にはプレミアム価格を設定、そこからグラデーションを設け下位グループには競争力のある価格を提供するなど、価格設定の調整に活用

ウマたん
ウマたん
グルーピングを行ったうえで各グループに対してどんなアプローチをしていくか?をある程度イメージしてから、分析を行うと効果的だよ!

よく混同するABC分析やRFM分析との違い

ロボたん
ロボたん
ビジネスで似たような手法で、よくRFM分析やABC分析を耳にするけど、デシル分析とこれらは何が違うの??

同じ顧客分析等で利用する手法として、ABC分析RFM分析があります。

本ブログでは、これらについても解説をしております。

ABC分析について解説
ABC分析のやり方を分かりやすく解説!エクセルでパレート図を作って可視化してみよう!当サイト【スタビジ】の本記事では、ビジネスで重宝されるABC分析について詳しく解説していきます!ABC分析はその名の通り、ある評価軸に対する重要度の違いによってA~Cランクに商品等を分類していく手法なんです!...
RFM分析を分かりやすく解説!実例とPythonでの分析のやり方を紹介!当サイト【スタビジ】の本記事では、マーケティングの分野で良く使われる、RFM分析について詳しく解説していきます!RFM分析はずばり、Recency・Frequency・Monetaryの略なんです!...

本章では、これらとデシル分析の違いについて整理しておきます!

ずばり、相違点は以下になります。

ABC分析との違い

・ABC分析では3つにグルーピングするのに対し、デシル分析では10個にグルーピングする違いがある。
・分け方にも違いあり。ABC分析では累積構成比を用いてグルーピングを行うのに対し、デシル分析ではデータをランキング形式で10等分に分割する違いがある。

ウマたん
ウマたん
例えば30人の顧客に対してABC分析を実行した場合Aグループに5人、Bグループは10人、Cグループが15人というグループごとに人数が異なる結果がありえるけど、デシル分析では3人ずつ均等な10グループへグルーピングされるという性質の違いがあるんだ!
RFM分析との違い

RFM分析も顧客分析として用いられるが、直近購入・購入頻度・購入金額といった3つの要素を総合的にスコア化して評価
デシル分析では購入金額、などといった1軸に絞って評価を行う

デシル分析はシンプルな反面、特定の1指標に基づいてグルーピングを行うため、その指標が重要である場合には優れた精度が得られる一方で、他の指標は無視されることには注意しましょう。

 

ロボたん
ロボたん
お手軽さではデシル分析に軍配が、正確性ではRFM分析に軍配が上がるといった印象だね!

Excelを使ったデシル分析

信頼区間の計算方法

ここから、実際にExcel上でデシル分析を実行していきます!

今回は顧客ごとのそれぞれの累計購入額がわかっているという状況で、その購入額を評価指標としてデシル分析を行ってみましょう。

以下の流れで分析を進めていきます。

1. データを用意する
2. データをソートする
3. データを10等分に分割する
4. 各デシルごとの必要な統計量を取得
5. グラフによる可視化

1. データを用意する

まず、今回の分析で使用する、顧客と累計購入額の対応表を準備します。

データが1つ1つの購買データとしてまとめられている場合には、顧客ごとの累計購入額を算出してあげましょう。Excelの機能であるピボットテーブルを用いることで簡単に集計することが出来ます!

ここではランダムにデータを生成させ、50人の顧客IDとそれに対応する累計購入額を生成します。

顧客IDとそれに対応するこれまでの購入額総計(売上高)をセルに格納していきます。

※Excel1行目の列ごとのタイトルについては自分で分かりやすいものに設定しましょう!

顧客IDとそれに対応する購入額リスト

実際にはC50までデータが続いています。

ちなみに、売上高をランダムに生成する際には範囲を指定してランダムな整数を返すRANDBETWEEN関数を用いています。

=RANDBETWEEN(100,100000)
# 100から100000までの整数をランダムに生成

2.データをソートする

次に、データを金額が大きい順に並び替えます。

以下のように、並び替えたいセルをまとめて選択した上で右クリック→並び替え→降順で簡単に顧客IDも含め並び替えることが出来ます!

顧客購入データの降順ソート結果は以下のようになります!

ソート済みの顧客購入額データ
ウマたん
ウマたん
顧客IDと累計購入額が高い順にしっかり並び替えされていることがわかるね!

3. データを10等分に分割する

続いて、C01~C50の50人の顧客をその累計購入額をもとに、10グループ(デシル)に分割していきます!

ロボたん
ロボたん
ランキングで並べた時に上位10%が「1」、次の10%が「2」、といった要領で「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)
# 分子は降順に並べた売上高の一番上から現在のセルまでの合計値
# 分母は全商品の売上高の合計値

結果はこのようになります。

デシルランクごとの統計量の算出
ウマたん
ウマたん
デシルランクごとの平均値と全体に対する構成比が整理できたね!累計構成比に関しては合計を出してみて100%になるかどうかで計算が合っているかの確認ができるよ!

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の中身はこのように格納されています!

デシル分析用生成データ
ウマたん
ウマたん
1000件の購買データが並んでいるね!ここではcustomer_idは1~100に設定されているから、現実のように、複数回購入した顧客も存在することになるね!

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グループへの振り分けまで完了いたしました!

ウマたん
ウマたん
ここからさらに、グループごとに全体売上に対する割合などを計算していくことで、高いデシルの顧客に焦点を当てた広告を展開するなどのアクションにまで繋げていこう!

デシル分析のまとめ

Happy

本記事では、デシル分析の特徴や活用事例、ExcelやPythonでの具体的な実行方法についてまとめました!

簡単に実装できてビジネスでも大活躍なデシル分析を理解し、ぜひ使えるようになっておきましょう!

デシル分析ではグルーピング後のアクションにも目を向けることで、「各グループごとに必要な統計量は何か?」についてもおのずとイメージが浮かんでくると思います!

とはいいつつ、まずは感覚を掴むところからなのでぜひ実装してみてください!!

このようなデータサイエンスの力を身に付けるためにはスタビジの記事やスクールを活用すると良いでしょう。

そして僕の経験を詰め込んだデータサイエンス特化のスクール「スタアカ(スタビジアカデミー)」を運営していますので,興味のある方はぜひチェックしてみてください!

AIデータサイエンス特化スクール「スタアカ」

スタアカトップ
【価格】ライトプラン:1280円/月
プレミアムプラン:149,800円
【オススメ度】
【サポート体制】
【受講形式】オンライン形式
【学習範囲】データサイエンスを網羅的に学ぶ
実践的なビジネスフレームワークを学ぶ
SQLとPythonを組み合わせて実データを使った様々なワークを行う
マーケティングの実行プラン策定
マーケティングとデータ分析の掛け合わせで集客マネタイズ

データサイエンティストとしての自分の経験をふまえてエッセンスを詰め込んだのがこちらのスタビジアカデミー、略して「スタアカ」!!

当メディアが運営するスクールです。

24時間以内の質問対応と現役データサイエンティストによる複数回のメンタリングを実施します!

カリキュラム自体は、他のスクールと比較して圧倒的に良い自信があるのでぜひ受講してみてください!

他のスクールのカリキュラムはPythonでの機械学習実装だけに焦点が当たっているものが多く、実務に即した内容になっていないものが多いです。

そんな課題感に対して、実務で使うことの多いSQLや機械学習のビジネス導入プロセスの理解なども合わせて学べるボリューム満点のコースになっています!

Pythonが初めての人でも学べるようなカリキュラムしておりますので是非チェックしてみてください!

ウォルマートのデータを使って商品の予測分析をしたり、実務で使うことの多いGoogleプロダクトのBigQueryを使って投球分析をしたり、データサイエンティストに必要なビジネス・マーケティングの基礎を学んでマーケティングプランを作ってもらったり・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践してもらったりする盛りだくさんの内容になってます!

・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析
・世界最大手小売企業のウォルマートの実データを用いた需要予測
・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ

データサイエンスに関する記事はこちら!

統計学入門に必要な知識と独学勉強方法を簡単に学ぼう!当ブログ【スタビジ】の本記事では、統計学入門に必要な知識をカンタンにまとめ、それらをどのように効率的に独学で勉強していけばよいかをお話ししていきます。統計学は難しいイメージが少しありますが、学び方をしっかり考えれば大丈夫!...
デーサイエンス本
【データサイエンティスト厳選18冊】データサイエンスを学ぶ上でオススメな本・教材!当ブログ【スタビジ】の本記事では、データサイエンスを学ぶ上でオススメできる本を厳選して紹介していきます。ここではデータサイエンティストになるために習得するスキルをデータサイエンスと称しております。いくつかの観点に切り分けて見ていきます。...

データサイエンスを勉強できるスクールやサイトは、ぜひこちらを参考にしてみてください!

データサイエンティスト スクール
【徹底比較】データサイエンティストのための学習ができるスクール9選! スクール名 オススメ度 価格の安さ サポート体制 公式サイト テックアカデミー ...
=SUM($B$2:B6)/SUM($B$2:$B$51) #デシルランク「1」の全体に対する累計構成比の算出
# 分子はグループの合計値の計算
# 分母は全顧客の合計値の計算​
スタビジアカデミーでデータサイエンスをさらに深く学ぼう!

スタアカサービスバナースタビジのコンテンツをさらに深堀りしたコンテンツが動画と一緒に学べるスクールです。

プレミアムプランでは私がマンツーマンで伴走させていただきます!ご受講お待ちしております!

スタビジアカデミーはこちら