ノウハウ

エクセルでのRFM分析のやり方~RFMの各値を抽出する方法~

2017/2/15

オフィス

RFM分析でもっとも重要なのは「顧客のデータを揃えること」です。
これは当たり前のようで、意外に難しいことです。

たとえば、以下のデータがあることはRFM分析の絶対条件ですが、これらのデータを「出せていない」というケースは多くあります。

  • 顧客ごとの累計売上金額(Monetary)
  • 顧客ごとの累計来店回数(Frequency)

逆に、これらのデータを出せた時点で、事業規模によってはRFM分析が完了することもあります。そして、上の2つのデータはエクセルでも抽出できるのです。

この記事では、その抽出方法を中心にエクセルでのRFM分析のやり方を解説します。また、補足としてPythonでの分析のやり方も紹介します。

「エクセルやPythonを使って、自力でRFM分析をしてみたい」と思っている人には、きっと役立てていただけるでしょう。

(なお、RFM分析の概要や全体的なやり方については、下の記事で詳しくまとめています)

エクセルでのRFM分析のやり方(各値の抽出方法)

オフィス

RFM分析はエクセルでもできます。やり方はその人が何をしたいのかによって異なります。ここでは、

  • 現時点で出せていない「R・F・Mの各値」を出す
  • ↑(分析の前の「抽出」をする)

というやり方に絞って説明します。具体的には、下のデータを出す方法です。

Monetary売上総額
Frequency合計来店回数
Recency最終来店日からの経過日数

エクセルを使う必要性が高いのが、M・F・Rの順番であるため、上のような順番になっています。

(たとえばRは、経過日数をカウントせずとも最終来店日だけでも分析できるため、重要性が低くなります)

なお、今回のサンプル制作に使ったエクセルファイルは下記のものです。「同じファイルでテストしたい」という方は、お気軽にお使いください。

RFM分析用ファイル(エクセル・20KB)

① Monetary:顧客ごとの売上総額を出す方法

まず、下のような基本的データがあるとします。

やり方

  • 来店日
  • お客様ID
  • お買上金額

上の3つが揃ったデータです。このデータですが「同じお客さんの別の日の買い物」がバラバラで記録されています。↓

やり方

上のように、同じ「ID-1159」のお客さんの買い物が、バラバラになっているわけです。これを自動的に集計する(顧客ごとの総額を出す)方法を説明します。

まず、下のようにデータ全体を選択してください。

やり方

次に上部メニューの「挿入」をクリックします。

やり方

出てくるメニューのうち、左端の「ピボットテーブル」をクリックします。

ピボットテーブル

クリックすると、下の画像のように「ピボットテーブルの作成」というメニューが出てきます。「OK」を押してください。

やり方

すると、下のような画面になります。右側を見てください。

やり方

下の画像のように「ピボットテーブルのフィールド」というメニューが右側に表示されています。

やり方

「お客様ID」のボックスをチェックしてください。

やり方

すると、下の方にある「行」というスペースに「お客様ID」という言葉が自動で出てきます。

やり方

この時点で、画面左側に下のような「行ラベル」というデータが登場しています。

やり方

次に「お買上金額」もチェックすると、下の方の「値」のボックスに「合計/お買上金額」という文字が登場します。↓

やり方

この時点で、左側は下のような状態になります。

やり方

全体像を見るとこうなります。↓

やり方

次に「お買上金額」の一番上のセル(マス)を選択します。

 

右クリックをして出てきたメニューの「並べ替え」を選びます。

やり方

「並べ替え」からさらに出てくるメニューの「降順」を選びます。

やり方

すると、下のように「お買上金額が大きい順」に並びます。

やり方

これで「顧客ごとの売上げ総額を大きい順に並べる」ことができたわけです。

基本的には、総額が大きいほど優良顧客です。このため、優良顧客の抽出がこれでおおむね出来たといえます。

② Frequency:来店頻度(累計来店回数)を出す方法

Frequencyの来店頻度(来店回数)もエクセルで出せます。まず、最初のデータは下のようなものです。

やり方

「ID-1159」と「ID-8501」のお客さんが複数回来店しています。これはエクセル的には「同じ文字列がいくつあるか」をカウントすればいいのです。

まず、下のように1行挿入します。

やり方

次に、一番上のお客様IDのとなりのセルを選択します。↓

やり方

ここに「=COUNTIF($B$2:$B$500,B2)」という数式を入力します。

やり方

数式はコピペで使えます。セルの位置がサンプルと同じであれば、そのまますぐ集計されます。

そして、数式を入力するとすぐ、下のように結果が出ます。「34」と出ました。

やり方

このセルの右下をクリックし、数式を行全体にコピーします。↓

やり方

これで、他のIDもすべて累計の個数(来店回数)がわかりました。仕上げに「来店回数」と文字を入れます。

やり方

今回も同じ人が複数回書かれているので、同じ人は1つのデータにまとめたいと思います。↓

やり方

  • データを全部選択
  • 「上部メニュー」⇒「挿入」⇒「ピボットメニュー」⇒「OK」

という流れは先ほど(顧客ごとの総額)と同じです。今回は追加した「来店回数」が表示されています。

やり方

先ほどと同じく、まず「お客様ID」をチェック。次に、「来店回数」もチェックすると「値」のボックスに「合計/来店回数」と出ます。

やり方

この「合計」が曲者で、34回来店した人について「34回+34回+34回…」とやってしまいます。そのため、来店回数が下のように膨大になります。

