使用Python進行RFM分析


Python 是一種用途廣泛的程式語言,在資料分析和機器學習領域獲得了極大的普及。其簡潔性、可讀性和大量的庫使其成為處理複雜資料任務的理想選擇。RFM 分析就是這樣一個強大的應用,它是一種用於根據客戶購買行為細分客戶的營銷技術。

在本教程中,我們將指導您完成使用 Python 實現 RFM 分析的過程。我們將首先解釋 RFM 分析的概念及其在營銷中的意義。然後,我們將逐步深入探討使用 Python 進行 RFM 分析的實踐方面。在文章的下一部分,我們將演示如何使用 Python 計算每個客戶的 RFM 分數,並考慮為近期性、頻率和貨幣價值分配分數的不同方法。

瞭解RFM分析

RFM 分析是一種強大的營銷技術,用於根據客戶的購買行為細分客戶。RFM 代表近期性 (Recency)、頻率 (Frequency) 和貨幣價值 (Monetary value),這是用於評估和分類客戶的三個關鍵因素。讓我們分解每個組成部分,以瞭解其在 RFM 分析中的重要性。

  • 近期性:近期性是指自客戶上次購買以來所經過的時間。它幫助我們瞭解客戶最近與企業互動的頻率。

  • 頻率:頻率是指客戶在給定時間範圍內進行的購買次數。它幫助我們瞭解客戶與企業互動的頻率。

  • 貨幣價值:貨幣價值是指客戶在購買上花費的總金額。它幫助我們瞭解客戶交易的價值及其對企業的潛在價值。

現在我們已經瞭解了 RFM 分析,讓我們在文章的下一部分學習如何在 Python 中實現它。

在Python中實現RFM分析

要使用 Python 執行 RFM 分析,我們將依賴兩個必要的庫:Pandas 和 NumPy。要在您的機器上安裝 Numpy 和 panda,我們將使用 pip(python 包管理器)。開啟您的終端或命令提示符並執行以下命令:

pip install pandas
pip install numpy

安裝完成後,我們可以繼續使用 Python 實現 RFM 分析。

步驟 1:匯入所需的庫

首先,讓我們將必要的庫匯入到我們的 Python 指令碼中:

import pandas as pd
import numpy as np

步驟 2:載入和準備資料

接下來,我們需要載入和準備用於 RFM 分析的資料。假設我們有一個名為 `customer_data.csv` 的資料集,其中包含有關客戶交易的資訊,包括客戶 ID、交易日期和購買金額。我們可以使用 Pandas 將資料讀取到 DataFrame 中並對其進行預處理以進行分析。

# Load the data from the CSV file
df = pd.read_csv('customer_data.csv')

# Convert the transaction date column to datetime format
df['transaction_date'] = pd.to_datetime(df['transaction_date'])

步驟 3:計算RFM指標

現在,讓我們繼續計算每個客戶的 RFM 指標。透過利用一系列函式和運算,我們將確定近期性、頻率和貨幣價值分數。

# Calculate recency by subtracting the latest transaction date from each customer's transaction date
df['recency'] = pd.to_datetime('2023-06-02') - df['transaction_date']

# Calculate frequency by counting the number of transactions for each customer
df_frequency = df.groupby('customer_id').agg({'transaction_id': 'nunique'})
df_frequency = df_frequency.rename(columns={'transaction_id': 'frequency'})

# Calculate monetary value by summing the purchase amounts for each customer
df_monetary = df.groupby('customer_id').agg({'purchase_amount': 'sum'})
df_monetary = df_monetary.rename(columns={'purchase_amount': 'monetary_value'})

步驟 4:分配RFM分數

在此步驟中,我們將為近期性、頻率和貨幣價值指標分配分數,使我們能夠根據客戶的購買行為評估和分類客戶。需要注意的是,您可以靈活地定義自己的評分標準,以符合專案的獨特要求。

# Define score ranges and assign scores to recency, frequency, and monetary value
recency_scores = pd.qcut(df['recency'].dt.days, q=5, labels=False)
frequency_scores = pd.qcut(df_frequency['frequency'], q=5, labels=False)
monetary_scores = pd.qcut(df_monetary['monetary_value'], q=5, labels=False)

# Assign the calculated scores to the DataFrame
df['recency_score'] = recency_scores
df_frequency['frequency_score'] = frequency_scores
df_monetary['monetary_score'] = monetary_scores

步驟 5:合併RFM分數

最後,我們將各個 RFM 分數合併為每個客戶的單個 RFM 分數。

# Combine the RFM scores into a single RFM score
df['RFM_score'] = df['recency_score'].astype(str) + df_frequency['frequency_score'].astype(str) + df_monetary['monetary_score'].astype(str)

# print data  
print(df)

當您執行上面提供的程式碼以使用 Python 計算 RFM 分數時,您將看到以下輸出:

輸出

   customer_id transaction_date  purchase_amount  recency  recency_score  frequency_score  monetary_score RFM_score
0      1234567       2023-01-15             50.0 138 days              3                1               2       312
1      2345678       2023-02-01             80.0 121 days              3                2               3       323
2      3456789       2023-03-10            120.0  84 days              4                3               4       434
3      4567890       2023-05-05             70.0  28 days              5                4               3       543
4      5678901       2023-05-20            100.0  13 days              5                5               4       554

從上面的輸出可以看出,它顯示了每個客戶的資料,包括其唯一的 customer_id、transaction_date 和 purchase_amount。近期性列以天為單位表示計算出的近期性。近期性分數、頻率分數和貨幣價值分數列顯示了每個指標的分配分數。

最後,RFM_score 列將近期性、頻率和貨幣價值的各個分數組合成單個 RFM 分數。此分數可用於細分客戶並深入瞭解其行為和偏好。

就是這樣!您已成功使用 Python 計算每個客戶的 RFM 分數。

結論

總之,RFM 分析是一種強大的營銷技術,使我們能夠根據客戶的購買行為細分客戶。在本教程中,我們探討了 RFM 分析的概念及其在營銷中的意義。我們提供了一個關於如何使用 Python 實現 RFM 分析的分步指南。我們介紹了必要的 Python 庫,例如 Pandas 和 NumPy,並演示瞭如何計算每個客戶的 RFM 分數。我們為每個步驟提供了示例和解釋,使其易於理解。

更新於:2023年7月25日

650 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告