RFM分析で売上戦略設計|Power BIで実践するEC・小売業のデータ活用

2025年10月24日

データ解析・設計 無料相談受付中

弊社ではデータ解析や可視化設計の支援を行っているのですが、特によくいただくご相談として「自社の販売データを活用してキャンペーン施策を考えたい」「毎月の顧客分析を楽にしたい」といったものがあります。売上データや顧客データをどのように可視化すれば良いのかという点で悩まれている企業様が多い印象です。

そこで今回は、小売業やEC事業で広く使われている分析手法のひとつである「RFM分析」を取り上げ、Power BIを使って顧客データを見える化する流れを紹介します。

以前書いた下記の記事では、EC全体のデータ分析の指標や手法について紹介しましたが、今回はその中でも顧客行動の理解に焦点を当てた実践的なアプローチをお伝えします。

ECデータ分析で売上と顧客数を伸ばす|指標・手法・ツールの実践ガイド

RFM分析とは?

RFM分析とは、顧客の購買履歴から「Recency(最終購買日)」「Frequency(購買頻度)」「Monetary(購買金額)」を確認し、3つの指標で顧客をランク付けする分析手法です。「最後に購入したのはいつか」「どのくらいの頻度で購入しているか」「どのくらいの金額を使っているか」の3要素で点数付けをすることで顧客をグループ化します。

RFM分析を行うメリット

RFM分析を行う最大の目的は、顧客の状態を可視化し、最適なアプローチを行うことです。顧客全体を一律に見るのではなく、行動パターンや購買傾向によってグループ化することで、データに基づいた施策立案が可能になります。

1.顧客セグメントごとの傾向を明確にできる

顧客を分類することで、どのグループが売上を支えているのか、また、どのグループが離脱リスクを抱えているのかを一目で把握できます。特に、売上の大部分を支えている優良顧客層を定義できる点は、マーケティング戦略において非常に重要です。

2.効果的なマーケティング施策を設計できる

顧客層が明確になると、それぞれに合わせた施策を考えやすくなります。例えば、優良顧客には限定キャンペーンや会員特典の提供などのロイヤリティを向上させるための施策、休眠顧客にはクーポンの配布や割引キャンペーンなどの再購入を促すための施策といったように、特定のグループに対してどんな施策を行うかを明確化できます。

3.シンプルな仕組みで実践しやすい

RFM分析は、必要なデータ項目が少なく、計算方法も単純です。データに「顧客ID」「購入日」「購入金額」が含まれていれば実践できるため、小規模なデータでも即座に実践可能です。さらに、Power BIやLooker StudioといったBIツールを用いることで、スコアの分布や顧客層の動きをインタラクティブに可視化できます。

4.データドリブンな意思決定の第一歩になる

数字で顧客の動きを把握することによって、感覚や経験に頼らない判断ができるようになります。その結果、社内で共通の顧客理解が生まれ、異なる部署であっても同じ指標を用いて議論できるようになります。

データドリブンな意思決定については、下記の記事で詳しく解説しております。あわせてご覧ください。

データドリブンな意思決定とは?|導入のメリットとステップを解説

RFMスコアの基準の決め方

RFM分析では、各指標を数値に応じてスコア化します。このスコア付けの基準について、実務でよく使われる2つの代表的な方法を紹介します。

相対基準で区切る(分位法)

ひとつは、データを一定の割合で区切り、上位から5点、4点……と点数を付けていく方法です。特に全顧客を20%ずつ分けて5分割する、クインタイル分割がよく使われます。この方法は自動的にデータをバランスよく分布できるため、業界や商材を問わず使えるのが利点です。ただし、顧客数が少ない場合や、特定の値が極端に偏っている場合には、区切り方が実態とずれてしまうことがあります。

絶対基準で区切る

もうひとつは、実態や目標、社内の定義などに合わせてスコアを設定する方法です。例えば「30日以内に購入がある人を最もアクティブな顧客、1年以上購入がない顧客を休眠顧客と定義する」場合、Rのスコア付けとしては次のような形が適当と考えられます。

  • 30日以内:5点
  • 31~90日:4点
  • 91~180日:3点
  • 181~364日:2点
  • 365日~:1点

