O que pode explicar a taxa de 26% de cancelamento de assinatura de clientes - o tal do churn - ? O que os dados nos dizem?
![](https://static.wixstatic.com/media/1b626c_7e99374ac9da4e05a5fa7140f2c7c252~mv2.jpg/v1/fill/w_488,h_257,al_c,q_80,enc_auto/1b626c_7e99374ac9da4e05a5fa7140f2c7c252~mv2.jpg)
Contexto
Analisando o histórico dos clientes dos últimos anos de tal empresa, percebemos que 26% dos clientes cancelaram a assinatura. O que pode está acontecendo e o que fazer?
Objetivo
Entender os principais motivos que levam ao cancelamento para assim gerar um plano de ação a partir de insights identificados.
Dataset
Fonte: Curso Hashtag Programação - Análise de Dados com Python
Link: htps://www.kaggle.com/sakshigoyal7/credit-card-customers
File:
Vamos lá!
Vamos importar as bibliotecas necessárias:
import pandas as pd
import numpy as np
import plotly.express as px
import seaborn as sns
import matplotlib.pyplot as plt
import time
Lendo o dataset:
path= r'C:/Users/Rafael Mariani/Análise Exploratória de Dados/AED - Costumer Churn/'
filename = 'telecom_users.csv'
data_path = path + filename #diretório dataset
path_fig = path
df_cost = pd.read_csv(data_path)
Vamos processar os dados:
#análise inicial
df_cost.info()
df_cost.head()
df_cost.isnull().sum() #identicando o total de dados ausentes
df_cost.isnull().mean()*100 #identificando o percentual de dados ausentes
df_cost.drop('Codigo',axis=1,inplace=True) #excluindo coluna inútil
df_cost.dropna(how='any', inplace=True) #eliminando linhas que tenham ao menos um dado ausente
df_cost.duplicated().sum() #identificando linhas duplicadas
#convertendo a coluna TotalGasto de tipo objeto para numérico
df_cost.info()
df_cost['TotalGasto'] = pd.to_numeric(df_cost['TotalGasto'],errors='coerce') #coerce, indica que em caso de erro, o valor a ser considerado na transformação será NaN
df_cost.info()
df_cost['Churn'].value_counts(normalize=True)*100 #identificando o percentual de cancelamentos
#Mantendo o padrão Sim ou Não
df_cost['Aposentado']= df_cost['Aposentado'].astype(str)
df_cost['Aposentado'] = df_cost['Aposentado'].str.replace('1','Sim')
df_cost['Aposentado'] = df_cost['Aposentado'].str.replace('0','Não')
#Reduzindo o nome em FormaPagamento
df_cost['FormaPagamento'] = df_cost['FormaPagamento'].str.replace('CartaoCredito','Credito') df_cost['FormaPagamento'] = df_cost['FormaPagamento'].str.replace('DebitoAutomatico','Deb.Aut.') df_cost['FormaPagamento'] = df_cost['FormaPagamento'].str.replace('BoletoEletronico','Bol.Elet.') df_cost['FormaPagamento'] = df_cost['FormaPagamento'].str.replace('BoletoImpresso','Bol.Impres.')
Vamos analisar a taxa de churn relacionado a cada variável. Para isto, a partir de um loop, vamos fazer um plot com 20 subplots contendo histogramas:
#Plotando histogramas em subplots
fig,ax = plt.subplots(4,5,figsize= (14,7)) #propriedades dos plots serão compartilhadas em todos os subplots
ax = ax.flat #necessário para o loop do subplot
i=0
for col in df_cost:
if ((col != 'Unnamed: 0') and (col != 'IDCliente')):
sns.histplot(data=df_cost,x=col,hue='Churn',multiple="stack", shrink=.8,ax=ax[i],legend=False)
ax[i].set_xlabel(col,fontweight='bold')
ax[i].grid(False)
i = i+1
fig.tight_layout()
ax[19].legend(('Canceled','Not Canc.'),fontsize=8)
ax[1].legend(('Canceled','Not Canc.'),fontsize=8)
#salvando figura
plt.savefig(path_fig + '\Churn Analysis - Telecom'+'.png', dpi = 150, facecolor='w', edgecolor='w', orientation='portrait',)
print('Figura salva em ' + path_fig)
Plot gerado (cor amarela = cancelou e cor azul = não cancelou):
![](https://static.wixstatic.com/media/1b626c_65f169ea658b41efa052a7707824da3f~mv2.png/v1/fill/w_980,h_490,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/1b626c_65f169ea658b41efa052a7707824da3f~mv2.png)
Insights
Existe um maior número de cancelamento de assinaturas associados a:
Cliente solteiro
Sem dependentes
Primeira experiência como cliente - recém chegado
Forma de pagamento tipo boleto
Tipo de contrato - Mensal
Clientes que não possuem serviços adicionais de Suporte Técnico, Proteção a dispositivos e Segurança Online tendem a cancelar mais.
Que tal oferecer benefícios e vantagens para o cliente que optar por:
Adicionar 1 ou mais dependentes
Utilizar cartão de crédito como forma de pagamento
Assinar contrato anual
Além disso, que tal reanalisar e melhorar a experiência do novo cliente? A experiência do novo cliente nos 3 meses iniciais é decisiva para o cancelamento ou continuidade da assinatura.
Podemos plotar os histogramas separadamente:
i=0
for col in df_cost:
if ((col != 'Unnamed: 0') and (col != 'IDCliente')):
print(col)
fig,ax = plt.subplots(figsize= (14,5)) #propriedades dos plots serão compartilhadas em todos os subplots
sns.set_style("whitegrid")
sns.histplot(data=df_cost,x=col,hue='Churn',multiple="stack", shrink=.8)
ax.set_xlabel(col,fontweight='bold',fontsize='large')
ax.set_title('Churn Analysis',fontweight='bold',fontsize='large')
ax.grid(False)
fig.tight_layout()
#salvando
plt.savefig(path_fig + '\Fig'+str(i)+'.png', dpi = 150, facecolor='w', edgecolor='w', orientation='portrait',)
print('Figura salva em ' + path_fig)
time.sleep(3)
plt.close()
i = i+1
![](https://static.wixstatic.com/media/1b626c_1331736e52964313ad6a36f735fa4c4e~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_1331736e52964313ad6a36f735fa4c4e~mv2.png)
![](https://static.wixstatic.com/media/1b626c_bb87874d49ad4ad591159976387844de~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_bb87874d49ad4ad591159976387844de~mv2.png)
![](https://static.wixstatic.com/media/1b626c_219436186edc4fb19b1d58b9c5760e29~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_219436186edc4fb19b1d58b9c5760e29~mv2.png)
![](https://static.wixstatic.com/media/1b626c_9153ab1135c84b25a68491a75c51b155~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_9153ab1135c84b25a68491a75c51b155~mv2.png)
![](https://static.wixstatic.com/media/1b626c_79e709c9ec1d4ea08dc8124c9cfc4907~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_79e709c9ec1d4ea08dc8124c9cfc4907~mv2.png)
![](https://static.wixstatic.com/media/1b626c_daeebba7e84a48d3a0c3e6ccdb7f0157~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_daeebba7e84a48d3a0c3e6ccdb7f0157~mv2.png)
![](https://static.wixstatic.com/media/1b626c_dbfb63049d134db9b874f96d9b72bf1e~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_dbfb63049d134db9b874f96d9b72bf1e~mv2.png)
![](https://static.wixstatic.com/media/1b626c_a33fa310ec464ebfb47e742829aaa73a~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_a33fa310ec464ebfb47e742829aaa73a~mv2.png)
![](https://static.wixstatic.com/media/1b626c_b47682bd01864289b5f6b2a2753b7c41~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_b47682bd01864289b5f6b2a2753b7c41~mv2.png)
![](https://static.wixstatic.com/media/1b626c_a2df9c5b98184263ab8d947b77ec0fd0~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_a2df9c5b98184263ab8d947b77ec0fd0~mv2.png)
![](https://static.wixstatic.com/media/1b626c_2fd3652daf804669bbb59bcbabf5e0e9~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_2fd3652daf804669bbb59bcbabf5e0e9~mv2.png)
![](https://static.wixstatic.com/media/1b626c_e81fb1ab8fc1426cb54fc0291422c201~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_e81fb1ab8fc1426cb54fc0291422c201~mv2.png)
![](https://static.wixstatic.com/media/1b626c_4e0a7b07f0a4474ba68d6857335b3cbd~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_4e0a7b07f0a4474ba68d6857335b3cbd~mv2.png)
![](https://static.wixstatic.com/media/1b626c_bd2865d0293f42eb8fa50f00614085c8~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_bd2865d0293f42eb8fa50f00614085c8~mv2.png)
![](https://static.wixstatic.com/media/1b626c_f4604bcbc1b441439b2a6417439b1268~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_f4604bcbc1b441439b2a6417439b1268~mv2.png)
![](https://static.wixstatic.com/media/1b626c_40ba66a1fc4b44718ff4f8a54e16a19d~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_40ba66a1fc4b44718ff4f8a54e16a19d~mv2.png)
![](https://static.wixstatic.com/media/1b626c_aab4ed1858a5498b81ce05eb0127b616~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_aab4ed1858a5498b81ce05eb0127b616~mv2.png)
![](https://static.wixstatic.com/media/1b626c_74d2ae68fafc42b49f980dcd79b05c9e~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_74d2ae68fafc42b49f980dcd79b05c9e~mv2.png)
![](https://static.wixstatic.com/media/1b626c_2a19fdb4add64776a546268d65fb62c1~mv2.png/v1/fill/w_980,h_350,al_c,q_85,usm_0.66_1.00_0.01,enc_auto/1b626c_2a19fdb4add64776a546268d65fb62c1~mv2.png)
Fim! Curtiu? :)
Kommentare