{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# How many Pro Players are out there ?\n",
    "\n",
    "On [PlayGwent]() only data from the top 2860 pro players is shared. Though it is like there are (many) more. We'll try using some data science on the MMR scores from players from previous seasons to estmate how many players are actually out there. This can be done because the very first season in Masters 2 (Season of the Wolf) the total number of active players (MMR 2400 indicating at least 25 games were played) was about that threshold (the lowest MMR that season is 2407).\n",
    "\n",
    "Assuming the distribution of MMR scores remains similar accross seasons, we can leverage that to estimate the total number of players for seasons where there were more players. The idea is to determine the percentage of players with an MMR higher than 9700, 9800, 9900, 10000 and 10100 from the first season and, using those percentages, extrapolate the number of players above those thresholds to the total number of players for other seasons."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# # When running on Binder: Uncomment and execute this cell to install packages required\n",
    "# import sys\n",
    "# !conda install --yes --prefix {sys.prefix} seaborn\n",
    "# !conda install --yes --prefix {sys.prefix} nb_black"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 2;\n",
       "                var nbb_unformatted_code = \"%load_ext nb_black\\n\\nimport pandas as pd\\nimport numpy as np\\nimport seaborn as sns\\nimport matplotlib.pyplot as plt\";\n",
       "                var nbb_formatted_code = \"%load_ext nb_black\\n\\nimport pandas as pd\\nimport numpy as np\\nimport seaborn as sns\\nimport matplotlib.pyplot as plt\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%load_ext nb_black\n",
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "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>season</th>\n",
       "      <th>min_mmr</th>\n",
       "      <th>max_mmr</th>\n",
       "      <th>num_matches</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>M2_01 Wolf 2020</td>\n",
       "      <td>2407</td>\n",
       "      <td>10484</td>\n",
       "      <td>699496</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>M2_02 Love 2020</td>\n",
       "      <td>7776</td>\n",
       "      <td>10537</td>\n",
       "      <td>769172</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>M2_03 Bear 2020</td>\n",
       "      <td>9427</td>\n",
       "      <td>10669</td>\n",
       "      <td>862283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>M2_04 Elf 2020</td>\n",
       "      <td>9666</td>\n",
       "      <td>10751</td>\n",
       "      <td>1004603</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>M2_05 Viper 2020</td>\n",
       "      <td>9635</td>\n",
       "      <td>10622</td>\n",
       "      <td>859640</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>M2_06 Magic 2020</td>\n",
       "      <td>9624</td>\n",
       "      <td>10597</td>\n",
       "      <td>793013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>M2_07 Griffin 2020</td>\n",
       "      <td>9698</td>\n",
       "      <td>10667</td>\n",
       "      <td>996516</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>M2_08 Draconid 2020</td>\n",
       "      <td>9666</td>\n",
       "      <td>10546</td>\n",
       "      <td>837545</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>M2_09 Dryad 2020</td>\n",
       "      <td>9678</td>\n",
       "      <td>10725</td>\n",
       "      <td>854593</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>M2_10 Cat 2020</td>\n",
       "      <td>9703</td>\n",
       "      <td>10804</td>\n",
       "      <td>928845</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>M2_11 Mahakam 2020</td>\n",
       "      <td>9706</td>\n",
       "      <td>10783</td>\n",
       "      <td>983150</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>M2_12 Wild Hunt 2020</td>\n",
       "      <td>9756</td>\n",
       "      <td>10724</td>\n",
       "      <td>1182353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>M3_01 Wolf 2021</td>\n",
       "      <td>9637</td>\n",
       "      <td>10653</td>\n",
       "      <td>808651</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>M3_02 Love 2021</td>\n",
       "      <td>9684</td>\n",
       "      <td>10714</td>\n",
       "      <td>917027</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>M3_03 Bear 2021</td>\n",
       "      <td>9637</td>\n",
       "      <td>10576</td>\n",
       "      <td>766502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>M3_04 Elf 2021</td>\n",
       "      <td>9686</td>\n",
       "      <td>10678</td>\n",
       "      <td>944323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>M3_05 Viper 2021</td>\n",
       "      <td>9701</td>\n",
       "      <td>10753</td>\n",
       "      <td>956484</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>M3_06 Magic 2021</td>\n",
       "      <td>9681</td>\n",
       "      <td>10632</td>\n",
       "      <td>869262</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>M3_07 Griffin 2021</td>\n",
       "      <td>9669</td>\n",
       "      <td>10633</td>\n",
       "      <td>856103</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>M3_08 Draconid 2021</td>\n",
       "      <td>9681</td>\n",
       "      <td>10767</td>\n",
       "      <td>911273</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>M3_09 Dryad 2021</td>\n",
       "      <td>9688</td>\n",
       "      <td>10809</td>\n",
       "      <td>940655</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>M3_10 Cat 2021</td>\n",
       "      <td>9614</td>\n",
       "      <td>10366</td>\n",
       "      <td>719696</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>M3_11 Mahakam 2021</td>\n",
       "      <td>9725</td>\n",
       "      <td>10580</td>\n",
       "      <td>1017256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>M3_12 Wild Hunt 2021</td>\n",
       "      <td>9735</td>\n",
       "      <td>10714</td>\n",
       "      <td>1044941</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>M4_01 Wolf 2022</td>\n",
       "      <td>9646</td>\n",
       "      <td>10684</td>\n",
       "      <td>883881</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  season  min_mmr  max_mmr  num_matches\n",
       "0        M2_01 Wolf 2020     2407    10484       699496\n",
       "1        M2_02 Love 2020     7776    10537       769172\n",
       "2        M2_03 Bear 2020     9427    10669       862283\n",
       "3         M2_04 Elf 2020     9666    10751      1004603\n",
       "4       M2_05 Viper 2020     9635    10622       859640\n",
       "5       M2_06 Magic 2020     9624    10597       793013\n",
       "6     M2_07 Griffin 2020     9698    10667       996516\n",
       "7    M2_08 Draconid 2020     9666    10546       837545\n",
       "8       M2_09 Dryad 2020     9678    10725       854593\n",
       "9         M2_10 Cat 2020     9703    10804       928845\n",
       "10    M2_11 Mahakam 2020     9706    10783       983150\n",
       "11  M2_12 Wild Hunt 2020     9756    10724      1182353\n",
       "12       M3_01 Wolf 2021     9637    10653       808651\n",
       "13       M3_02 Love 2021     9684    10714       917027\n",
       "14       M3_03 Bear 2021     9637    10576       766502\n",
       "15        M3_04 Elf 2021     9686    10678       944323\n",
       "16      M3_05 Viper 2021     9701    10753       956484\n",
       "17      M3_06 Magic 2021     9681    10632       869262\n",
       "18    M3_07 Griffin 2021     9669    10633       856103\n",
       "19   M3_08 Draconid 2021     9681    10767       911273\n",
       "20      M3_09 Dryad 2021     9688    10809       940655\n",
       "21        M3_10 Cat 2021     9614    10366       719696\n",
       "22    M3_11 Mahakam 2021     9725    10580      1017256\n",
       "23  M3_12 Wild Hunt 2021     9735    10714      1044941\n",
       "24       M4_01 Wolf 2022     9646    10684       883881"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 3;\n",
       "                var nbb_unformatted_code = \"df = pd.read_excel(\\\"./output/player_stats.xlsx\\\").drop(columns=[\\\"Unnamed: 0\\\"])\\nseasons_df = (\\n    df.groupby([\\\"season\\\"])\\n    .agg(\\n        min_mmr=pd.NamedAgg(\\\"mmr\\\", \\\"min\\\"),\\n        max_mmr=pd.NamedAgg(\\\"mmr\\\", \\\"max\\\"),\\n        num_matches=pd.NamedAgg(\\\"matches\\\", \\\"sum\\\"),\\n    )\\n    .reset_index()\\n)\\n\\nseasons_df\";\n",
       "                var nbb_formatted_code = \"df = pd.read_excel(\\\"./output/player_stats.xlsx\\\").drop(columns=[\\\"Unnamed: 0\\\"])\\nseasons_df = (\\n    df.groupby([\\\"season\\\"])\\n    .agg(\\n        min_mmr=pd.NamedAgg(\\\"mmr\\\", \\\"min\\\"),\\n        max_mmr=pd.NamedAgg(\\\"mmr\\\", \\\"max\\\"),\\n        num_matches=pd.NamedAgg(\\\"matches\\\", \\\"sum\\\"),\\n    )\\n    .reset_index()\\n)\\n\\nseasons_df\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "df = pd.read_excel(\"./output/player_stats.xlsx\").drop(columns=[\"Unnamed: 0\"])\n",
    "seasons_df = (\n",
    "    df.groupby([\"season\"])\n",
    "    .agg(\n",
    "        min_mmr=pd.NamedAgg(\"mmr\", \"min\"),\n",
    "        max_mmr=pd.NamedAgg(\"mmr\", \"max\"),\n",
    "        num_matches=pd.NamedAgg(\"matches\", \"sum\"),\n",
    "    )\n",
    "    .reset_index()\n",
    ")\n",
    "\n",
    "seasons_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\seaborn\\distributions.py:2619: FutureWarning: `distplot` is a deprecated function and will be removed in a future version. Please adapt your code to use either `displot` (a figure-level function with similar flexibility) or `histplot` (an axes-level function for histograms).\n",
      "  warnings.warn(msg, FutureWarning)\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 4;\n",
       "                var nbb_unformatted_code = \"sns.distplot(df[df[\\\"season\\\"] == \\\"M2_01 Wolf 2020\\\"][\\\"mmr\\\"], bins=50)\\nplt.show()\";\n",
       "                var nbb_formatted_code = \"sns.distplot(df[df[\\\"season\\\"] == \\\"M2_01 Wolf 2020\\\"][\\\"mmr\\\"], bins=50)\\nplt.show()\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.distplot(df[df[\"season\"] == \"M2_01 Wolf 2020\"][\"mmr\"], bins=50)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "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>percentile</th>\n",
       "      <th>mmr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2407.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.5</td>\n",
       "      <td>2413.285</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1.0</td>\n",
       "      <td>2426.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1.5</td>\n",
       "      <td>2447.855</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>2.0</td>\n",
       "      <td>2477.420</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>195</th>\n",
       "      <td>97.5</td>\n",
       "      <td>10037.575</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>196</th>\n",
       "      <td>98.0</td>\n",
       "      <td>10064.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>197</th>\n",
       "      <td>98.5</td>\n",
       "      <td>10088.145</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>198</th>\n",
       "      <td>99.0</td>\n",
       "      <td>10135.170</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>199</th>\n",
       "      <td>99.5</td>\n",
       "      <td>10290.865</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>200 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "     percentile        mmr\n",
       "0           0.0   2407.000\n",
       "1           0.5   2413.285\n",
       "2           1.0   2426.000\n",
       "3           1.5   2447.855\n",
       "4           2.0   2477.420\n",
       "..          ...        ...\n",
       "195        97.5  10037.575\n",
       "196        98.0  10064.000\n",
       "197        98.5  10088.145\n",
       "198        99.0  10135.170\n",
       "199        99.5  10290.865\n",
       "\n",
       "[200 rows x 2 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 5;\n",
       "                var nbb_unformatted_code = \"percentiles = np.percentile(\\n    df[df[\\\"season\\\"] == \\\"M2_01 Wolf 2020\\\"][\\\"mmr\\\"], [x / 2 for x in range(0, 200, 1)]\\n)\\npercentiles_df = pd.DataFrame(\\n    {\\\"percentile\\\": [x / 2 for x in range(0, 200, 1)], \\\"mmr\\\": percentiles}\\n)\\npercentiles_df.to_excel(\\\"temp.xlsx\\\")\\npercentiles_df\";\n",
       "                var nbb_formatted_code = \"percentiles = np.percentile(\\n    df[df[\\\"season\\\"] == \\\"M2_01 Wolf 2020\\\"][\\\"mmr\\\"], [x / 2 for x in range(0, 200, 1)]\\n)\\npercentiles_df = pd.DataFrame(\\n    {\\\"percentile\\\": [x / 2 for x in range(0, 200, 1)], \\\"mmr\\\": percentiles}\\n)\\npercentiles_df.to_excel(\\\"temp.xlsx\\\")\\npercentiles_df\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "percentiles = np.percentile(\n",
    "    df[df[\"season\"] == \"M2_01 Wolf 2020\"][\"mmr\"], [x / 2 for x in range(0, 200, 1)]\n",
    ")\n",
    "percentiles_df = pd.DataFrame(\n",
    "    {\"percentile\": [x / 2 for x in range(0, 200, 1)], \"mmr\": percentiles}\n",
    ")\n",
    "percentiles_df.to_excel(\"temp.xlsx\")\n",
    "percentiles_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Test case\n",
    "\n",
    "To test if the method actually worked, I got into Pro Rank during the Season of the Dryad and stopped playing ranked (actually stopped playing that season entirely as I didn't have time to climb). The result was that I had an unimpressive MMR of 3360, good for rank of 12816. If our estimates work we should get a number that is in that order of magnitude. \n",
    "\n",
    "We'll check the percentage of players who are at MMR 9678 during the first season (74 percent is at or below this threshold, so 26 is above. So if the total number of players listed, 2 860 corresponds with 26 % of the total Pro players, we can quickly figure out the total number of player should be around 11 000. Still some ways off the total number I know by getting into Pro Rank and staying there. Actually, using the same trick we can use the MMR I got and the position to get an approximation of 13782 Pro Players with MMR 2400 or above that season. However, for now this is close enough."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "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>percentile</th>\n",
       "      <th>mmr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>148</th>\n",
       "      <td>74.0</td>\n",
       "      <td>9678.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "     percentile     mmr\n",
       "148        74.0  9678.0"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 6;\n",
       "                var nbb_unformatted_code = \"# MMR cutoff to appear on pro ladder during the Season of the Dryad = 9678\\npercentiles_df[percentiles_df.mmr >= 9678][:1]\";\n",
       "                var nbb_formatted_code = \"# MMR cutoff to appear on pro ladder during the Season of the Dryad = 9678\\npercentiles_df[percentiles_df.mmr >= 9678][:1]\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# MMR cutoff to appear on pro ladder during the Season of the Dryad = 9678\n",
    "percentiles_df[percentiles_df.mmr >= 9678][:1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "11000.0"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 7;\n",
       "                var nbb_unformatted_code = \"(2860 / 26) * 100\";\n",
       "                var nbb_formatted_code = \"(2860 / 26) * 100\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "(2860 / 26) * 100"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Using multiple cutoffs\n",
    "\n",
    "As small changes in the number of players can cause a big shift, here we'll use multiple MMR cutoffs to make the estimations and do some statistics on them to see if we can get close to the total number of players we are aware off."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 8;\n",
       "                var nbb_unformatted_code = \"seasons = list(set(df[\\\"season\\\"]))\\n\\noutput = []\\n\\nfor i in [9700, 9800, 9900, 10000, 10100]:\\n    for season in seasons:\\n        players_above_threshold = (\\n            df[(df.season == season) & (df.mmr >= i)]\\n            .groupby([\\\"season\\\"])\\n            .agg(num_players=pd.NamedAgg(\\\"mmr\\\", \\\"count\\\"))\\n            .reset_index()\\n        ).iloc[0][\\\"num_players\\\"]\\n        percentile = int(100 - percentiles_df[percentiles_df.mmr > i][:1][\\\"percentile\\\"])\\n\\n        output.append(\\n            {\\n                \\\"season\\\": season,\\n                \\\"mmr_cutoff\\\": i,\\n                \\\"num_players\\\": players_above_threshold,\\n                \\\"total_players_est\\\": players_above_threshold * 100 / percentile,\\n            }\\n        )\\n\\nestimates_df = pd.DataFrame(output).sort_values(\\\"season\\\")\";\n",
       "                var nbb_formatted_code = \"seasons = list(set(df[\\\"season\\\"]))\\n\\noutput = []\\n\\nfor i in [9700, 9800, 9900, 10000, 10100]:\\n    for season in seasons:\\n        players_above_threshold = (\\n            df[(df.season == season) & (df.mmr >= i)]\\n            .groupby([\\\"season\\\"])\\n            .agg(num_players=pd.NamedAgg(\\\"mmr\\\", \\\"count\\\"))\\n            .reset_index()\\n        ).iloc[0][\\\"num_players\\\"]\\n        percentile = int(100 - percentiles_df[percentiles_df.mmr > i][:1][\\\"percentile\\\"])\\n\\n        output.append(\\n            {\\n                \\\"season\\\": season,\\n                \\\"mmr_cutoff\\\": i,\\n                \\\"num_players\\\": players_above_threshold,\\n                \\\"total_players_est\\\": players_above_threshold * 100 / percentile,\\n            }\\n        )\\n\\nestimates_df = pd.DataFrame(output).sort_values(\\\"season\\\")\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "seasons = list(set(df[\"season\"]))\n",
    "\n",
    "output = []\n",
    "\n",
    "for i in [9700, 9800, 9900, 10000, 10100]:\n",
    "    for season in seasons:\n",
    "        players_above_threshold = (\n",
    "            df[(df.season == season) & (df.mmr >= i)]\n",
    "            .groupby([\"season\"])\n",
    "            .agg(num_players=pd.NamedAgg(\"mmr\", \"count\"))\n",
    "            .reset_index()\n",
    "        ).iloc[0][\"num_players\"]\n",
    "        percentile = int(100 - percentiles_df[percentiles_df.mmr > i][:1][\"percentile\"])\n",
    "\n",
    "        output.append(\n",
    "            {\n",
    "                \"season\": season,\n",
    "                \"mmr_cutoff\": i,\n",
    "                \"num_players\": players_above_threshold,\n",
    "                \"total_players_est\": players_above_threshold * 100 / percentile,\n",
    "            }\n",
    "        )\n",
    "\n",
    "estimates_df = pd.DataFrame(output).sort_values(\"season\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "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>season</th>\n",
       "      <th>low_estimate</th>\n",
       "      <th>high_estimate</th>\n",
       "      <th>mean_estimate</th>\n",
       "      <th>std_err</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>M2_01 Wolf 2020</td>\n",
       "      <td>2900.000000</td>\n",
       "      <td>3600.0</td>\n",
       "      <td>3117.636364</td>\n",
       "      <td>124.944153</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>M2_02 Love 2020</td>\n",
       "      <td>4566.666667</td>\n",
       "      <td>7100.0</td>\n",
       "      <td>5620.242424</td>\n",
       "      <td>441.315936</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>M2_03 Bear 2020</td>\n",
       "      <td>6036.363636</td>\n",
       "      <td>10300.0</td>\n",
       "      <td>7329.272727</td>\n",
       "      <td>760.229978</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>M2_04 Elf 2020</td>\n",
       "      <td>9927.272727</td>\n",
       "      <td>18000.0</td>\n",
       "      <td>12319.454545</td>\n",
       "      <td>1494.370140</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>M2_05 Viper 2020</td>\n",
       "      <td>7766.666667</td>\n",
       "      <td>11400.0</td>\n",
       "      <td>9372.060606</td>\n",
       "      <td>727.332197</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>M2_06 Magic 2020</td>\n",
       "      <td>6800.000000</td>\n",
       "      <td>9800.0</td>\n",
       "      <td>8320.181818</td>\n",
       "      <td>618.201230</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>M2_07 Griffin 2020</td>\n",
       "      <td>12836.363636</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>14683.272727</td>\n",
       "      <td>1331.618216</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>M2_08 Draconid 2020</td>\n",
       "      <td>9566.666667</td>\n",
       "      <td>13300.0</td>\n",
       "      <td>11186.242424</td>\n",
       "      <td>696.853229</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>M2_09 Dryad 2020</td>\n",
       "      <td>9733.333333</td>\n",
       "      <td>12580.0</td>\n",
       "      <td>11218.666667</td>\n",
       "      <td>458.757501</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>M2_10 Cat 2020</td>\n",
       "      <td>12800.000000</td>\n",
       "      <td>14620.0</td>\n",
       "      <td>13774.181818</td>\n",
       "      <td>369.275995</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>M2_11 Mahakam 2020</td>\n",
       "      <td>12995.454545</td>\n",
       "      <td>18900.0</td>\n",
       "      <td>16041.757576</td>\n",
       "      <td>976.287680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>M2_12 Wild Hunt 2020</td>\n",
       "      <td>12995.454545</td>\n",
       "      <td>35900.0</td>\n",
       "      <td>23051.757576</td>\n",
       "      <td>3678.743988</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>M3_01 Wolf 2021</td>\n",
       "      <td>7968.181818</td>\n",
       "      <td>13700.0</td>\n",
       "      <td>9929.636364</td>\n",
       "      <td>1046.105394</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>M3_02 Love 2021</td>\n",
       "      <td>11645.454545</td>\n",
       "      <td>19500.0</td>\n",
       "      <td>13977.757576</td>\n",
       "      <td>1430.087791</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>M3_03 Bear 2021</td>\n",
       "      <td>7466.666667</td>\n",
       "      <td>10900.0</td>\n",
       "      <td>9195.333333</td>\n",
       "      <td>715.137594</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>M3_04 Elf 2021</td>\n",
       "      <td>11586.363636</td>\n",
       "      <td>20300.0</td>\n",
       "      <td>14814.606061</td>\n",
       "      <td>1527.809485</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>M3_05 Viper 2021</td>\n",
       "      <td>12990.909091</td>\n",
       "      <td>20900.0</td>\n",
       "      <td>16159.515152</td>\n",
       "      <td>1322.547676</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>M3_06 Magic 2021</td>\n",
       "      <td>11263.636364</td>\n",
       "      <td>17200.0</td>\n",
       "      <td>13526.060606</td>\n",
       "      <td>1034.558786</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>M3_07 Griffin 2021</td>\n",
       "      <td>10140.909091</td>\n",
       "      <td>15800.0</td>\n",
       "      <td>12241.515152</td>\n",
       "      <td>1040.267969</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>M3_08 Draconid 2021</td>\n",
       "      <td>11200.000000</td>\n",
       "      <td>16900.0</td>\n",
       "      <td>12854.545455</td>\n",
       "      <td>1051.176279</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>M3_09 Dryad 2021</td>\n",
       "      <td>11868.181818</td>\n",
       "      <td>15900.0</td>\n",
       "      <td>13442.969697</td>\n",
       "      <td>746.264455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>M3_10 Cat 2021</td>\n",
       "      <td>5100.000000</td>\n",
       "      <td>7770.0</td>\n",
       "      <td>6559.939394</td>\n",
       "      <td>575.186402</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>M3_11 Mahakam 2021</td>\n",
       "      <td>12981.818182</td>\n",
       "      <td>23300.0</td>\n",
       "      <td>17920.363636</td>\n",
       "      <td>1647.708090</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>M3_12 Wild Hunt 2021</td>\n",
       "      <td>12981.818182</td>\n",
       "      <td>27500.0</td>\n",
       "      <td>19567.696970</td>\n",
       "      <td>2331.781053</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>M4_01 Wolf 2022</td>\n",
       "      <td>8690.909091</td>\n",
       "      <td>18900.0</td>\n",
       "      <td>12063.515152</td>\n",
       "      <td>1789.893240</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  season  low_estimate  high_estimate  mean_estimate  \\\n",
       "0        M2_01 Wolf 2020   2900.000000         3600.0    3117.636364   \n",
       "1        M2_02 Love 2020   4566.666667         7100.0    5620.242424   \n",
       "2        M2_03 Bear 2020   6036.363636        10300.0    7329.272727   \n",
       "3         M2_04 Elf 2020   9927.272727        18000.0   12319.454545   \n",
       "4       M2_05 Viper 2020   7766.666667        11400.0    9372.060606   \n",
       "5       M2_06 Magic 2020   6800.000000         9800.0    8320.181818   \n",
       "6     M2_07 Griffin 2020  12836.363636        19900.0   14683.272727   \n",
       "7    M2_08 Draconid 2020   9566.666667        13300.0   11186.242424   \n",
       "8       M2_09 Dryad 2020   9733.333333        12580.0   11218.666667   \n",
       "9         M2_10 Cat 2020  12800.000000        14620.0   13774.181818   \n",
       "10    M2_11 Mahakam 2020  12995.454545        18900.0   16041.757576   \n",
       "11  M2_12 Wild Hunt 2020  12995.454545        35900.0   23051.757576   \n",
       "12       M3_01 Wolf 2021   7968.181818        13700.0    9929.636364   \n",
       "13       M3_02 Love 2021  11645.454545        19500.0   13977.757576   \n",
       "14       M3_03 Bear 2021   7466.666667        10900.0    9195.333333   \n",
       "15        M3_04 Elf 2021  11586.363636        20300.0   14814.606061   \n",
       "16      M3_05 Viper 2021  12990.909091        20900.0   16159.515152   \n",
       "17      M3_06 Magic 2021  11263.636364        17200.0   13526.060606   \n",
       "18    M3_07 Griffin 2021  10140.909091        15800.0   12241.515152   \n",
       "19   M3_08 Draconid 2021  11200.000000        16900.0   12854.545455   \n",
       "20      M3_09 Dryad 2021  11868.181818        15900.0   13442.969697   \n",
       "21        M3_10 Cat 2021   5100.000000         7770.0    6559.939394   \n",
       "22    M3_11 Mahakam 2021  12981.818182        23300.0   17920.363636   \n",
       "23  M3_12 Wild Hunt 2021  12981.818182        27500.0   19567.696970   \n",
       "24       M4_01 Wolf 2022   8690.909091        18900.0   12063.515152   \n",
       "\n",
       "        std_err  \n",
       "0    124.944153  \n",
       "1    441.315936  \n",
       "2    760.229978  \n",
       "3   1494.370140  \n",
       "4    727.332197  \n",
       "5    618.201230  \n",
       "6   1331.618216  \n",
       "7    696.853229  \n",
       "8    458.757501  \n",
       "9    369.275995  \n",
       "10   976.287680  \n",
       "11  3678.743988  \n",
       "12  1046.105394  \n",
       "13  1430.087791  \n",
       "14   715.137594  \n",
       "15  1527.809485  \n",
       "16  1322.547676  \n",
       "17  1034.558786  \n",
       "18  1040.267969  \n",
       "19  1051.176279  \n",
       "20   746.264455  \n",
       "21   575.186402  \n",
       "22  1647.708090  \n",
       "23  2331.781053  \n",
       "24  1789.893240  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 9;\n",
       "                var nbb_unformatted_code = \"estimate_summary = (\\n    estimates_df.groupby([\\\"season\\\"])\\n    .agg(\\n        low_estimate=pd.NamedAgg(\\\"total_players_est\\\", \\\"min\\\"),\\n        high_estimate=pd.NamedAgg(\\\"total_players_est\\\", \\\"max\\\"),\\n        mean_estimate=pd.NamedAgg(\\\"total_players_est\\\", \\\"mean\\\"),\\n        std_err=pd.NamedAgg(\\\"total_players_est\\\", \\\"sem\\\"),\\n    )\\n    .reset_index()\\n)\\nestimate_summary.to_excel(\\\"./output/player_estimates.xlsx\\\")\\nestimate_summary\";\n",
       "                var nbb_formatted_code = \"estimate_summary = (\\n    estimates_df.groupby([\\\"season\\\"])\\n    .agg(\\n        low_estimate=pd.NamedAgg(\\\"total_players_est\\\", \\\"min\\\"),\\n        high_estimate=pd.NamedAgg(\\\"total_players_est\\\", \\\"max\\\"),\\n        mean_estimate=pd.NamedAgg(\\\"total_players_est\\\", \\\"mean\\\"),\\n        std_err=pd.NamedAgg(\\\"total_players_est\\\", \\\"sem\\\"),\\n    )\\n    .reset_index()\\n)\\nestimate_summary.to_excel(\\\"./output/player_estimates.xlsx\\\")\\nestimate_summary\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "estimate_summary = (\n",
    "    estimates_df.groupby([\"season\"])\n",
    "    .agg(\n",
    "        low_estimate=pd.NamedAgg(\"total_players_est\", \"min\"),\n",
    "        high_estimate=pd.NamedAgg(\"total_players_est\", \"max\"),\n",
    "        mean_estimate=pd.NamedAgg(\"total_players_est\", \"mean\"),\n",
    "        std_err=pd.NamedAgg(\"total_players_est\", \"sem\"),\n",
    "    )\n",
    "    .reset_index()\n",
    ")\n",
    "estimate_summary.to_excel(\"./output/player_estimates.xlsx\")\n",
    "estimate_summary"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Results ... maybe ...\n",
    "\n",
    "So here we can see the minimum and maximum estimated numbers of Pro Players can differ a lot, and for the season of the Dryad even the max estimate is still at least 1000 players shy of the ground truth. Though, given the scarcity of data to work with and some of the assumptions we need to make (it is unlikely that the discribution remains exactly the same as buffs/nerfs to cards and new cards could affect how easy it is to reach a certain fMMR with specific factions) it is the best that can be done with the data at hand and it is probably close enough.\n",
    "\n",
    "One thing I wanted to check if if there is a correlation between the number of games played by the top 2860 players and the estimated total number of players. This can easily be done by mergin our estimations with the number of players in the season summaries and plotting them using a scatter plot (or regplot to have a regression line in the plot). We'll do this for the top 500 players seperately as well to see if the trend holds for that section of the players."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "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>season</th>\n",
       "      <th>min_mmr</th>\n",
       "      <th>max_mmr</th>\n",
       "      <th>num_matches</th>\n",
       "      <th>num_matches_top500</th>\n",
       "      <th>low_estimate</th>\n",
       "      <th>high_estimate</th>\n",
       "      <th>mean_estimate</th>\n",
       "      <th>std_err</th>\n",
       "      <th>Masters</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>M2_01 Wolf 2020</td>\n",
       "      <td>2407</td>\n",
       "      <td>10484</td>\n",
       "      <td>699496</td>\n",
       "      <td>178323</td>\n",
       "      <td>2900.000000</td>\n",
       "      <td>3600.0</td>\n",
       "      <td>3117.636364</td>\n",
       "      <td>124.944153</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>M2_02 Love 2020</td>\n",
       "      <td>7776</td>\n",
       "      <td>10537</td>\n",
       "      <td>769172</td>\n",
       "      <td>183972</td>\n",
       "      <td>4566.666667</td>\n",
       "      <td>7100.0</td>\n",
       "      <td>5620.242424</td>\n",
       "      <td>441.315936</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>M2_03 Bear 2020</td>\n",
       "      <td>9427</td>\n",
       "      <td>10669</td>\n",
       "      <td>862283</td>\n",
       "      <td>205439</td>\n",
       "      <td>6036.363636</td>\n",
       "      <td>10300.0</td>\n",
       "      <td>7329.272727</td>\n",
       "      <td>760.229978</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>M2_04 Elf 2020</td>\n",
       "      <td>9666</td>\n",
       "      <td>10751</td>\n",
       "      <td>1004603</td>\n",
       "      <td>251712</td>\n",
       "      <td>9927.272727</td>\n",
       "      <td>18000.0</td>\n",
       "      <td>12319.454545</td>\n",
       "      <td>1494.370140</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>M2_05 Viper 2020</td>\n",
       "      <td>9635</td>\n",
       "      <td>10622</td>\n",
       "      <td>859640</td>\n",
       "      <td>207622</td>\n",
       "      <td>7766.666667</td>\n",
       "      <td>11400.0</td>\n",
       "      <td>9372.060606</td>\n",
       "      <td>727.332197</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>M2_06 Magic 2020</td>\n",
       "      <td>9624</td>\n",
       "      <td>10597</td>\n",
       "      <td>793013</td>\n",
       "      <td>188536</td>\n",
       "      <td>6800.000000</td>\n",
       "      <td>9800.0</td>\n",
       "      <td>8320.181818</td>\n",
       "      <td>618.201230</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>M2_07 Griffin 2020</td>\n",
       "      <td>9698</td>\n",
       "      <td>10667</td>\n",
       "      <td>996516</td>\n",
       "      <td>259713</td>\n",
       "      <td>12836.363636</td>\n",
       "      <td>19900.0</td>\n",
       "      <td>14683.272727</td>\n",
       "      <td>1331.618216</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>M2_08 Draconid 2020</td>\n",
       "      <td>9666</td>\n",
       "      <td>10546</td>\n",
       "      <td>837545</td>\n",
       "      <td>209785</td>\n",
       "      <td>9566.666667</td>\n",
       "      <td>13300.0</td>\n",
       "      <td>11186.242424</td>\n",
       "      <td>696.853229</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>M2_09 Dryad 2020</td>\n",
       "      <td>9678</td>\n",
       "      <td>10725</td>\n",
       "      <td>854593</td>\n",
       "      <td>202099</td>\n",
       "      <td>9733.333333</td>\n",
       "      <td>12580.0</td>\n",
       "      <td>11218.666667</td>\n",
       "      <td>458.757501</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>M2_10 Cat 2020</td>\n",
       "      <td>9703</td>\n",
       "      <td>10804</td>\n",
       "      <td>928845</td>\n",
       "      <td>213867</td>\n",
       "      <td>12800.000000</td>\n",
       "      <td>14620.0</td>\n",
       "      <td>13774.181818</td>\n",
       "      <td>369.275995</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>M2_11 Mahakam 2020</td>\n",
       "      <td>9706</td>\n",
       "      <td>10783</td>\n",
       "      <td>983150</td>\n",
       "      <td>230710</td>\n",
       "      <td>12995.454545</td>\n",
       "      <td>18900.0</td>\n",
       "      <td>16041.757576</td>\n",
       "      <td>976.287680</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>M2_12 Wild Hunt 2020</td>\n",
       "      <td>9756</td>\n",
       "      <td>10724</td>\n",
       "      <td>1182353</td>\n",
       "      <td>290718</td>\n",
       "      <td>12995.454545</td>\n",
       "      <td>35900.0</td>\n",
       "      <td>23051.757576</td>\n",
       "      <td>3678.743988</td>\n",
       "      <td>M2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>M3_01 Wolf 2021</td>\n",
       "      <td>9637</td>\n",
       "      <td>10653</td>\n",
       "      <td>808651</td>\n",
       "      <td>224998</td>\n",
       "      <td>7968.181818</td>\n",
       "      <td>13700.0</td>\n",
       "      <td>9929.636364</td>\n",
       "      <td>1046.105394</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>M3_02 Love 2021</td>\n",
       "      <td>9684</td>\n",
       "      <td>10714</td>\n",
       "      <td>917027</td>\n",
       "      <td>243266</td>\n",
       "      <td>11645.454545</td>\n",
       "      <td>19500.0</td>\n",
       "      <td>13977.757576</td>\n",
       "      <td>1430.087791</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>M3_03 Bear 2021</td>\n",
       "      <td>9637</td>\n",
       "      <td>10576</td>\n",
       "      <td>766502</td>\n",
       "      <td>189128</td>\n",
       "      <td>7466.666667</td>\n",
       "      <td>10900.0</td>\n",
       "      <td>9195.333333</td>\n",
       "      <td>715.137594</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>M3_04 Elf 2021</td>\n",
       "      <td>9686</td>\n",
       "      <td>10678</td>\n",
       "      <td>944323</td>\n",
       "      <td>242792</td>\n",
       "      <td>11586.363636</td>\n",
       "      <td>20300.0</td>\n",
       "      <td>14814.606061</td>\n",
       "      <td>1527.809485</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>M3_05 Viper 2021</td>\n",
       "      <td>9701</td>\n",
       "      <td>10753</td>\n",
       "      <td>956484</td>\n",
       "      <td>240472</td>\n",
       "      <td>12990.909091</td>\n",
       "      <td>20900.0</td>\n",
       "      <td>16159.515152</td>\n",
       "      <td>1322.547676</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>M3_06 Magic 2021</td>\n",
       "      <td>9681</td>\n",
       "      <td>10632</td>\n",
       "      <td>869262</td>\n",
       "      <td>215751</td>\n",
       "      <td>11263.636364</td>\n",
       "      <td>17200.0</td>\n",
       "      <td>13526.060606</td>\n",
       "      <td>1034.558786</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>M3_07 Griffin 2021</td>\n",
       "      <td>9669</td>\n",
       "      <td>10633</td>\n",
       "      <td>856103</td>\n",
       "      <td>212764</td>\n",
       "      <td>10140.909091</td>\n",
       "      <td>15800.0</td>\n",
       "      <td>12241.515152</td>\n",
       "      <td>1040.267969</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>M3_08 Draconid 2021</td>\n",
       "      <td>9681</td>\n",
       "      <td>10767</td>\n",
       "      <td>911273</td>\n",
       "      <td>232360</td>\n",
       "      <td>11200.000000</td>\n",
       "      <td>16900.0</td>\n",
       "      <td>12854.545455</td>\n",
       "      <td>1051.176279</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>M3_09 Dryad 2021</td>\n",
       "      <td>9688</td>\n",
       "      <td>10809</td>\n",
       "      <td>940655</td>\n",
       "      <td>223832</td>\n",
       "      <td>11868.181818</td>\n",
       "      <td>15900.0</td>\n",
       "      <td>13442.969697</td>\n",
       "      <td>746.264455</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>M3_10 Cat 2021</td>\n",
       "      <td>9614</td>\n",
       "      <td>10366</td>\n",
       "      <td>719696</td>\n",
       "      <td>149104</td>\n",
       "      <td>5100.000000</td>\n",
       "      <td>7770.0</td>\n",
       "      <td>6559.939394</td>\n",
       "      <td>575.186402</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>M3_11 Mahakam 2021</td>\n",
       "      <td>9725</td>\n",
       "      <td>10580</td>\n",
       "      <td>1017256</td>\n",
       "      <td>247078</td>\n",
       "      <td>12981.818182</td>\n",
       "      <td>23300.0</td>\n",
       "      <td>17920.363636</td>\n",
       "      <td>1647.708090</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>M3_12 Wild Hunt 2021</td>\n",
       "      <td>9735</td>\n",
       "      <td>10714</td>\n",
       "      <td>1044941</td>\n",
       "      <td>258469</td>\n",
       "      <td>12981.818182</td>\n",
       "      <td>27500.0</td>\n",
       "      <td>19567.696970</td>\n",
       "      <td>2331.781053</td>\n",
       "      <td>M3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>M4_01 Wolf 2022</td>\n",
       "      <td>9646</td>\n",
       "      <td>10684</td>\n",
       "      <td>883881</td>\n",
       "      <td>226411</td>\n",
       "      <td>8690.909091</td>\n",
       "      <td>18900.0</td>\n",
       "      <td>12063.515152</td>\n",
       "      <td>1789.893240</td>\n",
       "      <td>M4</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  season  min_mmr  max_mmr  num_matches  num_matches_top500  \\\n",
       "0        M2_01 Wolf 2020     2407    10484       699496              178323   \n",
       "1        M2_02 Love 2020     7776    10537       769172              183972   \n",
       "2        M2_03 Bear 2020     9427    10669       862283              205439   \n",
       "3         M2_04 Elf 2020     9666    10751      1004603              251712   \n",
       "4       M2_05 Viper 2020     9635    10622       859640              207622   \n",
       "5       M2_06 Magic 2020     9624    10597       793013              188536   \n",
       "6     M2_07 Griffin 2020     9698    10667       996516              259713   \n",
       "7    M2_08 Draconid 2020     9666    10546       837545              209785   \n",
       "8       M2_09 Dryad 2020     9678    10725       854593              202099   \n",
       "9         M2_10 Cat 2020     9703    10804       928845              213867   \n",
       "10    M2_11 Mahakam 2020     9706    10783       983150              230710   \n",
       "11  M2_12 Wild Hunt 2020     9756    10724      1182353              290718   \n",
       "12       M3_01 Wolf 2021     9637    10653       808651              224998   \n",
       "13       M3_02 Love 2021     9684    10714       917027              243266   \n",
       "14       M3_03 Bear 2021     9637    10576       766502              189128   \n",
       "15        M3_04 Elf 2021     9686    10678       944323              242792   \n",
       "16      M3_05 Viper 2021     9701    10753       956484              240472   \n",
       "17      M3_06 Magic 2021     9681    10632       869262              215751   \n",
       "18    M3_07 Griffin 2021     9669    10633       856103              212764   \n",
       "19   M3_08 Draconid 2021     9681    10767       911273              232360   \n",
       "20      M3_09 Dryad 2021     9688    10809       940655              223832   \n",
       "21        M3_10 Cat 2021     9614    10366       719696              149104   \n",
       "22    M3_11 Mahakam 2021     9725    10580      1017256              247078   \n",
       "23  M3_12 Wild Hunt 2021     9735    10714      1044941              258469   \n",
       "24       M4_01 Wolf 2022     9646    10684       883881              226411   \n",
       "\n",
       "    low_estimate  high_estimate  mean_estimate      std_err Masters  \n",
       "0    2900.000000         3600.0    3117.636364   124.944153      M2  \n",
       "1    4566.666667         7100.0    5620.242424   441.315936      M2  \n",
       "2    6036.363636        10300.0    7329.272727   760.229978      M2  \n",
       "3    9927.272727        18000.0   12319.454545  1494.370140      M2  \n",
       "4    7766.666667        11400.0    9372.060606   727.332197      M2  \n",
       "5    6800.000000         9800.0    8320.181818   618.201230      M2  \n",
       "6   12836.363636        19900.0   14683.272727  1331.618216      M2  \n",
       "7    9566.666667        13300.0   11186.242424   696.853229      M2  \n",
       "8    9733.333333        12580.0   11218.666667   458.757501      M2  \n",
       "9   12800.000000        14620.0   13774.181818   369.275995      M2  \n",
       "10  12995.454545        18900.0   16041.757576   976.287680      M2  \n",
       "11  12995.454545        35900.0   23051.757576  3678.743988      M2  \n",
       "12   7968.181818        13700.0    9929.636364  1046.105394      M3  \n",
       "13  11645.454545        19500.0   13977.757576  1430.087791      M3  \n",
       "14   7466.666667        10900.0    9195.333333   715.137594      M3  \n",
       "15  11586.363636        20300.0   14814.606061  1527.809485      M3  \n",
       "16  12990.909091        20900.0   16159.515152  1322.547676      M3  \n",
       "17  11263.636364        17200.0   13526.060606  1034.558786      M3  \n",
       "18  10140.909091        15800.0   12241.515152  1040.267969      M3  \n",
       "19  11200.000000        16900.0   12854.545455  1051.176279      M3  \n",
       "20  11868.181818        15900.0   13442.969697   746.264455      M3  \n",
       "21   5100.000000         7770.0    6559.939394   575.186402      M3  \n",
       "22  12981.818182        23300.0   17920.363636  1647.708090      M3  \n",
       "23  12981.818182        27500.0   19567.696970  2331.781053      M3  \n",
       "24   8690.909091        18900.0   12063.515152  1789.893240      M4  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 13;\n",
       "                var nbb_unformatted_code = \"# same thing but only considering the top 500 players\\nseasons_top500only_df = (\\n    df[pd.to_numeric(df[\\\"rank\\\"]) <= 500]\\n    .groupby([\\\"season\\\"])\\n    .agg(\\n        min_mmr=pd.NamedAgg(\\\"mmr\\\", \\\"min\\\"),\\n        max_mmr=pd.NamedAgg(\\\"mmr\\\", \\\"max\\\"),\\n        num_matches=pd.NamedAgg(\\\"matches\\\", \\\"sum\\\"),\\n    )\\n    .reset_index()\\n)\\n\\nmerged_df = pd.merge(\\n    seasons_df,\\n    seasons_top500only_df,\\n    how=\\\"inner\\\",\\n    on=\\\"season\\\",\\n    suffixes=(\\\"\\\", \\\"_top500\\\"),\\n)\\nmerged_df = pd.merge(merged_df, estimate_summary, how=\\\"inner\\\", on=\\\"season\\\").drop(\\n    columns=[\\\"min_mmr_top500\\\", \\\"max_mmr_top500\\\"]\\n)\\n\\nmerged_df[\\\"Masters\\\"] = merged_df[\\\"season\\\"].apply(lambda x: x.split('_')[0])\\n\\nmerged_df\";\n",
       "                var nbb_formatted_code = \"# same thing but only considering the top 500 players\\nseasons_top500only_df = (\\n    df[pd.to_numeric(df[\\\"rank\\\"]) <= 500]\\n    .groupby([\\\"season\\\"])\\n    .agg(\\n        min_mmr=pd.NamedAgg(\\\"mmr\\\", \\\"min\\\"),\\n        max_mmr=pd.NamedAgg(\\\"mmr\\\", \\\"max\\\"),\\n        num_matches=pd.NamedAgg(\\\"matches\\\", \\\"sum\\\"),\\n    )\\n    .reset_index()\\n)\\n\\nmerged_df = pd.merge(\\n    seasons_df,\\n    seasons_top500only_df,\\n    how=\\\"inner\\\",\\n    on=\\\"season\\\",\\n    suffixes=(\\\"\\\", \\\"_top500\\\"),\\n)\\nmerged_df = pd.merge(merged_df, estimate_summary, how=\\\"inner\\\", on=\\\"season\\\").drop(\\n    columns=[\\\"min_mmr_top500\\\", \\\"max_mmr_top500\\\"]\\n)\\n\\nmerged_df[\\\"Masters\\\"] = merged_df[\\\"season\\\"].apply(lambda x: x.split(\\\"_\\\")[0])\\n\\nmerged_df\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# same thing but only considering the top 500 players\n",
    "seasons_top500only_df = (\n",
    "    df[pd.to_numeric(df[\"rank\"]) <= 500]\n",
    "    .groupby([\"season\"])\n",
    "    .agg(\n",
    "        min_mmr=pd.NamedAgg(\"mmr\", \"min\"),\n",
    "        max_mmr=pd.NamedAgg(\"mmr\", \"max\"),\n",
    "        num_matches=pd.NamedAgg(\"matches\", \"sum\"),\n",
    "    )\n",
    "    .reset_index()\n",
    ")\n",
    "\n",
    "merged_df = pd.merge(\n",
    "    seasons_df,\n",
    "    seasons_top500only_df,\n",
    "    how=\"inner\",\n",
    "    on=\"season\",\n",
    "    suffixes=(\"\", \"_top500\"),\n",
    ")\n",
    "merged_df = pd.merge(merged_df, estimate_summary, how=\"inner\", on=\"season\").drop(\n",
    "    columns=[\"min_mmr_top500\", \"max_mmr_top500\"]\n",
    ")\n",
    "\n",
    "merged_df[\"Masters\"] = merged_df[\"season\"].apply(lambda x: x.split(\"_\")[0])\n",
    "\n",
    "merged_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 15;\n",
       "                var nbb_unformatted_code = \"sns.regplot(data=merged_df, x=\\\"num_matches\\\", y=\\\"high_estimate\\\",    scatter=False,\\n    color=\\\".25\\\",)\\nsns.scatterplot(\\n    data=merged_df, x=\\\"num_matches\\\", y=\\\"high_estimate\\\", hue=\\\"Masters\\\"\\n)\\nplt.show()\";\n",
       "                var nbb_formatted_code = \"sns.regplot(\\n    data=merged_df, x=\\\"num_matches\\\", y=\\\"high_estimate\\\", scatter=False, color=\\\".25\\\",\\n)\\nsns.scatterplot(data=merged_df, x=\\\"num_matches\\\", y=\\\"high_estimate\\\", hue=\\\"Masters\\\")\\nplt.show()\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(\n",
    "    data=merged_df, x=\"num_matches\", y=\"high_estimate\", scatter=False, color=\".25\",\n",
    ")\n",
    "sns.scatterplot(data=merged_df, x=\"num_matches\", y=\"high_estimate\", hue=\"Masters\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "application/javascript": [
       "\n",
       "            setTimeout(function() {\n",
       "                var nbb_cell_id = 14;\n",
       "                var nbb_unformatted_code = \"sns.regplot(data=merged_df, x=\\\"num_matches_top500\\\", y=\\\"high_estimate\\\", scatter=False, color=\\\".25\\\")\\nsns.scatterplot(data=merged_df, x=\\\"num_matches_top500\\\", y=\\\"high_estimate\\\", hue=\\\"Masters\\\")\\nplt.show()\";\n",
       "                var nbb_formatted_code = \"sns.regplot(\\n    data=merged_df,\\n    x=\\\"num_matches_top500\\\",\\n    y=\\\"high_estimate\\\",\\n    scatter=False,\\n    color=\\\".25\\\",\\n)\\nsns.scatterplot(\\n    data=merged_df, x=\\\"num_matches_top500\\\", y=\\\"high_estimate\\\", hue=\\\"Masters\\\"\\n)\\nplt.show()\";\n",
       "                var nbb_cells = Jupyter.notebook.get_cells();\n",
       "                for (var i = 0; i < nbb_cells.length; ++i) {\n",
       "                    if (nbb_cells[i].input_prompt_number == nbb_cell_id) {\n",
       "                        if (nbb_cells[i].get_text() == nbb_unformatted_code) {\n",
       "                             nbb_cells[i].set_text(nbb_formatted_code);\n",
       "                        }\n",
       "                        break;\n",
       "                    }\n",
       "                }\n",
       "            }, 500);\n",
       "            "
      ],
      "text/plain": [
       "<IPython.core.display.Javascript object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.regplot(\n",
    "    data=merged_df,\n",
    "    x=\"num_matches_top500\",\n",
    "    y=\"high_estimate\",\n",
    "    scatter=False,\n",
    "    color=\".25\",\n",
    ")\n",
    "sns.scatterplot(\n",
    "    data=merged_df, x=\"num_matches_top500\", y=\"high_estimate\", hue=\"Masters\"\n",
    ")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There is a clear and mostly linear correlation between the number of Pro Ranked players and the number of games played by both the top 2860 and top 500 players. So the more players there are, the more matches someone has to play to get in the higher ranks. "
   ]
  }
 ],
 "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.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}