diff --git "a/product_analytics_\320\274\320\265\321\202\321\200\320\270\320\272\320\270_\320\277\321\200\320\276\320\264\321\203\320\272\321\202\320\260.ipynb" "b/product_analytics_\320\274\320\265\321\202\321\200\320\270\320\272\320\270_\320\277\321\200\320\276\320\264\321\203\320\272\321\202\320\260.ipynb"
new file mode 100644
index 0000000..4c5dd61
--- /dev/null
+++ "b/product_analytics_\320\274\320\265\321\202\321\200\320\270\320\272\320\270_\320\277\321\200\320\276\320\264\321\203\320\272\321\202\320\260.ipynb"
@@ -0,0 +1,1228 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "# Продуктовая аналитика: Метрики продукта\n",
+ "\n",
+ "Обсудим, что такое метрики и зачем они нужны, что творится на рынке в отношении этих метрик и какие существуют особенности расчёта метрик в различных инструментах. Также поговорим про физический смысл и интерпретацию метрик и потренируемся считать метрики по сырым данным."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Проект: Доставка продуктов\n",
+ "\n",
+ "Вы работаете продуктовым аналитиком в компании по доставке продуктов на дом. Сервис доступен как в приложении на ios, так и на android. Вы настроили фронтовую аналитику в AppMetrica, и в конце квартала маркетинг-менеджер попросил вас проанализировать поведение пользователей, а также оценить эффективность каналов их привлечения. \n",
+ "\n",
+ "Вы выгрузили данные из AppMetrica за период с 1 января по 31 марта 2020, только по пользователям, зарегистрированным позднее 1 января 2020.\n",
+ "\n",
+ "Описание данных \n",
+ "\n",
+ "- date – дата совершения события\n",
+ "- event - событие\n",
+ "\n",
+ " - app_install – установка приложения\n",
+ " - app_start – открыть приложения\n",
+ " - register – зарегистрироваться \n",
+ " - search – перейти на страницу поиска товаров (каталог)\n",
+ " - open_item – открыть товар\n",
+ " - choose_item – отправить товар в корзину\n",
+ " - tap_basket – перейти в корзину\n",
+ " - purchase – подтверждение покупки\n",
+ " \n",
+ "- gender – пол пользователя\n",
+ "- os_name – платформа пользователя\n",
+ "- city – город пользователя\n",
+ "- device_id – идентификатор устройства пользователя\n",
+ "- urm_source – канал, с которого пришел пользователь\n",
+ "\n",
+ " - yandex-direct – Яндекс директ\n",
+ " - google_ads – реклама в Google\n",
+ " - vk_ads – реклама в ВК\n",
+ " - instagram_ads – реклама в instagram\n",
+ " - facebook_ads – реклама в facebook\n",
+ " - referal – акция «приведи друга»\n",
+ " - Если стоит ‘-’, то канал не определен или это скачивание приложения напрямую или посещение не с рекламы \n",
+ " \n",
+ "- purchase_sum – стоимость покупки (при совершении события ‘purchase’)\n",
+ "\n",
+ "\n",
+ "Обратите внимание на следующее:\n",
+ "\n",
+ "- В выгрузке только уникальные действия пользователей за каждый день \n",
+ "- Можно миновать стадию установки приложения, если оно было установлено ранее\n",
+ "- Можно миновать стадию регистрации, если пользователь был уже залогинен на момент сессии. Однако незарегистрированные пользователи не могут оформить покупку. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns\n",
+ "import numpy as np\n",
+ "\n",
+ "%matplotlib inline"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 81,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "kc = pd.read_csv('/mnt/HC_Volume_18315164/home-jupyter/jupyter-a-eremina/KC_case_data.csv')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 82,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " date | \n",
+ " event | \n",
+ " purchase_sum | \n",
+ " os_name | \n",
+ " device_id | \n",
+ " gender | \n",
+ " city | \n",
+ " utm_source | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2020-01-01 | \n",
+ " app_start | \n",
+ " NaN | \n",
+ " android | \n",
+ " 669460 | \n",
+ " female | \n",
+ " Moscow | \n",
+ " - | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2020-01-01 | \n",
+ " app_start | \n",
+ " NaN | \n",
+ " ios | \n",
+ " 833621 | \n",
+ " male | \n",
+ " Moscow | \n",
+ " vk_ads | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2020-01-01 | \n",
+ " app_start | \n",
+ " NaN | \n",
+ " android | \n",
+ " 1579237 | \n",
+ " male | \n",
+ " Saint-Petersburg | \n",
+ " referal | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2020-01-01 | \n",
+ " app_start | \n",
+ " NaN | \n",
+ " android | \n",
+ " 1737182 | \n",
+ " female | \n",
+ " Moscow | \n",
+ " facebook_ads | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2020-01-01 | \n",
+ " app_start | \n",
+ " NaN | \n",
+ " ios | \n",
+ " 4029024 | \n",
+ " female | \n",
+ " Moscow | \n",
+ " facebook_ads | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " date event purchase_sum os_name device_id gender \\\n",
+ "0 2020-01-01 app_start NaN android 669460 female \n",
+ "1 2020-01-01 app_start NaN ios 833621 male \n",
+ "2 2020-01-01 app_start NaN android 1579237 male \n",
+ "3 2020-01-01 app_start NaN android 1737182 female \n",
+ "4 2020-01-01 app_start NaN ios 4029024 female \n",
+ "\n",
+ " city utm_source \n",
+ "0 Moscow - \n",
+ "1 Moscow vk_ads \n",
+ "2 Saint-Petersburg referal \n",
+ "3 Moscow facebook_ads \n",
+ "4 Moscow facebook_ads "
+ ]
+ },
+ "execution_count": 82,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "kc.head()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Какие две метрики, по сравнению с остальными, поможет ответить на вопрос «Насколько хорошо маркетологи справляются со своей задачей привлечения новых пользователей»?\n",
+ "\n",
+ "\n",
+ "- DAU\n",
+ "- **CAC**\n",
+ "- Количество сессий\n",
+ "- **Количество инсталлов**\n",
+ "- Retention 7-го дня\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Какая не денежная метрика в динамике лучше всего отражает нравится ли продукт пользователям?\n",
+ "\n",
+ "- Выручка\n",
+ "- CR из установки в открытие приложения\n",
+ "- CR из открытия приложения в покупку\n",
+ "- MAU\n",
+ "- **CR в повторную покупку в течение месяца**"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "MAU февраля:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "kc['date'] = pd.to_datetime(kc.date)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "75032"
+ ]
+ },
+ "execution_count": 84,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "kc.query('date.dt.month == 2').device_id.nunique()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Количество установок в январе:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "80297"
+ ]
+ },
+ "execution_count": 85,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "kc.query(\"date.dt.month == 1 and event == 'app_install'\").device_id.count()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Проанализируйте на каком этапе воронки отваливается бОльшая часть клиентов. Посмотрите отдельно сценарии для зарегистрированных и для незарегистрированных пользователей. На каком шаге отваливается больше всего зарегистрированных пользователей?\n",
+ "\n",
+ "В ответ впишите один из шагов, конверсия из которого (в следующий шаг) самая низкая"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "first_reg = kc.query('event == \"register\"').sort_values('date').drop_duplicates('device_id')\n",
+ "kc['first_reg'] = kc['device_id'].map(first_reg.set_index('device_id')['date'])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "already_reg = kc.query('first_reg < date')"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 88,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "event\n",
+ "app_start 40991\n",
+ "choose_item 37926\n",
+ "purchase 24880\n",
+ "search 40482\n",
+ "tap_basket 34517\n",
+ "Name: device_id, dtype: int64"
+ ]
+ },
+ "execution_count": 88,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "already_reg.groupby('event')['device_id'].nunique()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9875826400917275"
+ ]
+ },
+ "execution_count": 89,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# конверсия из регистрации в поиск\n",
+ "40482/40991"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 90,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9252274889609914"
+ ]
+ },
+ "execution_count": 90,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# конверсия из поиска в добавление товара\n",
+ "37926/40991"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 91,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9101144333702473"
+ ]
+ },
+ "execution_count": 91,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# конверсия из добавления товара в переход в корзину\n",
+ "34517/37926"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 92,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.7208042413883015"
+ ]
+ },
+ "execution_count": 92,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# конверсия из перехода в корзину в покупку\n",
+ "24880/34517"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Переход в корзину - минимум"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Пользователи, пришедшие с каких каналов, показали самую низкую конверсию в первую покупку?\n",
+ "\n",
+ "В ответ впишите один из каналов в таком формате: «Яндекс», «Гугл», «ВК», «Фейсбук», «Инстаграм», «Реферальная программа».\n",
+ "\n",
+ "Подсказка: \n",
+ "\n",
+ "- CR = кол-во юзеров, впервые совершивших покупку/кол-во юзеров, впервые открывших приложение "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 97,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " utm_source | \n",
+ " count_purchase | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " - | \n",
+ " 16598 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " facebook_ads | \n",
+ " 9017 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " google_ads | \n",
+ " 11339 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " instagram_ads | \n",
+ " 10762 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " referal | \n",
+ " 6362 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " vk_ads | \n",
+ " 12364 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " yandex-direct | \n",
+ " 12028 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " utm_source count_purchase\n",
+ "0 - 16598\n",
+ "1 facebook_ads 9017\n",
+ "2 google_ads 11339\n",
+ "3 instagram_ads 10762\n",
+ "4 referal 6362\n",
+ "5 vk_ads 12364\n",
+ "6 yandex-direct 12028"
+ ]
+ },
+ "execution_count": 97,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = kc.query('event == \"purchase\"').groupby('utm_source', as_index = False) \\\n",
+ " .agg({'device_id' : 'nunique'}).rename(columns={'device_id' : 'count_purchase'})\n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 98,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " utm_source | \n",
+ " count_start | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " - | \n",
+ " 52268 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " facebook_ads | \n",
+ " 25957 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " google_ads | \n",
+ " 38092 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " instagram_ads | \n",
+ " 31045 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " referal | \n",
+ " 15924 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " vk_ads | \n",
+ " 34079 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " yandex-direct | \n",
+ " 40707 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " utm_source count_start\n",
+ "0 - 52268\n",
+ "1 facebook_ads 25957\n",
+ "2 google_ads 38092\n",
+ "3 instagram_ads 31045\n",
+ "4 referal 15924\n",
+ "5 vk_ads 34079\n",
+ "6 yandex-direct 40707"
+ ]
+ },
+ "execution_count": 98,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df1 = kc.query('event == \"app_start\"').groupby('utm_source', as_index = False) \\\n",
+ " .agg({'device_id' : 'nunique'}).rename(columns={'device_id' : 'count_start'})\n",
+ "df1 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 99,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " utm_source | \n",
+ " count_purchase | \n",
+ " count_start | \n",
+ " CR | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 4 | \n",
+ " referal | \n",
+ " 6362 | \n",
+ " 15924 | \n",
+ " 0.399523 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " vk_ads | \n",
+ " 12364 | \n",
+ " 34079 | \n",
+ " 0.362804 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " facebook_ads | \n",
+ " 9017 | \n",
+ " 25957 | \n",
+ " 0.347382 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " instagram_ads | \n",
+ " 10762 | \n",
+ " 31045 | \n",
+ " 0.346658 | \n",
+ "
\n",
+ " \n",
+ " 0 | \n",
+ " - | \n",
+ " 16598 | \n",
+ " 52268 | \n",
+ " 0.317556 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " google_ads | \n",
+ " 11339 | \n",
+ " 38092 | \n",
+ " 0.297674 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " yandex-direct | \n",
+ " 12028 | \n",
+ " 40707 | \n",
+ " 0.295477 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " utm_source count_purchase count_start CR\n",
+ "4 referal 6362 15924 0.399523\n",
+ "5 vk_ads 12364 34079 0.362804\n",
+ "1 facebook_ads 9017 25957 0.347382\n",
+ "3 instagram_ads 10762 31045 0.346658\n",
+ "0 - 16598 52268 0.317556\n",
+ "2 google_ads 11339 38092 0.297674\n",
+ "6 yandex-direct 12028 40707 0.295477"
+ ]
+ },
+ "execution_count": 99,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df = df.merge(df1, on = 'utm_source')\n",
+ "df['CR'] = df.count_purchase / df.count_start\n",
+ "df = df.sort_values('CR', ascending=False)\n",
+ "df"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "У Яндкса самая низкая конверсия в покупку"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Пользователи, пришедшие с какого канала, имеют медианный первый чек выше? (учитываются только первые покупки пользователей)\n",
+ "\n",
+ "В ответ впишите один из каналов в таком формате: «Яндекс», «Гугл», «ВК», «Фейсбук», «Инстаграм», «Реферальная программа».\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 100,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " utm_source | \n",
+ " device_id | \n",
+ " purchase_sum | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " - | \n",
+ " 4046 | \n",
+ " 429.5 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " - | \n",
+ " 4120 | \n",
+ " 582.5 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " - | \n",
+ " 4202 | \n",
+ " 552.0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " - | \n",
+ " 4214 | \n",
+ " 231.5 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " - | \n",
+ " 4234 | \n",
+ " 583.5 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 78465 | \n",
+ " yandex-direct | \n",
+ " 35245401 | \n",
+ " 202.5 | \n",
+ "
\n",
+ " \n",
+ " 78466 | \n",
+ " yandex-direct | \n",
+ " 35258588 | \n",
+ " 157.0 | \n",
+ "
\n",
+ " \n",
+ " 78467 | \n",
+ " yandex-direct | \n",
+ " 35266881 | \n",
+ " 80.0 | \n",
+ "
\n",
+ " \n",
+ " 78468 | \n",
+ " yandex-direct | \n",
+ " 35277913 | \n",
+ " 81.0 | \n",
+ "
\n",
+ " \n",
+ " 78469 | \n",
+ " yandex-direct | \n",
+ " 35308278 | \n",
+ " 658.5 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
78470 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " utm_source device_id purchase_sum\n",
+ "0 - 4046 429.5\n",
+ "1 - 4120 582.5\n",
+ "2 - 4202 552.0\n",
+ "3 - 4214 231.5\n",
+ "4 - 4234 583.5\n",
+ "... ... ... ...\n",
+ "78465 yandex-direct 35245401 202.5\n",
+ "78466 yandex-direct 35258588 157.0\n",
+ "78467 yandex-direct 35266881 80.0\n",
+ "78468 yandex-direct 35277913 81.0\n",
+ "78469 yandex-direct 35308278 658.5\n",
+ "\n",
+ "[78470 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 100,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "check = kc.query('event == \"purchase\"').groupby(['utm_source', 'device_id'],as_index=False).agg({'purchase_sum' : 'first'})\n",
+ "check"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 101,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " utm_source | \n",
+ " purchase_sum | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " - | \n",
+ " 398.5 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " referal | \n",
+ " 395.0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " instagram_ads | \n",
+ " 393.5 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " vk_ads | \n",
+ " 393.0 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " yandex-direct | \n",
+ " 392.5 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " facebook_ads | \n",
+ " 390.5 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " google_ads | \n",
+ " 390.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " utm_source purchase_sum\n",
+ "0 - 398.5\n",
+ "4 referal 395.0\n",
+ "3 instagram_ads 393.5\n",
+ "5 vk_ads 393.0\n",
+ "6 yandex-direct 392.5\n",
+ "1 facebook_ads 390.5\n",
+ "2 google_ads 390.0"
+ ]
+ },
+ "execution_count": 101,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "check.groupby('utm_source',as_index=False).agg({'purchase_sum' : 'median'}).sort_values('purchase_sum', ascending = False)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Медианный первый чек выше у пользователей с реферальной программы"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Данные по затратам на рекламу:\n",
+ "\n",
+ "Яндекс – 10 491 707 руб.\n",
+ "\n",
+ "Гугл – 10 534 878 руб.\n",
+ "\n",
+ "Фейсбук – 8 590 498 руб.\n",
+ "\n",
+ "Инстаграм – 8 561626 руб.\n",
+ "\n",
+ "ВК – 9 553 531руб.\n",
+ "\n",
+ "Расходы на реферальную программу: если пользователь приведет друга и последний совершит первую покупку, то оба получат по 100 рублей.\n",
+ "\n",
+ "Какой платный канал привлечения (среди рекламных) имеет самый высокий ROMI? \n",
+ "\n",
+ "В ответ впишите один из каналов в таком формате: «Яндекс», «Гугл», «ВК», «Фейсбук», «Инстаграм»."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### ROMI = (вал.прибыль - расходы на рекламу)/расходы на рекламу"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 102,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " utm_source | \n",
+ " purchase_sum | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " - | \n",
+ " 21449749.5 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " facebook_ads | \n",
+ " 12249901.0 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " google_ads | \n",
+ " 12868276.0 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " instagram_ads | \n",
+ " 14546969.0 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " referal | \n",
+ " 8837044.5 | \n",
+ "
\n",
+ " \n",
+ " 5 | \n",
+ " vk_ads | \n",
+ " 16389652.5 | \n",
+ "
\n",
+ " \n",
+ " 6 | \n",
+ " yandex-direct | \n",
+ " 13915368.0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " utm_source purchase_sum\n",
+ "0 - 21449749.5\n",
+ "1 facebook_ads 12249901.0\n",
+ "2 google_ads 12868276.0\n",
+ "3 instagram_ads 14546969.0\n",
+ "4 referal 8837044.5\n",
+ "5 vk_ads 16389652.5\n",
+ "6 yandex-direct 13915368.0"
+ ]
+ },
+ "execution_count": 102,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "kc.query('event == \"purchase\"').groupby('utm_source', as_index=False).agg({'purchase_sum' : 'sum'})"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 103,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.4259826380263403"
+ ]
+ },
+ "execution_count": 103,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# facebook_ads\n",
+ "(12249901.0 - 8590498) / 8590498"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 104,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.22149264566708793"
+ ]
+ },
+ "execution_count": 104,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# google_ads\n",
+ "(12868276.0 - 10534878) / 10534878 "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 105,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.6990895187432854"
+ ]
+ },
+ "execution_count": 105,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# instagram_ads\n",
+ "(14546969.0 - 8561626) / 8561626"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 106,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.7155596710786828"
+ ]
+ },
+ "execution_count": 106,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# vk_ads\n",
+ "(16389652.5 - 9553531) / 9553531"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "ВК имеет самый высокий ROMI"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "Python 3",
+ "language": "python",
+ "name": "python3"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.7.3"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}