<jupyter_start><jupyter_text>DataprepTratamento dos dados<jupyter_code>#Listando todas as colunas
df.columns
#Renomeando todas as colunas para Português
depara = {
          'Senior Citizen':'Idoso', 
          'Partner':'Possui_parceiro', 
          'Dependents':'Possui_dependentes',
          'Tenure':'Meses_relacionamento',
          'Phone Service':'Possui_telefonia',
          'Multiple Lines':'Multipla_linha_tel',
          'Internet Service':'Provedor_internet',
          'Online Security':'Possui_seguranca_online',
          'Online Backup':'Possui_backup_online',
          'Device Protection':'Possui_seguro_dispositivo',
          'Tech Support':'Usou_suporte_tecnico',
          'Streaming TV':'Assinatura_TV',
          'Streaming Movies':'Assinatura_Filmes',
          'Contract':'Tipo_contrato',
          'Paperless Billing':'Fatura_digital',
          'Payment Method':'Meio_pagamento',
          'Monthly Charges':'Preco_mensal',
          'Total Charges':'Preco_total',
          'Churn':'Churn',
          'Churn Reason':'Motivo do Churn',
          'Gender':'Genero',
          'Country':'Pais',
          'State':'Estado',
         }
df.rename(columns = depara, inplace = True)
#Binarizando variáveis que serão utilizadas
def dummy_var(col):
    df.loc[df[col] == 'Yes', [col]] = 1
    df.loc[df[col] == 'No', [col]] = 0

dummy_var('Idoso')
dummy_var('Churn')
#Checando volumetria do dataframe
df.shape
#Troca , para .
df["Preco_mensal"]=df["Preco_mensal"].str.replace(',','.')
df["Preco_total"]=df["Preco_total"].str.replace(',','.')
#Converte para numérico
df['Preco_mensal']=pd.to_numeric(df['Preco_mensal'])
df['Preco_total']=pd.to_numeric(df['Preco_total'], errors='coerce')
#Removendo colunas que ão serão necessárias
df.drop(['LoyaltyID', 'Customer ID'], axis=1, inplace=True)
df.dtypes<jupyter_output><empty_output><jupyter_text>PlotsVisualização dos dados<jupyter_code>#Histograma do tempo de relacionamento
plt.title('Histograma do tempo de relacionamento')
df['Meses_relacionamento'].plot(kind='hist')
#% de Churns
plt.title('% de Churns')
df_plot = df.groupby(['Churn'])['Churn'].count()
df_plot.plot.pie(y='Churn',figsize=(5, 5),autopct='%1.1f%%', startangle=90)
plt.show()
#% de Multiplas linhas
plt.title('% de Multiplas linhas')
df_plot = df.groupby(['Multipla_linha_tel'])['Multipla_linha_tel'].count()
df_plot.plot.pie(y='Multipla_linha_tel',figsize=(5, 5),autopct='%1.1f%%', startangle=90)
plt.show()
#% do método de pagamento
plt.title('% do método de pagamento')
df_plot = df.groupby(['Meio_pagamento'])['Meio_pagamento'].count()
df_plot.plot.pie(y='Meio_pagamento',figsize=(5, 5),autopct='%1.1f%%', startangle=90)
plt.show()
#% dos pagamentos por fatura digital
plt.title('% dos pagamentos por fatura digital')
df_plot = df.groupby(['Fatura_digital'])['Fatura_digital'].count()
df_plot.plot.pie(y='Fatura_digital',figsize=(5, 5),autopct='%1.1f%%', startangle=90)
plt.show()
#% de Churn por Genero
plt.title('% de Churn por Genero')
df_plot = df.groupby(['Genero','Churn'])['Genero'].count()
df_plot.plot.pie(y='Genero',figsize=(5, 5),autopct='%1.1f%%', startangle=90)
plt.show()<jupyter_output><empty_output><jupyter_text>Utilizando Kaplan-MeierEstimando a probabilidade de sobrevivência de relacionamento ao longo do tempo<jupyter_code>tempo = df['Meses_relacionamento']
target = df['Churn']

kmf = KaplanMeierFitter() ## instantiate the class to create an object
kmf.fit(tempo, target,label='Estimador de Kaplan-Meier (propa. de sobrevivência de relac.)')

ax = kmf.plot(linestyle="--",color='red')
ax.set_xlabel("tempo (em meses)")
ax.set_ylabel("% Probabilidade de sobrevivência")
ax.set_title('Curva de sobrevivência utilizando Kaplan-Meier')<jupyter_output>C:\Users\gabri\anaconda3\lib\site-packages\lifelines\utils\__init__.py:1181: UserWarning: Attempting to convert an unexpected datatype 'object' to float. Suggestion: 1) use `lifelines.utils.datetimes_to_durations` to do conversions or 2) manually convert to floats/booleans.
  warnings.warn(warning_text, UserWarning)<jupyter_text>Utilizando Regressão de CoxPara identificação dos principais ofensores para o relacionamento<jupyter_code>df_= df.loc[:,['Meses_relacionamento','Churn','Genero','Possui_telefonia',
               'Assinatura_TV','Idoso','Possui_parceiro',
               'Possui_dependentes','Preco_mensal', 'Meio_pagamento']]

df_binario = pd.get_dummies(df_, drop_first=True)
df_binario.head()
cphf = CoxPHFitter()
cphf.fit(df_binario, duration_col='Meses_relacionamento', event_col='Churn_1', show_progress=True)
cphf.print_summary()
ax.set_title('Coeficientes e intervalos de confiança')
cphf.plot()<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.15729613733905579, 'fraction_numerical': 0.008798283261802575, 'mean_word_length': 5.774709302325581, 'pattern_counts': {'":': 0, '<': 16, '<?xml version=': 0, '>': 16, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '4', 'dir': 'jupyter-structured-clean-dedup', 'id': '578673', 'license': 'Apache-2.0', 'n_tokens_mistral': 1801, 'n_tokens_neox': 1694, 'n_words': 287, 'path': 'Analysis.ipynb', 'repo_name': 'gabriel-os/Analise_sobrevivencia', 'size': '4660'}