Criando funções para automatizar análises

Análise de campanhas de marketing com pandas

Jill Rosok

Data Scientist

Por que criar uma função?

# Contar assinaturas por canal de referência e dia
retention_total = marketing.groupby(['date_subscribed',
                                'subscribing_channel'])\
                                ['user_id'].nunique()

retention_subs = marketing[marketing['is_retained'] == True]\
                           .groupby(['date_subscribed',
                                     'subscribing_channel'])\
                            ['user_id'].nunique()

# Calcular a taxa de retenção
daily_retention_rate = retention_subs/retention_total
daily_retention_rate = pd.DataFrame(
    daily_retention_rate.unstack(level=1)
)
Análise de campanhas de marketing com pandas
print(daily_retention_rate)
subscribing_channel  Email  Facebook  House Ads  Instagram      Push
date_subscribed                                                     
2018-01-01            1.00  0.875000   0.687500   0.750000  1.000000
2018-01-02            0.75  1.000000   0.588235   0.625000  1.000000
2018-01-03             NaN  0.800000   0.647059   0.909091  0.666667
2018-01-04            1.00  0.666667   0.466667   0.500000       NaN
2018-01-05            1.00  0.571429   0.500000   0.636364  1.000000

Análise de campanhas de marketing com pandas

Criando uma função de retenção

def retention_rate(dataframe, column_names):
    # Agrupar por column_names e calcular retenção
    retained = dataframe[dataframe['is_retained'] == True]\
                    .groupby(column_names)['user_id'].nunique()

    # Agrupar por column_names e calcular conversão
    converted = dataframe[dataframe['converted'] == True]\
                     .groupby(column_names)['user_id'].nunique()

    retention_rate = retained/converted

    return retention_rate
Análise de campanhas de marketing com pandas

Taxa de retenção por canal

daily_retention = retention_rate(marketing, 
                                 ['date_subscribed', 
                                  'subscribing_channel'])

daily_retention = pd.DataFrame(
    daily_retention.unstack(level=1)
)
print(daily_retention.head()) 
subscribing_channel  Email  Facebook  House Ads  Instagram      Push
date_subscribed                                                     
2018-01-01            1.00  0.875000   0.687500   0.750000  1.000000
2018-01-02            0.75  1.000000   0.588235   0.625000  1.000000
2018-01-03             NaN  0.800000   0.647059   0.909091  0.666667
2018-01-04            1.00  0.666667   0.466667   0.500000       NaN
2018-01-05            1.00  0.571429   0.500000   0.636364  1.000000

Análise de campanhas de marketing com pandas

Plotando retenção diária por canal

daily_retention.plot(date_subscribed, conversion_rate)
plt.title('Daily channel retention rate\n', size = 16)
plt.ylabel('Retention rate (%)', size = 14)
plt.xlabel('Date', size = 14)
plt.show()
Análise de campanhas de marketing com pandas

Gráfico bagunçado de taxa diária de retenção

Análise de campanhas de marketing com pandas

Função de plotagem

def plotting(dataframe):
    for column in dataframe:
        plt.plot(dataframe.index, dataframe[column])
        plt.title('Daily ' + column + ' retention rate\n',
                  size = 16)
        plt.ylabel('Retention rate (%)', size = 14)
        plt.xlabel('Date', size = 14)
        plt.show()


plotting(daily_channel_retention)   
Análise de campanhas de marketing com pandas

Gráfico de retenção diária por Email

Análise de campanhas de marketing com pandas

Vamos praticar!

Análise de campanhas de marketing com pandas

Preparing Video For Download...