やり方

こうならないよう「合計」の部分を変えます。「合計/来店回数」をクリックし、出てきたメニューから「値フィールドの設定」を選んでください。

やり方

すると下のような画面が出るので、「選択したフィールドのデータ」の選択肢から「最大」を選んでください(最初は「合計」が選択されています)。

やり方

選択して「OK」を押すと、エクセルの左側が下のようになります。

やり方

総額のときと同じように、

  1. 来店回数の「一番上」のセルを選択
  2. 右クリック
  3. 並べ替え
  4. 降順

をすると、下のように「来店回数順」で並べ替えられます。

やり方

これでFrequency(来店頻度・回数)がわかるということです。

③ Recency:最終来店日からの日数をカウントする方法

まず、来店日・お客様IDがあります。

やり方

この右に「集計日」の列を追加します。今日、もしくは「その日までの日数をカウントしたい」という、終点の日付を入れます。

やり方

集計日を列全体にコピーします(初心者の人には、このやり方が一番簡単です)。

やり方

次に「経過日数」の列も追加します。

やり方

一番上のセルに「=DATEDIF(A2,C2,"d")」と入力します。セルの配置が同じならコピペでOKです。

やり方

そして、入力すると下のように経過日数が出ます。「383」と出ました。

やり方

セルの右下をクリックし、計算式をコピーします。↓

やり方

今までと同じように、ピボットテーブルを出します。「お客様ID」「経過日数」を選択します。↓

やり方

経過日数の方が「個数」や「合計」などの設定になっています。これも「値フィールドの設定」で、今までと同じように修正します。

今回は同じお客さんで一番近い日付を知りたいので「最小」を選択します。

やり方

すると、エクセル左側に下のような「最少経過日数の一覧」が出ました。

やり方

これまでと同じやり方で「一番上のセルを選択」⇒「右クリック」⇒「並べ替え」をします。今までと違う点は「降順」でなく「昇順」にすることです。最新の日付からの日数を知りたいためです。

昇順で並べ替えると、下のようになります。

やり方

これで、お客さんのRecency(最終来店日からの経過日数)の一覧を出せました。

Pythonを利用したRFM分析のデータ入手方法

プログラマ

Pythonのコードが書けるプログラマ・エンジニアの方なら、PythonによるRFM分析にも興味があるでしょう。ここでは、Pythonを動かすために必要な「RFM分析用のデータ」の入手方法を2つ解説します。

以下、それぞれの入手方法の解説です。

現実的なデータを米国の大学サイトでDLできる

実務で使うPythonを完成させたら「リアルなデータ」で実験する必要があります。「現実のデータ」でテストが成功したら、実務で導入しても成功する確率が高いでしょう。

このデータですが、米国カリフォルニア大学・アーバイン校(UCI)が提供しています。UC Irvine Machine Learning Repository(UCI・機械学習集積所)というサイトです。

UCI出典:UCI(上のリンクと同じ)

このUCIの「Online Retail Data Set 」のページにデータがあります。「Data Folder」のリンクから探せます。

このデータの利用方法については、下の「nysol_python」さんのページ(日本語)でわかりやすくまとめられています。

参考オンラインストア購買データ

上のデータが使いにくかった場合

上のデータが使いにくかったら、githubのデータも使えます。RFM分析用に作られた「.csv」などのデータです。

参考RFM-analysis/sample-orders.csv(joaolcorreia) | github

このデータですが「grand total」という項目が「購入金額」です(直訳すると「総計」という意味)。

金額のデータはドル建てなので100倍するといいでしょう(テストなら相場はおおよそでOKのため)。

実際にこのデータを使ってPythonのプログラムを組まれた方のコードが、下のページで詳しく公開されています。

参考Pythonを使ったRFM分析 | ysaz (ImanazaS) blog

まとめ:RFM分析にはPOS&高機能クラウドが不可欠

RFM分析にはまず、POSやポイントカードによるデータ収集が不可欠です。今回説明したエクセルやPythonの方法にしても、まず「顧客を識別できるデータ」が揃っていないと始まらないのです。そのデータ収集にはPOSレジが有効です。

さらに、エクセルでは初歩的な分析・抽出しかできません。極めれば高度な分析もできますが、それはアパレルの業界人の仕事ではないと、誰もが感じるでしょう。Pythonによる分析も同じです。

このようなPCスキルを磨くよりも、最初からRFM分析用に開発されたツールを導入する方が、はるかに合理的だと誰もが感じるでしょう。

そして、そういったツールやPOSレジを導入する場合、アパレル店舗の運営であれば、やはり「アパレル専用」のものが最も有効です。アパレル特有の品目の区別などに対応しているため、初期設定もその後の運用もすべてスムーズにできます。

弊社はアパレル専用のPOSレジとして『アパレル管理自動くんPOSレジ』、同じくアパレル専用の高機能クラウドシステムとして『アパレル管理自動くん』を提供しています。いずれもアパレル店舗の運営でRFM分析を行う際、御社の業務に大きく貢献できるものです。

それぞれの機能などの詳細は、下記のバナーからご覧いただけたらと思います。的確なRFM分析を行うことで、自社にとって大事なお客様をより大切にするという、ビジネス的にも人間的にも価値のある取り組みを実現できるでしょう。

サービス開始当初の2015年より契約継続率100%!

詳しくはこちら

-ノウハウ
-, ,