Functies bouwen om analyse te automatiseren

Marketingcampagnes analyseren met pandas

Jill Rosok

Data Scientist

Waarom een functie bouwen?

# Count the subs by referring channel and day
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()

# Calculate the retention rate
daily_retention_rate = retention_subs/retention_total
daily_retention_rate = pd.DataFrame(
    daily_retention_rate.unstack(level=1)
)
Marketingcampagnes analyseren met 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

Marketingcampagnes analyseren met pandas

Een retentiefunctie bouwen

def retention_rate(dataframe, column_names):
    # Group by column_names and calculate retention
    retained = dataframe[dataframe['is_retained'] == True]\
                    .groupby(column_names)['user_id'].nunique()

    # Group by column_names and calculate conversion
    converted = dataframe[dataframe['converted'] == True]\
                     .groupby(column_names)['user_id'].nunique()

    retention_rate = retained/converted

    return retention_rate
Marketingcampagnes analyseren met pandas

Retentie per kanaal

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

Marketingcampagnes analyseren met pandas

Dagelijkse retentie per kanaal plotten

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()
Marketingcampagnes analyseren met pandas

grafiek dagelijkse retentie per kanaal

Marketingcampagnes analyseren met pandas

Plotfunctie

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)   
Marketingcampagnes analyseren met pandas

email-retentie per dag

Marketingcampagnes analyseren met pandas

Laten we oefenen!

Marketingcampagnes analyseren met pandas

Preparing Video For Download...