rfm_segments#

pymc_marketing.clv.utils.rfm_segments(transactions, customer_id_col, datetime_col, monetary_value_col, segment_config=None, observation_period_end=None, datetime_format=None, time_unit='D', time_scaler=1, sort_transactions=True)[fuente]#

Asigne clientes a segmentos basados en el comportamiento de gasto derivado de las puntuaciones RFM.

Esto transforma un DataFrame de datos de transacciones de la forma:

id_cliente, fecha_hora, valor_monetario

a un DataFrame de la forma:

id_cliente, frecuencia, recencia, valor_monetario, puntuación_rfm, segmento

Los datos de compra de los clientes se agrupan en tres variables: recency, frequency y monetary_value. Se estiman los cuartiles para cada variable, y luego se asigna un puntaje RFM de tres dígitos a cada cliente. Por ejemplo, un cliente con un puntaje de “234” se encuentra en el segundo cuartil para recency, en el tercer cuartil para frequency y en el cuarto cuartil para monetary_value. Se determinan los puntajes RFM correspondientes a segmentos como «Top Spender», «Frequent Buyer» o «At-Risk», y luego se segmentan los clientes en función de su puntaje RFM.

Por defecto, se crean los siguientes segmentos:
  • Cliente Premium: Clientes en los 2 cuartiles superiores para todas las variables.

  • «Cliente Recurrente»: Clientes en los 2 cuartiles superiores por frecuencia, y ya sea por recencia o valor monetario.

  • «Mejor Gastador»: Clientes en los 2 cuartiles superiores por valor monetario, y ya sea por frecuencia o por recencia.

  • «Cliente en riesgo»: Clientes en los dos cuartiles inferiores para dos o más variables.

  • Cliente inactivo: Clientes en el cuartil inferior para dos o más variables.

  • Los clientes con puntuaciones RFM no especificadas serán asignados a un segmento llamado «Otro».

Si se desea un enfoque de segmentación alternativo, utilice rfm_summary(include_first_transaction=True, *args, **kwargs) en su lugar para preprocesar los datos para la segmentación. En cualquier caso, el DataFrame devuelto no puede ser utilizado para modelado. Si se asignan las predicciones del modelo a los segmentos RFM, cree un DataFrame separado para el modelado y únalo por ID de Cliente.

Parámetros:
transacciones : DataFrameDataFrame

Un DataFrame de Pandas que contiene customer_id_col y datetime_col.

customer_id_colstr

Columna en el DataFrame de transacciones que denota el customer_id.

datetime_colstr

Columna en el DataFrame de transacciones que denota las fechas y horas en que se realizaron las compras.

monetary_value_colstr

Columna en el DataFrame de transacciones que denota el valor monetario de la transacción.

segment_config : dict, opcionalpython:dict, opcional

Diccionario que contiene nombres de segmentos y lista de asignaciones de puntuaciones RFM; los pares clave/valor deben estar formateados como {"segment": ['111', '123', '321'], ...}. Si no se proporciona, se aplican los nombres y definiciones de segmentos predeterminados.

observation_period_end : Union[str, pandas.Period, datetime, None], opcionalUnión[python:str, pandas.Period, datetime, python:None], opcional

Una cadena o fecha y hora para denotar la fecha final del estudio. Los eventos después de esta fecha se truncarán. Si no se proporciona, se establece por defecto en el máximo de datetime_col.

datetime_format : str, opcionalpython:str, opcional

Una cadena que representa el formato de la marca de tiempo. Útil si Pandas no reconoce el formato proporcionado.

unidad_tiempo : str, opcionalpython:str, opcional

Granularidad de tiempo para el estudio. Predeterminado: “D” para días. Los valores posibles se enumeran aquí: https://numpy.org/devdocs/reference/arrays.datetime.html#datetime-units

time_scaler : int, opcionalpython:int, opcional

Predeterminado: 1. Escala recencia y T a una granularidad temporal diferente. Esto es útil para conjuntos de datos que abarcan muchos años y para realizar predicciones en diferentes escalas de tiempo.

sort_transactions : bool, opcionalbool, opcional

Predeterminado: Verdadero Si los datos sin procesar ya están ordenados en orden cronológico, establezca en Falso para mejorar la eficiencia computacional.

Devoluciones:
DataFrame

Dataframe que contiene datos RFM resumidos, puntuaciones RFM y asignaciones de segmentos