{
"cells": [
{
"cell_type": "code",
"execution_count": 79,
"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"
]
},
{
"cell_type": "markdown",
"id": "d7cfc02e",
"metadata": {},
"source": [
"# Данные"
]
},
{
"cell_type": "markdown",
"id": "67c32cdd",
"metadata": {},
"source": [
"## Payments"
]
},
{
"cell_type": "code",
"execution_count": 80,
"id": "038a62d8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" payment_date | \n",
" Payment_types | \n",
" real_cost | \n",
" account_id | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 2021-01-01 00:00:56 | \n",
" Payment_system_5 | \n",
" 9.650000 | \n",
" 2907221 | \n",
"
\n",
" \n",
" | 1 | \n",
" 2021-01-01 00:01:48 | \n",
" Payment_system_5 | \n",
" 0.955872 | \n",
" 3228373 | \n",
"
\n",
" \n",
" | 2 | \n",
" 2021-01-01 00:03:42 | \n",
" Payment_system_5 | \n",
" 3.026930 | \n",
" 318552 | \n",
"
\n",
" \n",
" | 3 | \n",
" 2021-01-01 00:04:27 | \n",
" Payment_system_2 | \n",
" 99.990000 | \n",
" 3832817 | \n",
"
\n",
" \n",
" | 4 | \n",
" 2021-01-01 00:06:41 | \n",
" Payment_system_5 | \n",
" 1.432550 | \n",
" 7229767 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"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": 80,
"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": 81,
"id": "a4b72e40",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" Payment_types | \n",
" Share, % | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Payment_system_1 | \n",
" 20.7 | \n",
"
\n",
" \n",
" | 1 | \n",
" Payment_system_2 | \n",
" 15.0 | \n",
"
\n",
" \n",
" | 2 | \n",
" Payment_system_3 | \n",
" 58.5 | \n",
"
\n",
" \n",
" | 3 | \n",
" Payment_system_4 | \n",
" 0.0 | \n",
"
\n",
" \n",
" | 4 | \n",
" Payment_system_5 | \n",
" 24.0 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"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": 81,
"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": 82,
"id": "a0f238ba",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" account_id | \n",
" created_date | \n",
" campaign | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" 3842380.0 | \n",
" 2021-01-01 | \n",
" BRA_MS1_install | \n",
"
\n",
" \n",
" | 1 | \n",
" 3842381.0 | \n",
" 2021-01-01 | \n",
" NaN | \n",
"
\n",
" \n",
" | 2 | \n",
" 3842382.0 | \n",
" 2021-01-01 | \n",
" NaN | \n",
"
\n",
" \n",
" | 3 | \n",
" 3842383.0 | \n",
" 2021-01-01 | \n",
" NaN | \n",
"
\n",
" \n",
" | 4 | \n",
" 3842384.0 | \n",
" 2021-01-01 | \n",
" BRA_MS1_install | \n",
"
\n",
" \n",
"
\n",
"
"
],
"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": 82,
"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": 83,
"id": "bf031a83",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" media_source | \n",
" Campaign_type | \n",
" Target | \n",
" Plan, USD | \n",
" Installs | \n",
" Spend, USD | \n",
" Deviation, USD | \n",
"
\n",
" \n",
" \n",
" \n",
" | 0 | \n",
" Media_source_1 | \n",
" install | \n",
" Brazil | \n",
" 100 | \n",
" 10460 | \n",
" 99.12 | \n",
" 0.88 | \n",
"
\n",
" \n",
" | 1 | \n",
" Media_source_1 | \n",
" purchase | \n",
" Brazil | \n",
" 400 | \n",
" 1081 | \n",
" 398.67 | \n",
" 1.33 | \n",
"
\n",
" \n",
" | 2 | \n",
" Media_source_1 | \n",
" install | \n",
" Russia | \n",
" 200 | \n",
" 11894 | \n",
" 246.30 | \n",
" -46.30 | \n",
"
\n",
" \n",
" | 3 | \n",
" Media_source_1 | \n",
" purchase | \n",
" Russia | \n",
" 500 | \n",
" 1441 | \n",
" 616.77 | \n",
" -116.77 | \n",
"
\n",
" \n",
" | 4 | \n",
" Media_source_1 | \n",
" install | \n",
" Ukrane | \n",
" 100 | \n",
" 6424 | \n",
" 99.43 | \n",
" 0.57 | \n",
"
\n",
" \n",
" | 5 | \n",
" Media_source_1 | \n",
" purchase | \n",
" Ukrane | \n",
" 500 | \n",
" 242 | \n",
" 348.13 | \n",
" 151.87 | \n",
"
\n",
" \n",
" | 6 | \n",
" Media_source_2 | \n",
" install | \n",
" Brazil | \n",
" 100 | \n",
" 152 | \n",
" 81.15 | \n",
" 18.85 | \n",
"
\n",
" \n",
" | 7 | \n",
" Media_source_2 | \n",
" install | \n",
" English_speaking | \n",
" 100 | \n",
" 371 | \n",
" 99.95 | \n",
" 0.05 | \n",
"
\n",
" \n",
" | 8 | \n",
" Total | \n",
" NaN | \n",
" NaN | \n",
" 2000 | \n",
" 32065 | \n",
" 1989.52 | \n",
" 10.48 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"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": 83,
"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",
"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": 84,
"id": "33a0a78b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"['BRA_MS1_install']"
]
},
"execution_count": 84,
"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": 87,
"id": "8353352e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" payment_date | \n",
" Payment_types | \n",
" real_cost | \n",
" account_id | \n",
" Share, % | \n",
" cost | \n",
" created_date | \n",
" campaign | \n",
"
\n",
" \n",
" \n",
" \n",
" | 330 | \n",
" 2021-01-01 15:10:26 | \n",
" Payment_system_5 | \n",
" 2.445710 | \n",
" 3861811 | \n",
" 24.0 | \n",
" 1.858740 | \n",
" 2021-01-07 | \n",
" RUS_MS1_purchase | \n",
"
\n",
" \n",
" | 339 | \n",
" 2021-01-01 15:22:00 | \n",
" Payment_system_5 | \n",
" 2.445710 | \n",
" 3861811 | \n",
" 24.0 | \n",
" 1.858740 | \n",
" 2021-01-07 | \n",
" RUS_MS1_purchase | \n",
"
\n",
" \n",
" | 827 | \n",
" 2021-01-01 17:16:09 | \n",
" Payment_system_5 | \n",
" 9.624570 | \n",
" 3844647 | \n",
" 24.0 | \n",
" 7.314673 | \n",
" 2021-01-01 | \n",
" BRA_MS1_install | \n",
"
\n",
" \n",
" | 837 | \n",
" 2021-01-01 17:17:45 | \n",
" Payment_system_5 | \n",
" 9.624570 | \n",
" 3844647 | \n",
" 24.0 | \n",
" 7.314673 | \n",
" 2021-01-01 | \n",
" BRA_MS1_install | \n",
"
\n",
" \n",
" | 1922 | \n",
" 2021-01-02 01:08:32 | \n",
" Payment_system_5 | \n",
" 0.955872 | \n",
" 3845613 | \n",
" 24.0 | \n",
" 0.726463 | \n",
" 2021-01-02 | \n",
" RUS_MS1_purchase | \n",
"
\n",
" \n",
" | ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" | 301124 | \n",
" 2021-12-29 17:14:22 | \n",
" Payment_system_4 | \n",
" 2.620000 | \n",
" 3924840 | \n",
" 0.0 | \n",
" 2.620000 | \n",
" 2021-01-29 | \n",
" RUS_MS1_install | \n",
"
\n",
" \n",
" | 301169 | \n",
" 2021-12-29 18:55:43 | \n",
" Payment_system_4 | \n",
" 0.100000 | \n",
" 3924840 | \n",
" 0.0 | \n",
" 0.100000 | \n",
" 2021-01-29 | \n",
" RUS_MS1_install | \n",
"
\n",
" \n",
" | 301243 | \n",
" 2021-12-29 21:22:10 | \n",
" Payment_system_4 | \n",
" 0.310000 | \n",
" 3924840 | \n",
" 0.0 | \n",
" 0.310000 | \n",
" 2021-01-29 | \n",
" RUS_MS1_install | \n",
"
\n",
" \n",
" | 301471 | \n",
" 2021-12-30 08:15:58 | \n",
" Payment_system_4 | \n",
" 0.380000 | \n",
" 3924840 | \n",
" 0.0 | \n",
" 0.380000 | \n",
" 2021-01-29 | \n",
" RUS_MS1_install | \n",
"
\n",
" \n",
" | 303332 | \n",
" 2021-12-31 20:58:48 | \n",
" Payment_system_5 | \n",
" 2.309120 | \n",
" 3861811 | \n",
" 24.0 | \n",
" 1.754931 | \n",
" 2021-01-07 | \n",
" RUS_MS1_purchase | \n",
"
\n",
" \n",
"
\n",
"
711 rows × 8 columns
\n",
"
"
],
"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": 87,
"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.join(registrations.set_index('account_id'), on=\"account_id\").dropna()\n",
"# registrations.set_index('account_id')"
]
}
],
"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
}