Segmentação de Clientes via RFM
Otimizando a retenção da Shape Company através de dados
📊 O Desafio de Negócio
A Shape Company enfrentava dificuldades para personalizar suas estratégias de CRM. Com uma base de clientes crescendo, tratar todos da mesma forma estava gerando desperdício de verba e baixas taxas de conversão.
O objetivo deste projeto foi analisar o histórico transacional e classificar os clientes em grupos estratégicos utilizando a metodologia RFM (Recência, Frequência e Valor Monetário).
Nota sobre os dados: Para esta demonstração visual, foram extraídos do banco de dados uma amostra qualificada de clientes, priorizando aqueles com histórico de recorrência (> 5 pedidos) para análise de fidelidade, mantendo apenas uma pequena parcela de novos usuários para fins comparativos.
🐍 Processamento dos Dados (Python/Pandas)
A segmentação foi realizada através do cálculo de quartis para cada métrica RFM. Abaixo está o código Python utilizado para processar os dados:
import pandas as pd
import numpy as np
from datetime import datetime
# Carrega dados transacionais
df = pd.read_csv('transacoes.csv')
# Calcula métricas RFM para cada cliente
hoje = datetime.now()
rfm = df.groupby('id_cliente').agg({
'data_compra': lambda x: (hoje - pd.to_datetime(x.max())).days, # Recência
'id_pedido': 'count', # Frequência
'valor_total': 'sum' # Monetário
}).rename(columns={
'data_compra': 'recencia',
'id_pedido': 'frequencia',
'valor_total': 'valor_monetario'
})
# Calcula quartis e atribui scores (1-4)
rfm['R_score'] = pd.qcut(rfm['recencia'], q=4, labels=[4, 3, 2, 1])
rfm['F_score'] = pd.qcut(rfm['frequencia'].rank(method='first'), q=4, labels=[1, 2, 3, 4])
rfm['M_score'] = pd.qcut(rfm['valor_monetario'].rank(method='first'), q=4, labels=[1, 2, 3, 4])
# Cria score RFM combinado
rfm['RFM_score'] = rfm['R_score'].astype(str) + rfm['F_score'].astype(str) + rfm['M_score'].astype(str)
# Define segmentos baseados nos scores
def segmentar_cliente(row):
if row['R_score'] >= 3 and row['F_score'] >= 3 and row['M_score'] >= 3:
return 'VIP'
elif row['R_score'] >= 3 and row['F_score'] >= 2:
return 'Fiel'
elif row['R_score'] >= 3 and row['F_score'] == 1:
return 'Novo'
elif row['R_score'] == 2 and row['F_score'] >= 2:
return 'Promissor'
elif row['R_score'] == 1 and row['F_score'] >= 3:
return 'Em Risco'
elif row['R_score'] == 1 and row['F_score'] == 2:
return 'Atenção'
elif row['R_score'] == 1 and row['F_score'] == 1 and row['M_score'] >= 2:
return 'Hibernando'
else:
return 'Perdido'
rfm['segmento'] = rfm.apply(segmentar_cliente, axis=1)
print(rfm.head())
print(f"\nDistribuição de Segmentos:\n{rfm['segmento'].value_counts()}")
📈 Mapa de Dispersão dos Segmentos
Explore o gráfico abaixo. Cada ponto representa um cliente. O Eixo X mostra a lealdade (Frequência) e o Eixo Y o valor gasto (Monetário).
🔍 Insights e Estratégias por Segmento
Cada grupo de clientes demanda uma abordagem específica. Abaixo estão os insights extraídos da análise e as ações recomendadas para cada segmento:
VIP
Clientes de alto valor que compram frequentemente e recentemente. Representam o topo da base e geram a maior receita. São leais e engajados com a marca.
Fiel
Compradores regulares com bom histórico de compras. Embora não gastem tanto quanto VIPs, são consistentes e têm potencial de upgrade.
Promissor
Clientes recentes com frequência moderada. Demonstram interesse e têm potencial para se tornarem fiéis se bem nutridos.
Novo
Fizeram primeira compra recentemente. Momento crítico para criar boa impressão e incentivar segunda compra.
Em Risco
Clientes de alto valor que não compram há muito tempo. Eram importantes mas estão se afastando. Requer ação urgente.
Atenção
Frequência moderada mas recência baixa. Começam a mostrar sinais de desengajamento. Janela de oportunidade para reconquistar.
Hibernando
Clientes inativos há bastante tempo mas com histórico de compras. Difícil reativação mas ainda vale a tentativa.
Perdido
Clientes que não retornam há muito tempo e têm baixo valor histórico. Custo de reativação provavelmente supera retorno.
🎯 Resultados Alcançados
Após a implementação da segmentação RFM e das estratégias personalizadas por grupo, a Shape Company obteve melhorias significativas em suas métricas de CRM:
🚧 Dificuldades Enfrentadas e Aprendizados
Desafio 1: Qualidade dos Dados
Inicialmente, encontramos inconsistências nos registros transacionais, com datas faltantes e valores duplicados. Foi necessário um processo rigoroso de limpeza e validação antes da análise.
Desafio 2: Definição dos Thresholds
Determinar os pontos de corte entre segmentos não foi trivial. Testamos diferentes abordagens (quartis, percentis personalizados, clustering) até encontrar a segmentação que melhor refletia o comportamento real dos clientes.
Desafio 3: Integração com Ferramentas de Marketing
A implementação prática exigiu integração com a plataforma de CRM existente. Desenvolvemos pipelines automatizados para atualização diária dos segmentos e sincronização com as ferramentas de email marketing.
Aprendizado Principal: A segmentação RFM é poderosa, mas requer monitoramento contínuo. Os comportamentos dos clientes mudam, e os segmentos precisam ser reavaliados periodicamente para manter a eficácia das estratégias.
🚀 Próximos Passos
Com a base sólida estabelecida pela segmentação RFM, os próximos passos incluem:
1. Modelo Preditivo de Churn: Desenvolver algoritmos de machine learning para prever quais clientes estão em risco de migrar para segmentos inferiores, permitindo ação proativa.
2. Análise de Cohort: Complementar o RFM com análise de cohort para entender padrões temporais e sazonalidade no comportamento de compra.
3. Customer Lifetime Value (CLV): Calcular o valor vitalício de cada segmento para otimizar alocação de budget de marketing e priorizar investimentos.
4. Automação Completa: Implementar automações de marketing que respondam em tempo real às mudanças de segmento, criando jornadas dinâmicas e personalizadas.