1351 lines
137 KiB
Plaintext
1351 lines
137 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f8c7a62b",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Библиотеки"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 203,
|
||
"id": "c6bb3ab6",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import seaborn as sns\n",
|
||
"from tqdm import tqdm\n",
|
||
"from pprint import pprint"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bae2a8b8",
|
||
"metadata": {},
|
||
"source": [
|
||
"# TODO\n",
|
||
"\n",
|
||
"1. [ ] Подписи к графикам\n",
|
||
"2. [ ] Переделать все под `pd.DataFrame` (?)\n",
|
||
"3. [ ] Поправить заголовки"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "d7cfc02e",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Данные"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "67c32cdd",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Payments"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 204,
|
||
"id": "038a62d8",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>payment_date</th>\n",
|
||
" <th>Payment_types</th>\n",
|
||
" <th>real_cost</th>\n",
|
||
" <th>account_id</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>2021-01-01 00:00:56</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>9.650000</td>\n",
|
||
" <td>2907221</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>2021-01-01 00:01:48</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>0.955872</td>\n",
|
||
" <td>3228373</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>2021-01-01 00:03:42</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>3.026930</td>\n",
|
||
" <td>318552</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>2021-01-01 00:04:27</td>\n",
|
||
" <td>Payment_system_2</td>\n",
|
||
" <td>99.990000</td>\n",
|
||
" <td>3832817</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>2021-01-01 00:06:41</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>1.432550</td>\n",
|
||
" <td>7229767</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" payment_date Payment_types real_cost account_id\n",
|
||
"0 2021-01-01 00:00:56 Payment_system_5 9.650000 2907221\n",
|
||
"1 2021-01-01 00:01:48 Payment_system_5 0.955872 3228373\n",
|
||
"2 2021-01-01 00:03:42 Payment_system_5 3.026930 318552\n",
|
||
"3 2021-01-01 00:04:27 Payment_system_2 99.990000 3832817\n",
|
||
"4 2021-01-01 00:06:41 Payment_system_5 1.432550 7229767"
|
||
]
|
||
},
|
||
"execution_count": 204,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"payments = pd.read_csv(\"data/payments.csv\")\n",
|
||
"payments.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "68048c5a",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Persents"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 205,
|
||
"id": "a4b72e40",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Payment_types</th>\n",
|
||
" <th>Share, %</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Payment_system_1</td>\n",
|
||
" <td>20.7</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Payment_system_2</td>\n",
|
||
" <td>15.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Payment_system_3</td>\n",
|
||
" <td>58.5</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Payment_system_4</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>24.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Payment_types Share, %\n",
|
||
"0 Payment_system_1 20.7\n",
|
||
"1 Payment_system_2 15.0\n",
|
||
"2 Payment_system_3 58.5\n",
|
||
"3 Payment_system_4 0.0\n",
|
||
"4 Payment_system_5 24.0"
|
||
]
|
||
},
|
||
"execution_count": 205,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"persents = pd.read_csv(\"data/persents.csv\", index_col=0)\n",
|
||
"persents.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "9a2ba6d3",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Registrations"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 206,
|
||
"id": "a0f238ba",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>account_id</th>\n",
|
||
" <th>created_date</th>\n",
|
||
" <th>campaign</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>3842380.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>BRA_MS1_install</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>3842381.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>3842382.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>3842383.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>3842384.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>BRA_MS1_install</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" account_id created_date campaign\n",
|
||
"0 3842380.0 2021-01-01 BRA_MS1_install\n",
|
||
"1 3842381.0 2021-01-01 NaN\n",
|
||
"2 3842382.0 2021-01-01 NaN\n",
|
||
"3 3842383.0 2021-01-01 NaN\n",
|
||
"4 3842384.0 2021-01-01 BRA_MS1_install"
|
||
]
|
||
},
|
||
"execution_count": 206,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"registrations = pd.read_csv(\"data/registrations.csv\", index_col=0)#.dropna()\n",
|
||
"registrations.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f52e9466",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Budget"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 207,
|
||
"id": "bf031a83",
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>media_source</th>\n",
|
||
" <th>Campaign_type</th>\n",
|
||
" <th>Target</th>\n",
|
||
" <th>Plan, USD</th>\n",
|
||
" <th>Installs</th>\n",
|
||
" <th>Spend, USD</th>\n",
|
||
" <th>Deviation, USD</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Media_source_1</td>\n",
|
||
" <td>install</td>\n",
|
||
" <td>Brazil</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>10460</td>\n",
|
||
" <td>99.12</td>\n",
|
||
" <td>0.88</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Media_source_1</td>\n",
|
||
" <td>purchase</td>\n",
|
||
" <td>Brazil</td>\n",
|
||
" <td>400</td>\n",
|
||
" <td>1081</td>\n",
|
||
" <td>398.67</td>\n",
|
||
" <td>1.33</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Media_source_1</td>\n",
|
||
" <td>install</td>\n",
|
||
" <td>Russia</td>\n",
|
||
" <td>200</td>\n",
|
||
" <td>11894</td>\n",
|
||
" <td>246.30</td>\n",
|
||
" <td>-46.30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Media_source_1</td>\n",
|
||
" <td>purchase</td>\n",
|
||
" <td>Russia</td>\n",
|
||
" <td>500</td>\n",
|
||
" <td>1441</td>\n",
|
||
" <td>616.77</td>\n",
|
||
" <td>-116.77</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Media_source_1</td>\n",
|
||
" <td>install</td>\n",
|
||
" <td>Ukrane</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>6424</td>\n",
|
||
" <td>99.43</td>\n",
|
||
" <td>0.57</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>5</th>\n",
|
||
" <td>Media_source_1</td>\n",
|
||
" <td>purchase</td>\n",
|
||
" <td>Ukrane</td>\n",
|
||
" <td>500</td>\n",
|
||
" <td>242</td>\n",
|
||
" <td>348.13</td>\n",
|
||
" <td>151.87</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>6</th>\n",
|
||
" <td>Media_source_2</td>\n",
|
||
" <td>install</td>\n",
|
||
" <td>Brazil</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>152</td>\n",
|
||
" <td>81.15</td>\n",
|
||
" <td>18.85</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>7</th>\n",
|
||
" <td>Media_source_2</td>\n",
|
||
" <td>install</td>\n",
|
||
" <td>English_speaking</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>371</td>\n",
|
||
" <td>99.95</td>\n",
|
||
" <td>0.05</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>8</th>\n",
|
||
" <td>Total</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>2000</td>\n",
|
||
" <td>32065</td>\n",
|
||
" <td>1989.52</td>\n",
|
||
" <td>10.48</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" media_source Campaign_type Target Plan, USD Installs \\\n",
|
||
"0 Media_source_1 install Brazil 100 10460 \n",
|
||
"1 Media_source_1 purchase Brazil 400 1081 \n",
|
||
"2 Media_source_1 install Russia 200 11894 \n",
|
||
"3 Media_source_1 purchase Russia 500 1441 \n",
|
||
"4 Media_source_1 install Ukrane 100 6424 \n",
|
||
"5 Media_source_1 purchase Ukrane 500 242 \n",
|
||
"6 Media_source_2 install Brazil 100 152 \n",
|
||
"7 Media_source_2 install English_speaking 100 371 \n",
|
||
"8 Total NaN NaN 2000 32065 \n",
|
||
"\n",
|
||
" Spend, USD Deviation, USD \n",
|
||
"0 99.12 0.88 \n",
|
||
"1 398.67 1.33 \n",
|
||
"2 246.30 -46.30 \n",
|
||
"3 616.77 -116.77 \n",
|
||
"4 99.43 0.57 \n",
|
||
"5 348.13 151.87 \n",
|
||
"6 81.15 18.85 \n",
|
||
"7 99.95 0.05 \n",
|
||
"8 1989.52 10.48 "
|
||
]
|
||
},
|
||
"execution_count": 207,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"budget = pd.read_excel(\"data/Рекламный бюджет январь 2021.xlsx\")\n",
|
||
"budget.loc[0:5, 'media_source'] = 'Media_source_1'\n",
|
||
"budget.loc[6:7, 'media_source'] = 'Media_source_2'\n",
|
||
"for l in budget.iloc:\n",
|
||
" source, campaign, *_ = l\n",
|
||
"# print(source, campaign)\n",
|
||
"# print(l)\n",
|
||
" break\n",
|
||
"# print(budget)\n",
|
||
"d = {\n",
|
||
" (\"Media_source_1\", \"install\", \"Brazil\"): \"BRA_MS1_install\",\n",
|
||
" (\"Media_source_1\", \"purchase\", \"Brazil\"): \"BRA_MS1_purchase\",\n",
|
||
" (\"Media_source_1\", \"install\", \"Russia\"): \"RUS_MS1_install\",\n",
|
||
" (\"Media_source_1\", \"purchase\", \"Russia\"): \"RUS_MS1_purchase\",\n",
|
||
" (\"Media_source_1\", \"install\", \"Ukrane\"): \"UKR_MS1_install\",\n",
|
||
" (\"Media_source_1\", \"purchase\", \"Ukrane\"): \"UKR_MS1_purchase\",\n",
|
||
" (\"Media_source_2\", \"install\", \"Brazil\"): \"BRA_MS2_install\",\n",
|
||
" (\"Media_source_2\", \"install\", \"English_speaking\"): \"ENG_MS2_install\",\n",
|
||
"}\n",
|
||
"# print(budget[['media_source', 'Campaign_type', 'Target']])\n",
|
||
"budget"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "561d9fce",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Analisys"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1e9e2cb6",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Оптимальный срок окупаемости"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "1701b5e5",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\\Large\n",
|
||
"T = \\frac{IC}{FV}\n",
|
||
"$$\n",
|
||
"\n",
|
||
"где:\n",
|
||
"\n",
|
||
"- $\\large T$ — срок окупаемости\n",
|
||
"- $\\large IC$ — инвестиционные расходы\n",
|
||
"- $\\large FV$ — прибыль"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "7df2460e",
|
||
"metadata": {},
|
||
"source": [
|
||
"### $\\large IC$ — инвестиционные расходы"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 208,
|
||
"id": "33a0a78b",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"['BRA_MS1_install']"
|
||
]
|
||
},
|
||
"execution_count": 208,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"campaigns = list(registrations['campaign'].unique()[:1])\n",
|
||
"campaigns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "bdaedc89",
|
||
"metadata": {},
|
||
"source": [
|
||
"### $\\large FV$ — прибыль"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 209,
|
||
"id": "73fb9a74",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"d = {\n",
|
||
" (\"Media_source_1\", \"install\", \"Brazil\"): \"BRA_MS1_install\",\n",
|
||
" (\"Media_source_1\", \"purchase\", \"Brazil\"): \"BRA_MS1_purchase\",\n",
|
||
" (\"Media_source_1\", \"install\", \"Russia\"): \"RUS_MS1_install\",\n",
|
||
" (\"Media_source_1\", \"purchase\", \"Russia\"): \"RUS_MS1_purchase\",\n",
|
||
" (\"Media_source_1\", \"install\", \"Ukrane\"): \"UKR_MS1_install\",\n",
|
||
" (\"Media_source_1\", \"purchase\", \"Ukrane\"): \"UKR_MS1_purchase\",\n",
|
||
" (\"Media_source_2\", \"install\", \"Brazil\"): \"BRA_MS2_install\",\n",
|
||
" (\"Media_source_2\", \"install\", \"English_speaking\"): \"ENG_MS2_install\",\n",
|
||
"}"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 210,
|
||
"id": "8353352e",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>payment_date</th>\n",
|
||
" <th>Payment_types</th>\n",
|
||
" <th>real_cost</th>\n",
|
||
" <th>account_id</th>\n",
|
||
" <th>Share, %</th>\n",
|
||
" <th>cost</th>\n",
|
||
" <th>created_date</th>\n",
|
||
" <th>campaign</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>330</th>\n",
|
||
" <td>2021-01-01 15:10:26</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>2.445710</td>\n",
|
||
" <td>3861811</td>\n",
|
||
" <td>24.0</td>\n",
|
||
" <td>1.858740</td>\n",
|
||
" <td>2021-01-07</td>\n",
|
||
" <td>RUS_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>339</th>\n",
|
||
" <td>2021-01-01 15:22:00</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>2.445710</td>\n",
|
||
" <td>3861811</td>\n",
|
||
" <td>24.0</td>\n",
|
||
" <td>1.858740</td>\n",
|
||
" <td>2021-01-07</td>\n",
|
||
" <td>RUS_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>827</th>\n",
|
||
" <td>2021-01-01 17:16:09</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>9.624570</td>\n",
|
||
" <td>3844647</td>\n",
|
||
" <td>24.0</td>\n",
|
||
" <td>7.314673</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>BRA_MS1_install</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>837</th>\n",
|
||
" <td>2021-01-01 17:17:45</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>9.624570</td>\n",
|
||
" <td>3844647</td>\n",
|
||
" <td>24.0</td>\n",
|
||
" <td>7.314673</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>BRA_MS1_install</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1922</th>\n",
|
||
" <td>2021-01-02 01:08:32</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>0.955872</td>\n",
|
||
" <td>3845613</td>\n",
|
||
" <td>24.0</td>\n",
|
||
" <td>0.726463</td>\n",
|
||
" <td>2021-01-02</td>\n",
|
||
" <td>RUS_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>301124</th>\n",
|
||
" <td>2021-12-29 17:14:22</td>\n",
|
||
" <td>Payment_system_4</td>\n",
|
||
" <td>2.620000</td>\n",
|
||
" <td>3924840</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>2.620000</td>\n",
|
||
" <td>2021-01-29</td>\n",
|
||
" <td>RUS_MS1_install</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>301169</th>\n",
|
||
" <td>2021-12-29 18:55:43</td>\n",
|
||
" <td>Payment_system_4</td>\n",
|
||
" <td>0.100000</td>\n",
|
||
" <td>3924840</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.100000</td>\n",
|
||
" <td>2021-01-29</td>\n",
|
||
" <td>RUS_MS1_install</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>301243</th>\n",
|
||
" <td>2021-12-29 21:22:10</td>\n",
|
||
" <td>Payment_system_4</td>\n",
|
||
" <td>0.310000</td>\n",
|
||
" <td>3924840</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.310000</td>\n",
|
||
" <td>2021-01-29</td>\n",
|
||
" <td>RUS_MS1_install</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>301471</th>\n",
|
||
" <td>2021-12-30 08:15:58</td>\n",
|
||
" <td>Payment_system_4</td>\n",
|
||
" <td>0.380000</td>\n",
|
||
" <td>3924840</td>\n",
|
||
" <td>0.0</td>\n",
|
||
" <td>0.380000</td>\n",
|
||
" <td>2021-01-29</td>\n",
|
||
" <td>RUS_MS1_install</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>303332</th>\n",
|
||
" <td>2021-12-31 20:58:48</td>\n",
|
||
" <td>Payment_system_5</td>\n",
|
||
" <td>2.309120</td>\n",
|
||
" <td>3861811</td>\n",
|
||
" <td>24.0</td>\n",
|
||
" <td>1.754931</td>\n",
|
||
" <td>2021-01-07</td>\n",
|
||
" <td>RUS_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>711 rows × 8 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" payment_date Payment_types real_cost account_id \\\n",
|
||
"330 2021-01-01 15:10:26 Payment_system_5 2.445710 3861811 \n",
|
||
"339 2021-01-01 15:22:00 Payment_system_5 2.445710 3861811 \n",
|
||
"827 2021-01-01 17:16:09 Payment_system_5 9.624570 3844647 \n",
|
||
"837 2021-01-01 17:17:45 Payment_system_5 9.624570 3844647 \n",
|
||
"1922 2021-01-02 01:08:32 Payment_system_5 0.955872 3845613 \n",
|
||
"... ... ... ... ... \n",
|
||
"301124 2021-12-29 17:14:22 Payment_system_4 2.620000 3924840 \n",
|
||
"301169 2021-12-29 18:55:43 Payment_system_4 0.100000 3924840 \n",
|
||
"301243 2021-12-29 21:22:10 Payment_system_4 0.310000 3924840 \n",
|
||
"301471 2021-12-30 08:15:58 Payment_system_4 0.380000 3924840 \n",
|
||
"303332 2021-12-31 20:58:48 Payment_system_5 2.309120 3861811 \n",
|
||
"\n",
|
||
" Share, % cost created_date campaign \n",
|
||
"330 24.0 1.858740 2021-01-07 RUS_MS1_purchase \n",
|
||
"339 24.0 1.858740 2021-01-07 RUS_MS1_purchase \n",
|
||
"827 24.0 7.314673 2021-01-01 BRA_MS1_install \n",
|
||
"837 24.0 7.314673 2021-01-01 BRA_MS1_install \n",
|
||
"1922 24.0 0.726463 2021-01-02 RUS_MS1_purchase \n",
|
||
"... ... ... ... ... \n",
|
||
"301124 0.0 2.620000 2021-01-29 RUS_MS1_install \n",
|
||
"301169 0.0 0.100000 2021-01-29 RUS_MS1_install \n",
|
||
"301243 0.0 0.310000 2021-01-29 RUS_MS1_install \n",
|
||
"301471 0.0 0.380000 2021-01-29 RUS_MS1_install \n",
|
||
"303332 24.0 1.754931 2021-01-07 RUS_MS1_purchase \n",
|
||
"\n",
|
||
"[711 rows x 8 columns]"
|
||
]
|
||
},
|
||
"execution_count": 210,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df = payments.join(persents.set_index(\"Payment_types\"), on=\"Payment_types\")\n",
|
||
"df['cost'] = df['real_cost'] * (100 - df['Share, %']) / 100\n",
|
||
"df = df.join(registrations.set_index('account_id'), on=\"account_id\").dropna()\n",
|
||
"df"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 211,
|
||
"id": "95da41ef",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"[('Media_source_1', 'install', 'Brazil', np.float64(0.3300967979179157)),\n",
|
||
" ('Media_source_1', 'purchase', 'Brazil', np.float64(0.8509252137211926)),\n",
|
||
" ('Media_source_1', 'install', 'Russia', np.float64(0.3196661081626587)),\n",
|
||
" ('Media_source_1', 'purchase', 'Russia', np.float64(0.724875510844611)),\n",
|
||
" ('Media_source_1', 'install', 'Ukrane', np.float64(0.9177685774719259)),\n",
|
||
" ('Media_source_1', 'purchase', 'Ukrane', np.float64(0.3433033484234126)),\n",
|
||
" ('Media_source_2', 'install', 'Brazil', np.float64(5.337257113760678)),\n",
|
||
" ('Media_source_2',\n",
|
||
" 'install',\n",
|
||
" 'English_speaking',\n",
|
||
" np.float64(3.9002341108208425))]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"T = []\n",
|
||
"for l in budget.iloc:\n",
|
||
" source, campaign_type, target, *_, spend, _ = l\n",
|
||
" if source == 'Total':\n",
|
||
" break\n",
|
||
" cmp = d[source, campaign_type, target]\n",
|
||
" tmp_df = df[df['campaign'] == cmp]\n",
|
||
" T.append((source, campaign_type, target, spend / tmp_df['cost'].sum()))\n",
|
||
"pprint(T)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 212,
|
||
"id": "d570186f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Net | Campaign type | Target | Time \n",
|
||
"Media_source_1 | install | Brazil | 0.3301 \n",
|
||
"Media_source_1 | purchase | Brazil | 0.8509 \n",
|
||
"Media_source_1 | install | Russia | 0.3197 \n",
|
||
"Media_source_1 | purchase | Russia | 0.7249 \n",
|
||
"Media_source_1 | install | Ukrane | 0.9178 \n",
|
||
"Media_source_1 | purchase | Ukrane | 0.3433 \n",
|
||
"Media_source_2 | install | Brazil | 5.3373 \n",
|
||
"Media_source_2 | install | English_speaking | 3.9002 \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(f\"{\"Net\":15s} | {\"Campaign type\":15s} | {\"Target\":17s} | {\" Time\":7s}\")\n",
|
||
"for s, ct, tar, t in T:\n",
|
||
" print(f\"\"\"\\\n",
|
||
"{s:15s} | {ct:15s} | {tar:17s} | {t:7.4f} \\\n",
|
||
" \"\"\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 213,
|
||
"id": "772ce00f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Axes: >"
|
||
]
|
||
},
|
||
"execution_count": 213,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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JSUFd+/eBfB0NaCbN29i//79AAAXFxelc62PadOmQSwWw8nJCW3atEFOTg7WrFkDfX199O7dG8DT3xQAgC+//BK6urrQ0tKChYUFunbtCktLSyxatAgymQwGBgY4cuQITp8+/dLzJiIiInpdCaqof3ZJSH19fVhYWGD9+vUICgqq9VxTU1PMmTMHYWFhWLVqFXJycrBo0aJq46dPn46DBw8iJiam1sK8Ifr27QuJRIKkpCTExMQgLy8PYrEY1tbW+OKLLyqN8i9btgwpKSny/eTkZPla80lJSXB1dX1puVZwdnZGVFQU9u7di3v37qF169bo168foqOj5R8qLCws8NlnnyE8PByurq4oKyvDjh074O/vjyNHjiA4OBgzZsyAmpoaPDw88PXXX6NDhw4vPXciIiKi15FIJpPJGjsJopctMzMTtra2cJq5BsU6jTed6cewyY127aaksLAQSUlJcHNzg56eXmOn06zxWTQtfB5NC59H09HcnkVF3ZKRkQEbG5s6nSP4F2WJiIiIiJo7QU2/aQwymUz+y7DVUVVVlb8A2tiEli8RERERNRxH6muxc+dOqKur17g9O8e9sQktXyIiIiJqOI7U18LLywtpaWk1xnTp0uUVZVM7oeVLRERERA3Hor4WhoaGgvphJKHlS0REREQNx+k3REREREQCx6KeiIiIiEjgWNQTEREREQkci3oiIiIiIoFjUU9EREREJHAs6omIiIiIBI5LWlKzss7fDfb29o2dBhEREdELxZF6IiIiIiKBY1FPRERERCRwLOqJiIiIiASORT0RERERkcCxqCciIiIiEjgW9UREREREAseinoiIiIhI4FjUExEREREJHH98ipqVBVFJKN7/W2On8dr4MWxyY6dARERE4Eg9EREREZHgsagnIiIiIhI4FvVERERERALHop6IiIiISOBY1BMRERERCRyLeiIiIiIigWNRT0REREQkcCzqiYiIiIgEjkU9EREREZHAsagnIiIiIhI4FvVERERERALHop6IiIiISOBY1BMRERERCVyDivqoqCiIRCKFzcjICK6urjh69KhC7PNxenp6cHR0RHx8fLX95+XlQVNTEyKRCOnp6UrlmJycLL9mVFRUlTEDBgyASCSCubm5QntRURFCQ0PRo0cP6OnpQVdXF5aWlhg/fjxSUlIUYpcsWYLhw4ejXbt2EIlE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YMCAAZBKpQgNDYWXlxfatWuHadOmwdjYGIGBgfK4nj174tSpU1i2bBlycnKgo6MDW1tbHD58WD4nX1VVFYcPH0Z4eDhiYmKwZs0aqKmpoX379nBxcUG3bt3qnR8RERHR60okexHzLuiFiYqKQkBAANLS0hR+pZcaJjMzE7a2tnCauQbFOi9v2lRz82PYZKXOKywsRFJSEtzc3KCnp/eCs6L64LNoWvg8mhY+j6ajuT2LirolIyMDNjY2dTrnpc2pJyIiIiKiV+OlrX7zsslkslqXtlRVVa11/fVXpa75EhERERHVl2BH6nfu3Flp/fLnt2fnuDe2uubr7+8PmUzGqTdEREREVGeCHan38vJCWlpajTFNadlDoeVLRERERMIh2KLe0NAQhoaGjZ1GnQktXyIiIiISDsFOvyEiIiIioqdY1BMRERERCRyLeiIiIiIigWNRT0REREQkcCzqiYiIiIgETrCr3xApY52/G+zt7Rs7DSIiIqIXiiP1REREREQCx6KeiIiIiEjgWNQTEREREQkci3oiIiIiIoFjUU9EREREJHAs6omIiIiIBI5FPRERERGRwLGoJyIiIiISOP74FDUrC6KSULz/t0a59o9hkxvlukRERPT640g9EREREZHAsagnIiIiIhI4FvVERERERALHop6IiIiISOBY1BMRERERCRyLeiIiIiIigWNRT0REREQkcCzqiYiIiIgEjkU9EREREZHAsagnIiIiIhI4FvVERERERALHop6IiIiISOBY1BMRERERCVyTL+qjoqIgEonkm5qaGtq0aQMfHx9cu3ZNIdbc3BzDhw+vsp/09HSIRCJERUUptJ88eRKDBg1C27ZtoampibZt28LV1RVr166tV57Lly+HSCSCiooK/vjjj0rHi4qKoKenB5FIBH9/f4Vjt27dQlBQEDp37gyxWAwDAwN069YN06ZNw61bt+Rx2dnZePfdd+Hi4oKWLVtWeT/1zfdlOX78OJYvX96gPvz9/WFubq7QZm5uXunvR0RERNTcNfmivsKOHTuQmpqKr7/+GrNnz8bhw4fRr18/3Lt3T+k+IyIiMGTIEOjp6WHjxo04efIkQkNDYWVlhf379yvVp46ODnbs2FGpfd++fSgpKYG6urpCe3Z2Nnr16oXTp09j/vz5OH78OKRSKXx9fZGWlqbwASErKwuxsbHQ0NCAp6en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x+k3REREREQCx6KeiIiIiEjgWNQTEREREQkci3oiIiIiIoFjUU9EREREJHBc/YaalXX+brC3t2/sNIiIiIheKI7UExEREREJHIt6IiIiIiKBY1FPRERERCRwLOqJiIiIiASORT0RERERkcCxqCciIiIiEjgW9UREREREAseinoiIiIhI4FjUExEREREJHH9RlpqVBVFJKN7/W6Pm8GPY5Ea9PhEREb1+OFJPRERERCRwLOqJiIiIiASORT0RERERkcCxqCciIiIiEjgW9UREREREAseinoiIiIhI4FjUExEREREJHIt6IiIiIiKBY1FPRERERCRwLOqJiIiIiASORT0RERERkcCxqCciIiIiEjili/rly5dDJBIhLy+vyuO2trZwdXUFANy4cQMikQiffvqpQkxZWRkkEglEIhFWrVoFAEhOToZIJJJvqqqqMDIygpeXF9LT0+ud57P9RUVFVRkzYMAAiEQimJubK7QXFRUhNDQUPXr0gJ6eHnR1dWFpaYnx48cjJSVFIXbJkiUYPnw42rVrB5FIBH9//3rn2lT5+/tDR0ensdMgIiIiomo02kj9kydPMH78eOzcuRObN2/G4sWLFY6vXr0aqampSE5OxkcffYRz587BxcUF165dU+p6urq6iIyMrNR+/fp1JCcnQ09PT6G9rKwMgwYNwqpVqzB27Fjs27cP+/fvx7x583D//n189913CvEbNmxAfn4+RowYAQ0NDaVyJCIiIiJShlpjXLSoqAje3t5ISUlBbGwsfHx8KsV06tQJffv2BQA4OzujZcuWmDJlCnbt2oWQkJB6X3PChAnYvn07rl27hk6dOsnbpVIp2rVrh27duuHy5cvy9m+//Rbnzp2DVCpFQECAvH3w4MGYPXs2ysvLFfr/999/oaLy9DNSTExMvfN71UpKSiASiaCm1ij/BYiIiIjoBXrlI/X37t2Dh4cHzp49i4SEhCoL+qrY2dkBAO7cuaPUdQcOHAhTU1NIpVJ5W3l5OXbu3IkpU6bIC/IK+fn5AIA2bdpU2d/z8c/vKysqKgoikQinT59GQEAADAwM0KJFC3h5eeGPP/5QiDU3N69ymo+rq6t86hPwvylIMTExWLBgAdq1awdNTU1kZWUBABITE+Hu7g59fX1oa2vDysoKa9asqdRvVlYWPD09oaOjA1NTUyxYsACPHz9WiAkJCYG9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wLGoJyIiIiISOBb1REREREQCx6KeiIiIiEjguPoNNSvr/N1gb2/f2Gk0e4WFhUhKSsLeBSOgp6fX2Ok0a3wWTQufR9PC59F08FnUjiP1REREREQCx6KeiIiIiEjgWNQTEREREQkci3oiIiIiIoFjUU9EREREJHAs6omIiIiIBI5FPRERERGRwLGoJyIiIiISOP74FDUrC6KSULz/t8ZOo9kz0lbBO710MX7dYdx9WN7Y6TRrfBZNC5/Hq/Nj2OTGToHoheJIPRERERGRwLGoJyIiIiISOBb1REREREQCx6KeiIiIiEjgWNQTEREREQkci3oiIiIiIoFjUU9EREREJHAs6omIiIiIBI5FPRERERGRwLGoJyIiIiISOBb1REREREQCx6KeiIiIiEjgWNQTEREREQlcky7qo6KiIBKJqt2Sk5MBAObm5hCJRJg5c2alPpKTkyESibB///5Kxy5duoTAwEBYWlpCLBZDLBajU6dOmDFjBtLT0+uV640bN+R5LV++vMoYiUQij3lWSUkJtm7dit69e8PAwADa2towMzPDyJEj8dVXX8njrl69ivfeew9vvfUWWrZsCQMDAzg5OVV5b3XNNyoqqt7n1sXff/+N5cuX45dfflG6j4pnV/GcAWD58uWV/n5EREREzV2TLuor7NixA6mpqZW2Xr16KcRFRkbit99+q1OfW7duxVtvvYXz588jODgYR48exbFjx/Duu+8iMzMTvXv3xu+//17vXHV1dREVFYXy8nKF9gcPHmDfvn3Q09OrdM6kSZMwZ84cuLm5YdeuXThy5AiWLFkCNTU1nDx5Uh536tQpHDt2DGPGjMG+ffsQGxuLTp06Ydy4cVixYkW98mzTpg1SU1MxbNiwet9jXfz9998ICQlpUFFPRERERHWj1tgJ1IWtrS3s7OxqjHFwcMDly5fx4Ycf4sCBAzXGnj17FkFBQRg2bBj2798PDQ0N+bEBAwZg1qxZ2LdvH8Ricb1znTBhArZv345vvvkGAwcOlLfv2bMHZWVl8Pb2xq5du+Tt169fx549e7B06VKEhITI293d3TFt2jSFDwc+Pj6YNWuWwkj10KFDkZeXh9DQUPz3v/+FpqZmnfLU1NRE3759631/RERERNT0CGKkvi4MDAywaNEiHDx4ED/88EONsatXr4aqqiq2bt2qUNA/a9y4cWjbtm298+jS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",
|
||
"text/plain": [
|
||
"<Figure size 720x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"fig, ax = plt.subplots(1, 1, figsize=(6,4), dpi=120)\n",
|
||
"ax.grid()\n",
|
||
"# ax.set_xlim(1, 70)\n",
|
||
"# ax.set(xlabel='common xlabel', ylabel='common ylabel')\n",
|
||
"\n",
|
||
"x = list(map(lambda x: x[3], T))\n",
|
||
"y = list(map(lambda x: d[(x[0], x[1], x[2])], T))\n",
|
||
"\n",
|
||
"plt.xticks(rotation='vertical')\n",
|
||
"sns.barplot(ax=ax, x=x, y=y)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "29c916e9",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Определить наиболее успешные кейсы"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "6b307b90",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Рекламные кампании"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 214,
|
||
"id": "81414a66",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Net | Campaign type | Target | Time \n",
|
||
"Media_source_1 | install | Russia | 0.3197 \n",
|
||
"Media_source_1 | install | Brazil | 0.3301 \n",
|
||
"Media_source_1 | purchase | Ukrane | 0.3433 \n",
|
||
"Media_source_1 | purchase | Russia | 0.7249 \n",
|
||
"Media_source_1 | purchase | Brazil | 0.8509 \n",
|
||
"Media_source_1 | install | Ukrane | 0.9178 \n",
|
||
"Media_source_2 | install | English_speaking | 3.9002 \n",
|
||
"Media_source_2 | install | Brazil | 5.3373 \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"sorted_T = sorted(T, key = lambda x: x[3], reverse=False)\n",
|
||
"print(f\"{\"Net\":15s} | {\"Campaign type\":15s} | {\"Target\":17s} | {\" Time\":7s}\")\n",
|
||
"for s, ct, tar, t in sorted_T:\n",
|
||
" print(f\"\"\"\\\n",
|
||
"{s:15s} | {ct:15s} | {tar:17s} | {t:7.4f} \\\n",
|
||
" \"\"\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 215,
|
||
"id": "2821cb8e",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Axes: >"
|
||
]
|
||
},
|
||
"execution_count": 215,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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",
|
||
"text/plain": [
|
||
"<Figure size 720x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"fig, ax = plt.subplots(1, 1, figsize=(6,4), dpi=120)\n",
|
||
"ax.grid()\n",
|
||
"# ax.set_xlim(1, 70)\n",
|
||
"# ax.set(xlabel='common xlabel', ylabel='common ylabel')\n",
|
||
"\n",
|
||
"y = list(map(lambda x: d[(x[0], x[1], x[2])], sorted_T))\n",
|
||
"x = list(map(lambda x: x[3], sorted_T))\n",
|
||
"\n",
|
||
"# plt.xticks(rotation='vertical')\n",
|
||
"sns.barplot(ax=ax, x=x, y=y)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "f1543549",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Тип рекламных кампаний"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 216,
|
||
"id": "3f22c78b",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"res = pd.DataFrame(sorted_T, columns=[\"MS\", 'CT', 'Target', \"Time\"])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 217,
|
||
"id": "93819b37",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Axes: ylabel='Time'>"
|
||
]
|
||
},
|
||
"execution_count": 217,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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XsXFxWn48OHNbt+xY4dPxwv6iJN+WX6UJJvNdsR94uLiFBcX1+w2p9OpyEjrlrCB3zr8g4XvS6D9qKiokKRmV5KO9t+v48lms/m90pWTk6MZM2Zo586dSkxMVGpqqioqKvTss8/qtttu0+eff64ePXrohhtu0B133OENV7fbrezsbD3//PMqKChQWFiY+vTpo2uvvVa33HKLMjMzva+kDRgwwPt8eXl5Sk1N1SuvvKKnn35aX3/9tSorK5WYmKiJEydq4cKFioiI8O5/+Pl+/fUd/nP392sONJvNptDQ0CP+7Hc6nT4dL+gj7qefftJbb72lU089VSeccILV4wAAgP9XUlKiadOmae7cuVq8eLFef/11LViwQPHx8br66qslSffdd58yMzN19913a/To0aqvr9e3336ryspKSdJ1112nffv26ZFHHtHatWvVs2dPSdKgQYMkSd99950uvPBCzZkzRxEREfr222917733avPmzUFzrptVgiripk6dqj59+mjkyJGKiYnRd999pwceeEClpaXKycmxejwAAPAre/fu1TvvvKOkpCRJ0rhx47Rx40a9+OKL3oj773//q6FDhyozM9P7uF+f496rVy/16dNH0i/nxv/2oom7777b+3uPx6OzzjpLAwcOVEpKirZu3aphw4a10VcX/ILjRfr/N2zYML333nu67rrrNG7cON11110aNGiQPvzwQ40bN87q8QAAwK/06NHDG3CHDRs2TLt37/beTkpK0ldffaX09HS99957Pl+V/8MPP2jq1Knq0aOH7Ha7QkNDlZKSIsn3c8jam6BaiZs/f77mz59v9RgAAKAFunXr1uS+sLAw1dbWem8vWLBAERERWr16tVasWCG73a7Ro0fr3nvv1ciRI496/Orqap1zzjk64YQTdM899+jkk09WeHi4CgsLNWnSpEbP0xEFVcQBAID2xeFw6LbbbtNtt92myspK/fvf/1ZGRoYmTJigwsJChYeHH/GxGzZsUHFxsTZu3OhdfZPkPZ+uowuql1MBAED7FR0drcmTJ2v27Nnat2+fdu3aJel/bzHy25W1w1eXHt5+2BNPPNH2wxqAlTgAANBmLrnkEg0ZMkQjR45UbGysdu/erYceekh9+/bVSSedJEkaOnSoJGnZsmW65pprFBoaqlNOOUV/+MMfdOKJJ+rGG2/U4sWLFRoaqhde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",
|
||
"text/plain": [
|
||
"<Figure size 720x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"fig, ax = plt.subplots(1, 1, figsize=(6,4), dpi=120)\n",
|
||
"ax.grid()\n",
|
||
"\n",
|
||
"sns.boxplot(ax=ax, data=res, y=res['Time'], hue=\"CT\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "781727e6",
|
||
"metadata": {},
|
||
"source": [
|
||
"## Рекламная сеть"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 218,
|
||
"id": "588eab3e",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"<Axes: ylabel='Time'>"
|
||
]
|
||
},
|
||
"execution_count": 218,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "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rWbNmkmS/vCHP2jp0qUaM2aMHnnkEe3bt08DBgzQ+fPnq63pyJEjuvPOO5WUlKRWrVrp5MmT+vDDDxUZGakDBw7U+LmoX331lQYPHqzBgwdr6tSpatq0qY4ePapNmzY5+uTn56tbt266cuWK3njjDYWFhWnDhg0aM2aMDh06pLS0tFq8m//nypUreuKJJzRixAhNmDBBNptNNptNvXv31tatWzV69Gg99NBDstls2rFjh44dO6Zu3bpJkkaMGKHMzEy9/PLLeuedd3T27FlNnz5d3bp103fffafg4OA61SRJNptNW7duVceOHeu8DwCA6yPENRLDhw9XfHy89u/fr44dOyojI0ODBg2qMB9u1apV2rhxo9auXasBAwY4tkdERCgyMlKZmZlKTU3VDz/8oCVLluiVV17Ru+++K0l65JFHFBwcrN///vfV1jNw4EANHDjQ8X1JSYn69eun4OBgrVixQi+//HKNzmv79u2y2+1KT09Xixb/N8yenJzs+Pr9999XTk6Odu7cqaioKEnSY489ppKSEqWnp2v06NHq0KFDjY73a1evXtXkyZMdi0ckadmyZdq8ebMWLFigZ5991rE9ISHB8fWOHTu0YMECzZ49W6+++qpje48ePdShQwe9//77euedd2pdT5mpU6cqOztb69evr/M+AACuj8upjURsbKxuv/12ZWRkaO/evfr6668rvZS6YcMG+fn5KSEhwTGyZLPZ1LlzZ4WEhDguNW7evFmSKgS2p556SlZr9b8bFBUVafz48Wrfvr2sVqusVqu8vb114cIFHTx4sMbnFRkZ6TjuqlWrlJOTU6HPpk2bdPfddzsCXJnk5GTZ7fZyo3a19bvf/a7c91988YWaNm1a6XtbZsOGDbJYLBo2bFi59zgkJEQRERHXtUp44cKFeuutt/THP/5RiYmJdd4PAMD1MRLXSFgsFqWkpGjevHm6fPmyOnTooB49elTol5ubq4KCAjVp0qTS/Zw+fVqSdObMGUlSSEhIuXar1Sp/f/9q6xk6dKi+/PJLvf7664qMjJSvr68sFov69OmjS5cu1fi8evbsqfXr12vevHl6+umnVVxcrI4dO+q1115zzAU8c+aMwsLCKrw2NDS03LnUlpeXV7mFItIvl25DQ0Pl5nbt349yc3Nlt9uvecm0Xbt2dapn8eLFGjFihJ577jm99957ddoH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",
|
||
"text/plain": [
|
||
"<Figure size 720x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"fig, ax = plt.subplots(1, 1, figsize=(6,4), dpi=120)\n",
|
||
"ax.grid()\n",
|
||
"\n",
|
||
"sns.boxplot(ax=ax, data=res, y=res['Time'], hue=\"MS\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "2128f1b7",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Накопительный ARPU успешных рекламных кампаний"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"id": "48a87a99",
|
||
"metadata": {},
|
||
"source": [
|
||
"$$\\Large\n",
|
||
"ARPU = \n",
|
||
"\\frac{\\text{Доход}}{\\text{Число пользователей}}\n",
|
||
"$$"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 286,
|
||
"id": "c122ab03",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"from datetime import date, datetime, timedelta"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 244,
|
||
"id": "2a3f7a9e",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"registrations.created_date = pd.to_datetime(registrations.created_date, format=\"%Y-%m-%d\")\n",
|
||
"registrations.created_date = pd.Series(map(lambda x: x.date(), \\\n",
|
||
" registrations.created_date))\n",
|
||
"dates = sorted(list(set(registrations.created_date)))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 256,
|
||
"id": "7c089a10",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"df = registrations.dropna()\n",
|
||
"df = payments.join(df.set_index(\"account_id\"), on=\"account_id\").dropna()\n",
|
||
"df = df.join(persents.set_index(\"Payment_types\"), on=\"Payment_types\")\n",
|
||
"df['cost'] = df['real_cost'] * (100 - df['Share, %']) / 100\n",
|
||
"# df['payment_date'] = pd.to_datetime(df['payment_date'], format=\"%Y-%m-%d %H:%M:%S\")\n",
|
||
"# df['payment_date'] = pd.Series(map(lambda x: x.date(), \\\n",
|
||
"# df['payment_date']))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 281,
|
||
"id": "479d54b6",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>account_id</th>\n",
|
||
" <th>created_date</th>\n",
|
||
" <th>campaign</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>30</th>\n",
|
||
" <td>3842410.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>BRA_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>70</th>\n",
|
||
" <td>3842450.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>RUS_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>112</th>\n",
|
||
" <td>3842492.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>BRA_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>132</th>\n",
|
||
" <td>3842512.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>BRA_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>300</th>\n",
|
||
" <td>3842680.0</td>\n",
|
||
" <td>2021-01-01</td>\n",
|
||
" <td>BRA_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>89055</th>\n",
|
||
" <td>3931436.0</td>\n",
|
||
" <td>2021-01-31</td>\n",
|
||
" <td>RUS_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>89061</th>\n",
|
||
" <td>3931442.0</td>\n",
|
||
" <td>2021-01-31</td>\n",
|
||
" <td>RUS_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>89070</th>\n",
|
||
" <td>3931451.0</td>\n",
|
||
" <td>2021-01-31</td>\n",
|
||
" <td>BRA_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>89075</th>\n",
|
||
" <td>3931456.0</td>\n",
|
||
" <td>2021-01-31</td>\n",
|
||
" <td>RUS_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>89083</th>\n",
|
||
" <td>3931464.0</td>\n",
|
||
" <td>2021-01-31</td>\n",
|
||
" <td>BRA_MS1_purchase</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>2980 rows × 3 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" account_id created_date campaign\n",
|
||
"30 3842410.0 2021-01-01 BRA_MS1_purchase\n",
|
||
"70 3842450.0 2021-01-01 RUS_MS1_purchase\n",
|
||
"112 3842492.0 2021-01-01 BRA_MS1_purchase\n",
|
||
"132 3842512.0 2021-01-01 BRA_MS1_purchase\n",
|
||
"300 3842680.0 2021-01-01 BRA_MS1_purchase\n",
|
||
"... ... ... ...\n",
|
||
"89055 3931436.0 2021-01-31 RUS_MS1_purchase\n",
|
||
"89061 3931442.0 2021-01-31 RUS_MS1_purchase\n",
|
||
"89070 3931451.0 2021-01-31 BRA_MS1_purchase\n",
|
||
"89075 3931456.0 2021-01-31 RUS_MS1_purchase\n",
|
||
"89083 3931464.0 2021-01-31 BRA_MS1_purchase\n",
|
||
"\n",
|
||
"[2980 rows x 3 columns]"
|
||
]
|
||
},
|
||
"execution_count": 281,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df = registrations.dropna()\n",
|
||
"purc_acc = df[df.campaign.str.contains(\"purchase\")]\n",
|
||
"purc_acc"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 292,
|
||
"id": "5f34432f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"datetime.date(2024, 1, 1)"
|
||
]
|
||
},
|
||
"execution_count": 292,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"datetime(2024,1,1).date() + timedelta(days=0)"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"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.13.0"
|
||
},
|
||
"toc": {
|
||
"base_numbering": 1,
|
||
"nav_menu": {},
|
||
"number_sections": true,
|
||
"sideBar": true,
|
||
"skip_h1_title": false,
|
||
"title_cell": "Table of Contents",
|
||
"title_sidebar": "Contents",
|
||
"toc_cell": false,
|
||
"toc_position": {},
|
||
"toc_section_display": true,
|
||
"toc_window_display": true
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|