この方法だと、現場で理解しやすく、施策にも直結しやすいスコアリングができます。ただし、閾値の根拠があいまいにならないよう注意が必要です。

総合スコアによる顧客分類

グループ分けの際にはR・F・Mそれぞれのスコアを合計し、総合スコアに基づいて顧客を分類します。スコア合計が高いほど優良顧客、低いほど離反リスクのある顧客と判断できます。

顧客ごとに最適な施策を考えるだけではなく、各グループの顧客数を比較し、どのグループへの働きかけを増やすか考えることも重要です。例えば高スコアの顧客が多い場合は優良顧客へのアップセル・クロスセル提案を増やす、低スコアの顧客が多い場合は休眠顧客を減らすための施策を優先するといった要領です。

Power BIでRFM分析のダッシュボードを作ろう

実際にPower BIを使ってRFM分析のダッシュボードを作ってみました。データソースはダミーを使用していますが、データラベルはShopifyから出力できる項目名をそのまま使用しています。

顧客を分類するために、自分で定めた基準に基づいたRFMスコアを算出する必要があります。データを取り込んだあとリレーションを設定し、分析に必要な項目を増やしていきましょう。

スコアの基準に沿った数式を入力する

各項目の基準と、それに沿った5段階のスコアを算出するための数式について、以下で解説します。

Rスコア

最終購入日に基づいて、以下のように分類しました。

  • 30日以内:5点
  • 31~60日:4点
  • 61~90日:3点
  • 91~120日:2点
  • 121日~:1点

この分類でスコアを算出するためには「顧客ごとの最終購入日」と、「基準日(ここではレポートを確認している日)から最終購入日までの日数」を出力する必要があります。

Power BIに顧客データ(rfm_customers)と注文データ(rfm_orders)を読み込ませ、IDでリレーションを行います。カーディナリティは「多対一」、クロスフィルターの方向は「双方向」に設定します(クロスフィルターの方向を「単一」にしてしまうと、日付スライサーが正常に働きません)

「テーブルビュー」に切り替え、rfm_customersに「新しい列」を追加します。

次のように数式を入力します。注文データに含まれている情報のうち、同一の顧客IDの中で最新の注文日を返す数式です。時間データは不要なので、データ型は「日付」にしてください。

LastPurchaseDate =
CALCULATE(
MAX(rfm_orders[created_at]),
FILTER(
rfm_orders,
rfm_orders[customer_id] = rfm_customers[id]
)
)

次に、基準日(レポートを確認している日)から最終購入日までの日数を計算して返す列を作成します。次の数式を入力します。

DaysSinceLastPurchase =
DATEDIFF(
rfm_customers[LastPurchaseDate],
TODAY(),
DAY
)

次に、いよいよRスコアを算出する列を作成します。次の数式を入力してください。

RecencyScore =
SWITCH(
TRUE(),
rfm_customers[DaysSinceLastPurchase] <= 30, 5,
rfm_customers[DaysSinceLastPurchase] <= 60, 4,
rfm_customers[DaysSinceLastPurchase] <= 90, 3,
rfm_customers[DaysSinceLastPurchase] <= 120, 2,
1
)

以前書いたDAX関数についての記事でも紹介している、SWITCH関数を使います。

Rスコアが算出されました。

Fスコア

累計購入回数に基づいて、以下のように分類しました。

  • 5回以上:5点
  • 4回:4点
  • 3回:3点
  • 2回:2点
  • 1回:1点

これもRスコアと同様に、SWITCH関数を使って算出します。orders_countの数値に応じて5段階に分類します。

FrequencyScore =
SWITCH(
TRUE(),
rfm_customers[orders_count] >= 5, 5,
rfm_customers[orders_count] = 4, 4,
rfm_customers[orders_count] = 3, 3,
rfm_customers[orders_count] = 2, 2,
rfm_customers[orders_count] = 1, 1,
BLANK()
)

Fスコアが算出されました。

Mスコア

全顧客に対する累計購入金額の割合に基づいて、以下のように分類しました。

  • 上位20%:5点
  • 20%超~40%:4点
  • 40%超~60%:3点
  • 60%超~80%:2点
  • 80%超~:1点

