Усунення невідповідностей

Аналіз маркетингових кампаній у pandas

Jill Rosok

Data Scientist

Оцінювання впливу

# Розрахуйте коефіцієнт конверсії до появи помилки
# Баг з'явився приблизно 2018-01-11
house_ads_no_bug = house_ads[house_ads['date_served'] < '2018-01-11']
lang_conv = conversion_rate(house_ads_no_bug, 
                           ['language_displayed']) 
Аналіз маркетингових кампаній у pandas

Оцінювання впливу

# Індексувати конверсію інших мов відносно англійської
spanish_index = lang_conv['Spanish']/lang_conv['English']
arabic_index = lang_conv['Arabic']/lang_conv['English']
german_index = lang_conv['German']/lang_conv['English']
Аналіз маркетингових кампаній у pandas

Тлумачення індексів

print("Spanish index:", spanish_index)
print("Arabic index:", arabic_index)
print("German index:", german_index)
Spanish index: 1.6819248826291078
Arabic index: 5.045774647887324
German index: 4.485133020344288
Аналіз маркетингових кампаній у pandas

Щоденна конверсія

# Створіть датафрейм фактичної конверсії
language_conversion = house_ads.groupby(['date_served', \
                                         'language_preferred'])\
                                  .agg({'user_id':'nunique',\
                                        'converted':'sum'})
Аналіз маркетингових кампаній у pandas

Щоденна конверсія

expected_conversion = pd.DataFrame(
    language_conversion.unstack(level=1)
)
                   user_id                        converted                       
language_preferred  Arabic English German Spanish    Arabic English German Spanish
date_served                                                                       
2018-01-01             2.0   171.0    5.0    11.0         2      13      1       0
2018-01-02             3.0   200.0    5.0    10.0         0      14      3       0
2018-01-03             2.0   179.0    3.0     8.0         0      15      1       1
2018-01-04             2.0   149.0    2.0    14.0         0      12      0       3
2018-01-05             NaN   143.0    1.0    14.0       NaN      17  False       3
...
...
Аналіз маркетингових кампаній у pandas

Створення стовпця коефіцієнта конверсії для англійської

# Створіть стовпець коефіцієнта конверсії англійською для проблемного періоду
language_conversion['actual_english_conversions'] = \
                         language_conversion.loc\
                         ['2018-01-11':'2018-01-31']\
                         [('converted','English')]

language_conversion['actual_english_rate'] = \
     language_conversion.loc['2018-01-11':'2018-01-31']\
     [('converted','English')]/language_conversion.loc\
     ['2018-01-11':'2018-01-31'][('user_id','English')]
Аналіз маркетингових кампаній у pandas

Розрахунок щоденного очікуваного коефіцієнта конверсії

# Створіть очікувані коефіцієнти конверсії для кожної мови
language_conversion['expected_spanish_rate'] = \
    language_conversion['actual_english_rate']*spanish_index

language_conversion['expected_arabic_rate'] = \
    language_conversion['actual_english_rate']*arabic_index

language_conversion['expected_german_rate'] = \ 
    language_conversion['actual_english_rate']*german_index

Аналіз маркетингових кампаній у pandas

Розрахунок щоденних очікуваних конверсій

# Помножте загальну кількість показів на очікуваний коефіцієнт конверсії
language_conversion['expected_spanish_conversions'] = \
    language_conversion['expected_spanish_rate']/100
    *language_conversion[('user_id','Spanish')]

language_conversion['expected_arabic_conversions'] = \
    language_conversion['expected_arabic_rate']/100
    *language_conversion[('user_id','Arabic')]

language_conversion['expected_german_conversions'] = \
    language_conversion['expected_german_rate']/100
    *language_conversion[('user_id','German')]
Аналіз маркетингових кампаній у pandas

Визначення кількості втрачених підписників

bug_period = language_conversion.loc['2018-01-11':'2018-01-31']

# Підсумуйте очікувані підписки для кожної мови
expected_subs = bug_period['expected_spanish_conv_rate'].agg('sum') + \
                bug_period['expected_arabic_conv_rate'].agg('sum') + \
                bug_period['expected_german_conv_rate'].agg('sum')

# Обчисліть фактичну кількість підписок
actual_subs = bug_period[('converted','Spanish')].sum() + \
              bug_period[('converted','Arabic')].agg('sum') + \
              bug_period[('converted','German')].agg('sum')

lost_subs = expected_subs - actual_subs
print(lost_subs)
32.144143192488265
Аналіз маркетингових кампаній у pandas

Давайте потренуємось!

Аналіз маркетингових кампаній у pandas

Preparing Video For Download...