RFM 지표 계산

Python을 활용한 고객 세분화

Karolis Urbonas

Head of Data Science, Amazon

정의

  • Recency: 마지막 구매 후 경과일수
  • Frequency: 최근 12개월 거래 횟수
  • Monetary Value: 최근 12개월 총 지출
Python을 활용한 고객 세분화

데이터셋과 준비

  • 이전 레슨과 동일한 online 데이터셋
  • 약간의 전처리가 필요합니다
  • 새로운 TotalSum 컬럼 = Quantity x UnitPrice

상위 5개 행

Python을 활용한 고객 세분화

데이터 준비 단계

최근 12개월만 포함한 전처리된 online DataFrame으로 시작합니다:

print('Min:{}; Max:{}'.format(min(online.InvoiceDate),
                              max(online.InvoiceDate)))
Min:2010-12-10; Max:2011-12-09

최근 시점에 분석한다고 가정하여 가상의 snapshot_day를 생성합니다.

snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
Python을 활용한 고객 세분화

RFM 지표 계산

# 고객 단위로 집계
datamart = online.groupby(['CustomerID']).agg({
    'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
    'InvoiceNo': 'count',
    'TotalSum': 'sum'})

# 해석을 위해 컬럼명 변경 datamart.rename(columns = {'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True)
# 상위 행 확인 datamart.head()
Python을 활용한 고객 세분화

최종 RFM 값

RFM 세분화를 위한 테이블이 완성되었습니다!

RFM 상위 5개

Python을 활용한 고객 세분화

RFM 값을 계산해 봅시다!

Python을 활용한 고객 세분화

Preparing Video For Download...