まず、total_spent列の数値(累計購入額)に応じた順位付けをします。以下のように数式を入力し、累計購入額の順位を示すための列を作成します。

MonetaryRank =
RANKX(
ALL(rfm_customers),
rfm_customers[total_spent],
,
DESC,
SKIP
)

累計購入額が同じ場合は同一の順位が表示され、次の順位がその分繰り下がります。例えばこのデータだと、3位の26,000が4人いるので、3位の次の順位は7位となります。

次に、この順位が上位何%にあたるのかを算出します。新しい列に以下の数式を入力します。

MonetaryPercentile =
DIVIDE(
rfm_customers[MonetaryRank],
COUNTROWS(ALL(rfm_customers))
)

小数表示だと見づらいので、書式を「パーセンテージ」に設定しておくと良いです。

続いて、SWITCH関数を使ってMスコアを算出します。

MonetaryScore =
SWITCH(
TRUE(),
rfm_customers[MonetaryPercentile] <= 0.2, 5,
rfm_customers[MonetaryPercentile] <= 0.4, 4,
rfm_customers[MonetaryPercentile] <= 0.6, 3,
rfm_customers[MonetaryPercentile] <= 0.8, 2,
1
)

総合スコア

3種類のスコアが算出できたら、それらを合計して総合スコアを算出します。

RFMScore =
rfm_customers[RecencyScore] +
rfm_customers[FrequencyScore] +
rfm_customers[MonetaryScore]

総合スコアが出力されました。

顧客の分類を作成する

RFMスコアに基づいた顧客分類を行います。今回は、以下の条件で分類しました。

  • 総合スコアが12点以上:優良顧客(ランク4)
  • 総合スコアが9~11点:中堅顧客(ランク3)
  • 総合スコアが7~8点:一般顧客(ランク2)
  • 総合スコアが6点以下:離反顧客(ランク1)

ここでもSWITCH関数を用いて分類します。数値でランクを算出し、それをもとに顧客の種類のラベルを付けた方が分析しやすいので、まずは以下の数式でランク列を算出します。

RFM_Rank =
SWITCH(
TRUE(),
rfm_customers[RFMScore] >= 12, 4,
rfm_customers[RFMScore] >= 9, 3,
rfm_customers[RFMScore] >= 7, 2,
1
)

次に、ランクに基づいたラベル列を作成します。

RFM_Segment =
SWITCH(
rfm_customers[RFM_Rank],
4, "優良顧客",
3, "中堅顧客",
2, "一般顧客",
"離反顧客"
)

ラベル列が作成できました。あとは「レポートビュー」でこれらのデータを可視化していきましょう。

まとめ:RFM分析で顧客を理解し、施策に活かす

RFM分析は、「最近の購買」「頻度」「金額」という3つのシンプルな指標から、顧客の状態や価値を把握できる実践的な手法です。Excelやスプレッドシートでも実施できますが、Power BIを使うことで可視化やセグメント別の比較が容易になります。

小売業やEC業では、すべての顧客に同じ施策を行うのではなく、優良顧客に向けたロイヤリティ強化、離反顧客に対する再購入の動機付けといったように、顧客層に応じたアプローチが成果を左右します。
RFM分析は、そのための出発点として非常に有効です。

サイトエンジン株式会社では、BIツール(Power BIだけでなくLooker Studioにも対応可能です)を活用したデータ解析・設計の支援を行っています。データ分析に関するご相談も無料で受け付けております。「Looker Studioでレポート作りたいけど、こういうことはできる?」といったご相談から「Power BIを触ってみたけど、ここが上手くいかない」といったご質問まで大歓迎です!

また、貴社オリジナルのダッシュボードを設計することや、分析レポートを作成して貴社の施策の改善提案をすることもできます。ぜひお気軽にお問い合わせください。

データ分析・可視化支援サービス ― Looker Studio / Power BIによるレポート作成支援

Power BIでそのまま使えるGA4テンプレートも無料配布中です。こちらもあわせてご覧ください。

吉永 森文

この記事を書いた人

吉永 森文

大学職員、公務員、SEを経て、サイトエンジン株式会社に入社。データ分析・可視化事業を中心に、事業開発にも携わっています。

CONTACT

お問い合わせ