Calcular métricas RFM

Segmentación de clientes en Python

Karolis Urbonas

Head of Data Science, Amazon

Definiciones

  • Recencia: días desde la última compra
  • Frecuencia: nº de compras en los últimos 12 meses
  • Valor monetario: gasto total en los últimos 12 meses
Segmentación de clientes en Python

Dataset y preparación

  • Mismo dataset online que en las lecciones anteriores
  • Hay que preparar algunos datos
  • Nueva columna TotalSum = Quantity x UnitPrice.

primeras 5 filas

Segmentación de clientes en Python

Pasos de preparación de datos

Empezamos con un DataFrame online preprocesado con solo los últimos 12 meses:

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

Creamos una snapshot_day hipotética como si analizáramos hoy.

snapshot_date = max(online.InvoiceDate) + datetime.timedelta(days=1)
Segmentación de clientes en Python

Calcular métricas 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()
Segmentación de clientes en Python

Valores RFM finales

¡La tabla para la segmentación RFM está lista!

rfm_top_5

Segmentación de clientes en Python

¡Vamos a practicar!

Segmentación de clientes en Python

Preparing Video For Download...