Obliczanie metryk RFM

Segmentacja klientów w Pythonie

Karolis Urbonas

Head of Data Science, Amazon

Definicje

  • Recency – liczba dni od ostatniej transakcji klienta
  • Frequency – liczba transakcji w ciągu ostatnich 12 miesięcy
  • Monetary Value – łączne wydatki w ciągu ostatnich 12 miesięcy
Segmentacja klientów w Pythonie

Zbiór danych i przygotowanie

  • Ten sam zbiór danych online co w poprzednich lekcjach
  • Wymagane przygotowanie danych
  • Nowa kolumna TotalSum = Quantity x UnitPrice.

Pierwsze 5 wierszy

Segmentacja klientów w Pythonie

Kroki przygotowania danych

Zaczynamy od wstępnie przetworzonej ramki danych online zawierającej tylko ostatnie 12 miesięcy:

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

Utwórzmy hipotetyczną datę snapshot_day, jak gdyby analiza była przeprowadzana niedawno.

snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
Segmentacja klientów w Pythonie

Obliczanie metryk RFM

# Aggregate data on a customer level
datamart = online.groupby(['CustomerID']).agg({
    'InvoiceDate': lambda x: (snapshot_date - x.max()).days,
    'InvoiceNo': 'count',
    'TotalSum': 'sum'})

# Rename columns for easier interpretation datamart.rename(columns = {'InvoiceDate': 'Recency', 'InvoiceNo': 'Frequency', 'TotalSum': 'MonetaryValue'}, inplace=True)
# Check the first rows datamart.head()
Segmentacja klientów w Pythonie

Końcowe wartości RFM

Tabela do segmentacji RFM jest gotowa!

Pierwsze 5 wierszy RFM

Segmentacja klientów w Pythonie

Czas obliczyć wartości RFM!

Segmentacja klientów w Pythonie

Preparing Video For Download...