Skip to content
Marketing Retention analysis
DataFrameavailable as
marketing
variable
SELECT * FROM 'marketing_new.csv';
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
marketing.head()
Create functions
def received_personalisation(dataframe, columns):
all_cust = dataframe.groupby(columns)['user_id'].nunique()
# Personalised
personalised = dataframe[dataframe['variant'] == 'personalization']['user_id'].nunique()
personalised_rate = personalised / all_cust
personalised_rate.fillna(0)
return personalised_rate
def is_wrong_lang_rate(dataframe, columns):
all_cust = dataframe.groupby(columns)['user_id'].nunique()
# Wrong language
wrong_lang = dataframe[dataframe['is_correct_lang'] == 'No'].groupby(columns)['user_id'].nunique()
# Perform calc
return wrong_lang / all_cust
is_wrong_lang_rate(marketing, 'language_preferred').reset_index()
# Here I'm creating a function to automate my workflow
def conversion_rate(dataframe, columns):
# converted customers
subscribers = dataframe[dataframe['converted'] == True].groupby(columns)\
['user_id'].nunique()
# all customers
all_cust = dataframe.groupby(columns)['user_id'].nunique()
# return converted / by all
conversion_rate = subscribers / all_cust
conversion_rate = conversion_rate.fillna(0)
return round(conversion_rate, 2)
# Fixing the sort_values call
conversion_rate(marketing, 'language_displayed').sort_values(ascending=False).reset_index()
# Here I'm creating a function to automate my workflow
def retention_rate(dataframe, columns):
# converted customers
converted = dataframe[dataframe['converted'] == True].groupby(columns)['user_id'].nunique()
# retained customers
retained = dataframe[dataframe['is_retained'] == True].groupby(columns)['user_id'].nunique()
# return converted / by all
retention_rate = retained / converted
return round(retention_rate, 2)
# Isolate english speakers
english_speakers = marketing[marketing['language_displayed'] == 'English']
# Calculate the total number of English speaking users
total = english_speakers['user_id'].nunique()
# Calculate the number of English speakers who converted
subscribers = english_speakers[english_speakers['converted'] == True]['user_id'].nunique()
# Calculate conversion rate
conversion_rate_eng = subscribers/total
print('English speaker conversion rate:', round(conversion_rate_eng*100,2), '%')
conversion_rate(english_speakers, 'subscribing_channel')
facebook_customers = marketing[marketing['subscribing_channel'] == 'Facebook']
facebook_customers
Conversion Rates
# This code creates the data for English speakers historical view
conversion_rate(english_speakers, ['date_served']).reset_index()
On the 16th and 17th of January, 2018 the conversion rate for English spiked. Let's find out why