{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "sRW85nPMDWKb"
   },
   "source": [
    "В этой части проекта вам нужно написать несколько SQL-запросов в Jupyter Notebook. \n",
    "\n",
    "Необходимые данные находятся в таблицах схемы `stackoverflow`. Не забудьте подключиться к базе с помощью SQLAlchemy. \n",
    "\n",
    "Некоторые задания включают дополнительные вопросы — не пропустите их. На часть вопросов можно ответить текстом, а для некоторых понадобится визуализация. Помните, что результат запроса можно выгрузить в датафрейм. \n",
    "\n",
    "Чтобы ожидаемый результат было легче представить, мы добавили к каждому заданию небольшой фрагмент итоговой таблицы. В запросах вы можете использовать любые подходящие названия полей."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "id": "nlZBlglMDWKe"
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns \n",
    "from sqlalchemy import create_engine "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "XnOE3n28DWKg"
   },
   "source": [
    "### Конфигурация для подключения к базе данных `data-analyst-advanced-sql`\n",
    "Эта база данных содержит схему `stackoverflow`, с которой вы будете работать в проекте"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "id": "6p-yGp7qDWKg"
   },
   "outputs": [],
   "source": [
    "db_config = {\n",
    "    'user': 'praktikum_student', # имя пользователя\n",
    "    'pwd': 'Sdf4$2;d-d30pp', # пароль\n",
    "    'host': 'rc1b-wcoijxj3yxfsf3fs.mdb.yandexcloud.net',\n",
    "    'port': 6432, # порт подключения\n",
    "    'db': 'data-analyst-advanced-sql' # название базы данных\n",
    "}  \n",
    "\n",
    "connection_string = 'postgresql://{}:{}@{}:{}/{}'.format(\n",
    "    db_config['user'],\n",
    "    db_config['pwd'],\n",
    "    db_config['host'],\n",
    "    db_config['port'],\n",
    "    db_config['db'],\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "2Rg8ZpS0DWKh"
   },
   "source": [
    "Создание подключения"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "id": "DamCUTR6DWKi"
   },
   "outputs": [],
   "source": [
    "engine = create_engine(connection_string) "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "bel8XeSlDWKj"
   },
   "source": [
    "Пример запроса к базе данных\n",
    "\n",
    "`sample_df` является pandas-датафреймом."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "id": "6Z_fw0yLDWKk"
   },
   "outputs": [],
   "source": [
    "query = '''\n",
    "SELECT *\n",
    "FROM stackoverflow.users\n",
    "LIMIT 10;\n",
    "'''\n",
    "\n",
    "sample_df = pd.read_sql_query(query, con=engine) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "id": "ZpuZ290oDWKk",
    "outputId": "22785a0a-e2bc-4559-ec3c-4879c4b377eb"
   },
   "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>id</th>\n",
       "      <th>creation_date</th>\n",
       "      <th>display_name</th>\n",
       "      <th>last_access_date</th>\n",
       "      <th>location</th>\n",
       "      <th>reputation</th>\n",
       "      <th>views</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2008-07-31 14:22:31</td>\n",
       "      <td>Jeff Atwood</td>\n",
       "      <td>2018-08-29 02:34:23</td>\n",
       "      <td>El Cerrito, CA</td>\n",
       "      <td>44300</td>\n",
       "      <td>408587</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2008-07-31 14:22:31</td>\n",
       "      <td>Geoff Dalgas</td>\n",
       "      <td>2018-08-23 17:31:56</td>\n",
       "      <td>Corvallis, OR</td>\n",
       "      <td>3491</td>\n",
       "      <td>23966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2008-07-31 14:22:31</td>\n",
       "      <td>Jarrod Dixon</td>\n",
       "      <td>2018-08-30 20:56:24</td>\n",
       "      <td>Raleigh, NC, United States</td>\n",
       "      <td>13418</td>\n",
       "      <td>24396</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2008-07-31 14:22:31</td>\n",
       "      <td>Joel Spolsky</td>\n",
       "      <td>2018-08-14 22:18:15</td>\n",
       "      <td>New York, NY</td>\n",
       "      <td>28768</td>\n",
       "      <td>73755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2008-07-31 14:22:31</td>\n",
       "      <td>Jon Galloway</td>\n",
       "      <td>2018-08-29 16:48:36</td>\n",
       "      <td>San Diego, CA</td>\n",
       "      <td>39172</td>\n",
       "      <td>11700</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>8</td>\n",
       "      <td>2008-07-31 21:33:24</td>\n",
       "      <td>Eggs McLaren</td>\n",
       "      <td>2018-04-09 02:04:56</td>\n",
       "      <td>None</td>\n",
       "      <td>942</td>\n",
       "      <td>6372</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>9</td>\n",
       "      <td>2008-07-31 21:35:27</td>\n",
       "      <td>Kevin Dente</td>\n",
       "      <td>2018-08-30 18:18:03</td>\n",
       "      <td>Oakland, CA</td>\n",
       "      <td>14337</td>\n",
       "      <td>4949</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>11</td>\n",
       "      <td>2008-08-01 00:59:11</td>\n",
       "      <td>Anonymous User</td>\n",
       "      <td>2008-08-01 00:59:11</td>\n",
       "      <td>None</td>\n",
       "      <td>1890</td>\n",
       "      <td>2123</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>13</td>\n",
       "      <td>2008-08-01 04:18:05</td>\n",
       "      <td>Chris Jester-Young</td>\n",
       "      <td>2018-08-30 02:47:23</td>\n",
       "      <td>Raleigh, NC, United States</td>\n",
       "      <td>177138</td>\n",
       "      <td>35414</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>17</td>\n",
       "      <td>2008-08-01 12:02:22</td>\n",
       "      <td>Nick Berardi</td>\n",
       "      <td>2018-01-22 01:35:38</td>\n",
       "      <td>Issaquah, WA</td>\n",
       "      <td>44443</td>\n",
       "      <td>4786</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   id       creation_date        display_name    last_access_date  \\\n",
       "0   1 2008-07-31 14:22:31         Jeff Atwood 2018-08-29 02:34:23   \n",
       "1   2 2008-07-31 14:22:31        Geoff Dalgas 2018-08-23 17:31:56   \n",
       "2   3 2008-07-31 14:22:31        Jarrod Dixon 2018-08-30 20:56:24   \n",
       "3   4 2008-07-31 14:22:31        Joel Spolsky 2018-08-14 22:18:15   \n",
       "4   5 2008-07-31 14:22:31        Jon Galloway 2018-08-29 16:48:36   \n",
       "5   8 2008-07-31 21:33:24        Eggs McLaren 2018-04-09 02:04:56   \n",
       "6   9 2008-07-31 21:35:27         Kevin Dente 2018-08-30 18:18:03   \n",
       "7  11 2008-08-01 00:59:11      Anonymous User 2008-08-01 00:59:11   \n",
       "8  13 2008-08-01 04:18:05  Chris Jester-Young 2018-08-30 02:47:23   \n",
       "9  17 2008-08-01 12:02:22        Nick Berardi 2018-01-22 01:35:38   \n",
       "\n",
       "                     location  reputation   views  \n",
       "0              El Cerrito, CA       44300  408587  \n",
       "1               Corvallis, OR        3491   23966  \n",
       "2  Raleigh, NC, United States       13418   24396  \n",
       "3                New York, NY       28768   73755  \n",
       "4               San Diego, CA       39172   11700  \n",
       "5                        None         942    6372  \n",
       "6                 Oakland, CA       14337    4949  \n",
       "7                        None        1890    2123  \n",
       "8  Raleigh, NC, United States      177138   35414  \n",
       "9                Issaquah, WA       44443    4786  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sample_df"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "tf9qq2yzDWK_"
   },
   "source": [
    "# Задание 1"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "gfwLVXBYDWLA"
   },
   "source": [
    "Рассчитайте аналог Retention Rate по месяцам для пользователей StackOverflow. Объедините пользователей в когорты по месяцу их первого поста. Возвращение определяйте по наличию поста в текущем месяце. "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "| cohort_dt | session_date | users_cnt | cohort_users_cnt | retention_rate |\n",
    "| --- | --- | --- | --- | --- |\n",
    "| 2008-07-01 00:00:00 | 2008-07-01 00:00:00 | 3 | 3 | 100 |\n",
    "| 2008-07-01 00:00:00 | 2008-08-01 00:00:00 | 2 | 3 | 66,67 |\n",
    "| 2008-07-01 00:00:00 | 2008-09-01 00:00:00 | 1 | 3 | 33,33 |\n",
    "| 2008-07-01 00:00:00 | 2008-10-01 00:00:00 | 2 | 3 | 66,67 |\n",
    "| 2008-07-01 00:00:00 | 2008-11-01 00:00:00 | 1 | 3 | 33,33 |\n",
    "| 2008-07-01 00:00:00 | 2008-12-01 00:00:00 | 2 | 3 | 66,67 |\n",
    "| 2008-08-01 00:00:00 | 2008-08-01 00:00:00 | 2151 | 2151 | 100 |\n",
    "| ... | ... | ... | ... | ... |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "id": "LUgFmwmTDWLB"
   },
   "outputs": [],
   "source": [
    "# напишите запрос\n",
    "query = '''\n",
    "WITH profile AS\n",
    "  (SELECT u.id AS user_id,\n",
    "          DATE_TRUNC('month', min(p.creation_date)) AS cohort_date,\n",
    "          COUNT(*) OVER (PARTITION BY DATE_TRUNC('month', min(p.creation_date))) cohort_users_cnt\n",
    "   FROM stackoverflow.users u\n",
    "   JOIN stackoverflow.posts p ON u.id = p.user_id\n",
    "   GROUP BY 1),\n",
    "posts AS\n",
    "  (SELECT user_id,\n",
    "          DATE_TRUNC('month', creation_date) AS post_date\n",
    "   FROM stackoverflow.posts\n",
    "   GROUP BY 1,\n",
    "            2)\n",
    "SELECT p.cohort_date::date,\n",
    "       po.post_date::date,\n",
    "       COUNT(p.user_id) AS users_cnt,\n",
    "       p.cohort_users_cnt,\n",
    "       ROUND(COUNT(p.user_id) * 100.0 / cohort_users_cnt, 2) AS retention_rate\n",
    "FROM profile p\n",
    "JOIN posts po ON p.user_id = po.user_id\n",
    "GROUP BY 1,\n",
    "         2,\n",
    "         4\n",
    "ORDER BY 1,\n",
    "         2;\n",
    "'''\n",
    "\n",
    "# выполните запрос"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "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>cohort_date</th>\n",
       "      <th>post_date</th>\n",
       "      <th>users_cnt</th>\n",
       "      <th>cohort_users_cnt</th>\n",
       "      <th>retention_rate</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>2008-07-01</td>\n",
       "      <td>2008-07-01</td>\n",
       "      <td>3</td>\n",
       "      <td>3</td>\n",
       "      <td>100.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2008-07-01</td>\n",
       "      <td>2008-08-01</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>66.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>2008-07-01</td>\n",
       "      <td>2008-09-01</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>33.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>2008-07-01</td>\n",
       "      <td>2008-10-01</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>66.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2008-07-01</td>\n",
       "      <td>2008-11-01</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>33.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>2008-07-01</td>\n",
       "      <td>2008-12-01</td>\n",
       "      <td>2</td>\n",
       "      <td>3</td>\n",
       "      <td>66.67</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>2008-08-01</td>\n",
       "      <td>2008-08-01</td>\n",
       "      <td>2151</td>\n",
       "      <td>2151</td>\n",
       "      <td>100.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>2008-08-01</td>\n",
       "      <td>2008-09-01</td>\n",
       "      <td>1571</td>\n",
       "      <td>2151</td>\n",
       "      <td>73.04</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  cohort_date   post_date  users_cnt  cohort_users_cnt  retention_rate\n",
       "0  2008-07-01  2008-07-01          3                 3          100.00\n",
       "1  2008-07-01  2008-08-01          2                 3           66.67\n",
       "2  2008-07-01  2008-09-01          1                 3           33.33\n",
       "3  2008-07-01  2008-10-01          2                 3           66.67\n",
       "4  2008-07-01  2008-11-01          1                 3           33.33\n",
       "5  2008-07-01  2008-12-01          2                 3           66.67\n",
       "6  2008-08-01  2008-08-01       2151              2151          100.00\n",
       "7  2008-08-01  2008-09-01       1571              2151           73.04"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sample_df_8 = pd.read_sql_query(query, con=engine) \n",
    "display(sample_df_8.head(8))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "Yavb5o9JDWLB"
   },
   "source": [
    "<details>\n",
    "\n",
    "<summary>Подсказка</summary>\n",
    "Вспомните, как выглядел запрос для расчёта Retention Rate в теории. Создайте две временные таблицы: `profile` и `sessions` (в ней будет информация о публикациях), а затем используйте их в основном запросе.\n",
    "\n",
    "Во временной таблице `profile` вам понадобятся три поля:\n",
    "\n",
    "- идентификатор пользователя;\n",
    "- дата первого поста пользователя, усечённая до месяца (признак начала когорты);\n",
    "- количество пользователей этой когорты.\n",
    "</details>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "_msBtnb2DWLC"
   },
   "source": [
    "Постройте тепловую карту Retention Rate. Какие аномалии или другие необычные явления удалось выявить? Сформулируйте гипотезы о возможных причинах."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "id": "qAEJc8H1DWLC"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x504 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# создаём сводную таблицу с результатами\n",
    "\n",
    "retention = sample_df_8.pivot('cohort_date', 'post_date', 'retention_rate')\n",
    "retention.index = [str(x)[0:10] for x in retention.index]\n",
    "retention.columns = [str(x)[0:10] for x in retention.columns]\n",
    "\n",
    "plt.figure(figsize=(10, 7))  # задаём размер графика\n",
    "sns.heatmap(retention, # указываем датафрейм с данными\n",
    "            annot=True, #включаем подписи\n",
    "            fmt='') #задаём исходный формат\n",
    "plt.title('Retention Rate по когортам') # задаём название графика\n",
    "plt.xlabel('Месяцы') # подпись оси х\n",
    "plt.ylabel('Которты')# подпись оси у\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "EgOfIsI4DWLC"
   },
   "source": [
    "**Вывод**\n",
    "\n",
    "Заметны аномалии в июле месяце, видимо это связано с неполнотой данных или ошибках в работе СУБД. Августовкие пользователи отличаются от остальных. Если в остальные месяцы отток сохраняется примерно на одинаковом уровне, то в августе отток небольшой, что может наводить на мысль о начале учебного года."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "1k7oPWt5DWLK"
   },
   "source": [
    "# Задание 2\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "ALsYVSyRDWLM"
   },
   "source": [
    "На сколько процентов менялось количество постов ежемесячно с 1 сентября по 31 декабря 2008 года? Отобразите таблицу со следующими полями:\n",
    "\n",
    "- номер месяца;\n",
    "- количество постов за месяц;\n",
    "- процент, который показывает, насколько изменилось количество постов в текущем месяце по сравнению с предыдущим.\n",
    "\n",
    "Если постов стало меньше, значение процента должно быть отрицательным, если больше — положительным. Округлите значение процента до двух знаков после запятой.\n",
    "\n",
    "Напомним, что при делении одного целого числа на другое в PostgreSQL в результате получится целое число, округлённое до ближайшего целого вниз. Чтобы этого избежать, переведите делимое в тип `numeric`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "u4E2zF8DDWLM"
   },
   "source": [
    "| creation_month | posts_count | percentage |\n",
    "| -------------- | ----------- | ---------- |\n",
    "| 9 | 70731 | NaN |\n",
    "| 10 | 63102 | -10.33 |\n",
    "| ... | ... | ... |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "id": "Mb5pShStDWLN"
   },
   "outputs": [],
   "source": [
    "# напишите запрос\n",
    "query = '''\n",
    "SELECT *,\n",
    "       ROUND((100 * CAST(posts_count AS NUMERIC))/LAG(posts_count, 1) OVER (ORDER BY posts_count DESC) - 100, 2) AS percentage   \n",
    "FROM (SELECT EXTRACT(MONTH FROM creation_date) AS creation_month,\n",
    "             COUNT(id) AS posts_count\n",
    "      FROM stackoverflow.posts \n",
    "      WHERE DATE_TRUNC('day', creation_date) BETWEEN '2008-09-01' AND '2008-12-31'\n",
    "      GROUP BY creation_month\n",
    "      ORDER BY creation_month) AS foo;\n",
    "'''\n",
    "\n",
    "# выполните запрос"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {
    "scrolled": false
   },
   "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>creation_month</th>\n",
       "      <th>posts_count</th>\n",
       "      <th>percentage</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>9.0</td>\n",
       "      <td>70371</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>10.0</td>\n",
       "      <td>63102</td>\n",
       "      <td>-10.33</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>11.0</td>\n",
       "      <td>46975</td>\n",
       "      <td>-25.56</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>12.0</td>\n",
       "      <td>44592</td>\n",
       "      <td>-5.07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   creation_month  posts_count  percentage\n",
       "0             9.0        70371         NaN\n",
       "1            10.0        63102      -10.33\n",
       "2            11.0        46975      -25.56\n",
       "3            12.0        44592       -5.07"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sample_df_9 = pd.read_sql_query(query, con=engine) \n",
    "display(sample_df_9.head(8))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "G0VSDL4HDWLO"
   },
   "source": [
    "<details>\n",
    "\n",
    "<summary>Подсказка</summary>\n",
    "Эту задачу стоит декомпозировать. Сформируйте запрос, который отобразит номер месяца и количество постов. Затем можно использовать оконную функцию, которая вернёт значение за предыдущий месяц, и посчитать процент.\n",
    "</details>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "id": "9NQE2y_MDWLP"
   },
   "source": [
    "Постройте круговую диаграмму с количеством постов по месяцам."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "id": "377ABjiVDWLP"
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 504x504 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def month_converter(i):\n",
    "    '''Функция переводит номер месяца в его название'''\n",
    "    i=i-1\n",
    "    months = ['Январь', \n",
    "              'Февраль', \n",
    "              'Март', \n",
    "              'Апрель', \n",
    "              'Май', \n",
    "              'Июнь', \n",
    "              'Июль', \n",
    "              'Август', \n",
    "              'Сентябрь', \n",
    "              'Октябрь', \n",
    "              'Ноябрь', \n",
    "              'Декабрь']\n",
    "    return months[i]\n",
    "# приводим номер месяца к целочисленному типу\n",
    "sample_df_9['creation_month'] = sample_df_9['creation_month'].astype('int')\n",
    "# создаем столбец с названием месяца\n",
    "sample_df_9['month'] = sample_df_9['creation_month'].apply(month_converter)\n",
    "# для удобства построения переводим месяцы в индексы\n",
    "sample_df_9.index = sample_df_9['month']\n",
    "sample_df_9['posts_count'].plot(kind = 'pie',  # строим \"пирог\"\n",
    "                                figsize = (7,7), # задаем размер графика\n",
    "                                title = 'Количество постов по месяцам в процентном соотношении',# заголовок\n",
    "                                autopct = '%1.1f%%')# определяем вид отображения, в данном случае - в процентах\n",
    "plt.ylabel('') # лишняя подпись\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "colab": {
   "name": "AdvancedSQLProjectTemplate (1).ipynb",
   "provenance": []
  },
  "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.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
