You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1232 lines
410 KiB
Plaintext

1 year ago
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "c15305d2-16ca-4c9e-bde2-41641c0157f8",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import seaborn as sns\n",
"import calendar\n",
"from pandas.plotting import register_matplotlib_converters\n",
"register_matplotlib_converters()\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "b1b532a9-f422-49f7-b2c0-a295835b3767",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"df = pd.read_csv(\"fcc-forum-pageviews.csv\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "8c8d4e9d-aab9-4973-a82e-53cc570e6f7d",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"value 1304\n",
"dtype: int64"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.count(numeric_only=True)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "b755a491-19e9-4594-b35e-029cdb0cb579",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"df = df[(df['value'] >= df['value'].quantile(0.025)) & (df['value'] <= df['value'].quantile(0.975))]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "c81d9932-007f-4fb5-9f9a-51e83b19b180",
"metadata": {
"tags": []
},
"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>date</th>\n",
" <th>value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>2016-05-19</td>\n",
" <td>19736</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>2016-05-26</td>\n",
" <td>18060</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>2016-05-27</td>\n",
" <td>19997</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>2016-05-28</td>\n",
" <td>19044</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>2016-05-29</td>\n",
" <td>20325</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1294</th>\n",
" <td>2019-11-24</td>\n",
" <td>138875</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1299</th>\n",
" <td>2019-11-29</td>\n",
" <td>171584</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1300</th>\n",
" <td>2019-11-30</td>\n",
" <td>141161</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1301</th>\n",
" <td>2019-12-01</td>\n",
" <td>142918</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1303</th>\n",
" <td>2019-12-03</td>\n",
" <td>158549</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1238 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" date value\n",
"10 2016-05-19 19736\n",
"17 2016-05-26 18060\n",
"18 2016-05-27 19997\n",
"19 2016-05-28 19044\n",
"20 2016-05-29 20325\n",
"... ... ...\n",
"1294 2019-11-24 138875\n",
"1299 2019-11-29 171584\n",
"1300 2019-11-30 141161\n",
"1301 2019-12-01 142918\n",
"1303 2019-12-03 158549\n",
"\n",
"[1238 rows x 2 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "77f2f92c-2f8e-43aa-8968-103f2a4d7a22",
"metadata": {
"tags": []
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/tmp/ipykernel_48/4082127034.py:2: UserWarning: FixedFormatter should only be used together with FixedLocator\n",
" sns.lineplot(df[\"value\"]).set(xlabel=\"Date\", ylabel=\"Page Views\", xticklabels=df.index, title='Daily freeCodeCamp Forum Page Views 5/2016-12/2019')\n"
]
},
{
"data": {
"text/plain": [
"[Text(0.5, 0, 'Date'),\n",
" Text(0, 0.5, 'Page Views'),\n",
" [Text(-200.0, 0, '10'),\n",
" Text(0.0, 0, '17'),\n",
" Text(200.0, 0, '18'),\n",
" Text(400.0, 0, '19'),\n",
" Text(600.0, 0, '20'),\n",
" Text(800.0, 0, '29'),\n",
" Text(1000.0, 0, '30'),\n",
" Text(1200.0, 0, '31'),\n",
" Text(1400.0, 0, '36')],\n",
" Text(0.5, 1.0, 'Daily freeCodeCamp Forum Page Views 5/2016-12/2019')]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABnQAAANXCAYAAAAM/7FhAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdebyUdfn/8fcsZwMERAQkAS1NxD1MxA1NBJUoNTV3UsssrdRC03LPzDU1NfPXV7FcMirNxFTcSXFDcc8VVwRUgiNwzpnt/v0xc9/zue+5Z7/nzMzh9Xw8lHPmXuZz7jNz33M+131dV8iyLEsAAAAAAAAAAABoWOF6DwAAAAAAAAAAAACFEdABAAAAAAAAAABocAR0AAAAAAAAAAAAGhwBHQAAAAAAAAAAgAZHQAcAAAAAAAAAAKDBEdABAAAAAAAAAABocAR0AAAAAAAAAAAAGhwBHQAAAAAAAAAAgAZHQAcAAAAAAAAAAKDBEdABAABARWbNmqVQKKR3333XeWz33XfX7rvvHthzrFq1St/97nc1YsQIhUIhnXTSSYHtuxF95zvf0UYbbVTvYQCBC/rcAAAAAKyNCOgAAAD0YXbQxf6vvb1dI0eO1NSpU3XVVVfp888/r/cQC/r1r3+tWbNm6Qc/+IH+/Oc/68gjj6zLODo7O3Xuuedqm2220YABA9TR0aEtt9xSp512mhYvXlyXMeVzxx13aJ999tHQoUPV2tqqkSNH6uCDD9ZDDz1U76GV7d1333W9fs3/dtxxx3oPLzCPPPKI62draWnRF7/4RR111FF655136j28HMuWLVM0GtURRxyRd53PP/9cHR0dOuCAA3pxZNUr9Jr7y1/+4rvNv/71L4XDYS1ZskQffPCBzj33XO2www5ad911NXToUO2+++564IEHfLddsWKFjjvuOK2//vrq37+/9thjDz333HM5691+++064ogjtOmmmyoUChUNjj333HP6xje+oSFDhqhfv37acsstddVVV5V0DEp9rmeeeUYnnniitthiC/Xv31+jR4/WwQcfrDfeeCPvvhvtWC1YsEB77723Bg4cqHXWWUdTpkzRwoULCx0eAACAuorWewAAAACovfPOO08bb7yx4vG4lixZokceeUQnnXSSLr/8ct11113aeuuty97nkUceqUMOOURtbW01GHHaQw89pB133FFnn312zZ6jmHfeeUeTJ0/W+++/r4MOOkjHHXecWltb9eKLL+r//u//dMcddxScwOwtlmXpmGOO0axZs7TddtvplFNO0YgRI/Txxx/rjjvu0J577qnHH39cO+20U72HWrZDDz1U++67r+ux9ddfv06jqZ0f//jH+upXv6p4PK7nnntO119/vebMmaOXXnpJI0eOrPfwHMOGDdNee+2lf/7zn1qzZo369euXs84//vEPdXd3O0Gf+++/v7eHWRW/19zEiRN9150zZ47Gjx+vESNG6Oqrr9ZFF12k/fbbTzNmzFAikdCf/vQn7bXXXrrhhht09NFHO9ulUilNmzZNL7zwgmbOnKmhQ4fq2muv1e67764FCxZo0003ddb9/e9/rwULFuirX/2qPvvss4Jjv//++zV9+nRtt912OvPMMzVgwAC9/fbb+vDDD0v62Ut9rosuukiPP/64DjroIG299dZasmSJrr76an3lK1/Rk08+qS233LKhj9Vzzz2nXXbZRaNGjdLZZ5+tVCqla6+9VpMmTdLTTz+tzTbbrKTjBQAA0KssAAAA9Fk33nijJcl65plncpY9+OCDVkdHhzVmzBhrzZo1gTzfpEmTrEmTJgWyL8uyrI033tiaNm1a0fW6urqsZDIZ2PPa4vG4tc0221j9+vWz5s2bl7N85cqV1hlnnBHY882YMcMaM2ZMRdtecsklliTrpJNOslKpVM7yP/3pT9ZTTz1V5Qh716JFiyxJ1iWXXFKT/dfqdVOuhx9+2JJkzZ492/X4VVddZUmyfv3rX9dpZPn9+c9/tiRZt912m+/yKVOmWIMGDbK6u7t7eWTVqeQ1N2rUKOvss8+2LMuyXn75ZeuTTz5xLe/u7rbGjh1rbbjhhq7Hb7/99pzf+7Jly6zBgwdbhx56qGvd999/33mtbrHFFnnPsytXrrSGDx9u7b///hW/tkt9rscff9zq6elxPfbGG29YbW1t1uGHH+67TSMdq3333ddad911rU8//dR5bPHixdaAAQOsAw44wHcbAACAeqPkGgAAwFrqa1/7ms4880y99957uvnmm53HX3zxRX3nO9/RF7/4RbW3t2vEiBE65phjcu509uuhY1q1apX69++vn/zkJznLPvzwQ0UiEV144YW+29olqBYtWqQ5c+Y4JY/effddZ9lf/vIX/fKXv9QXvvAF9evXT52dnZKkp556SnvvvbcGDRqkfv36adKkSXr88cdznuOjjz7SMccco+HDh6utrU1bbLGFbrjhBtc6f//73/XCCy/oF7/4hXbZZZecfQwcOFAXXHCB67HZs2dr/Pjx6ujo0NChQ3XEEUfoo48+ytn2zjvv1JZbbqn29nZtueWWuuOOO3yPRSqV0hVXXKEttthC7e3tGj58uL7//e/rf//7n7NOV1eXLrzwQo0dO1aXXnqpQqFQzn6OPPJI7bDDDpKk5cuX62c/+5m22morDRgwQAMHDtQ+++yjF154wff38Ne//lXnnnuuvvCFL2idddbRgQceqJUrV6qnp0cnnXSShg0bpgEDBujoo49WT0+Pax+hUEgnnniibrnlFm222WZqb2/X+PHj9dhjj/n+vJV45513dNBBBznlpXbccUfNmTPH92fxe92cc845vsfM7zW+0UYb6etf/7oeeeQRbb/99uro6NBWW22lRx55RFI6M2WrrbZyfs7nn3++4p/ra1/7miRp0aJFkqQbb7xRX/va1zRs2DC1tbVp3Lhx+v3vf5+zXSqV0jnnnKORI0eqX79+2mOPPfTqq69qo4020ne+8x3XuitWrNBJJ52kUaNGqa2tTZtssokuuugipVKpgmPbf//91b9/f9166605y5YtW6YHH3xQBx54oJPB59dDp6enR2effbY22WQTtbW1adSoUTr11FNdr6EDDjhAX/nKV1zbTZ8+XaFQSHfddZfz2FNPPaVQKKR///vfkqR4PK5zzz1Xm266qdrb27Xeeutpl1120dy5cwv+XKbVq1crFosVXOell17SBx98oGnTpkmStthiCw0dOtS1Tltbm/bdd199+OGHrjKXf/vb3zR8+HBXWbr1119fBx98sP75z3+6jsOoUaMUDhf/8/3WW2/V0qVLdcEFFygcDmv16tVFf5depT7XTjvtpNbWVtdjm266qbbYYgu99tprOes32rGaN2+eJk+erPXWW895bIMNNtCkSZN09913a9WqVUX3AQAA0NsI6AAAAKzF7J40ZjmkuXPn6p133tHRRx+t3/3udzrkkEP0l7/8Rfvuu68syyp53wMGDND++++v22+/Xclk0rXstttuk2VZOvzww3233XzzzfXnP/9ZQ4cO1bbbbqs///nP+vOf/+wqs3X++edrzpw5+tnPfqZf//rXam1t1UMPPaTddttNnZ2dOvvss/XrX/9aK1as0Ne+9jU9/fTTzrZLly7VjjvuqAceeEAnnniirrzySm2yySY69thjdcUVVzjr2RPGpfbumTVrlg4++GAnWPW9731P//jHP7TLLrtoxYoVznr333+/vvWtbykUCunCCy/Ufvvtp6OPPlrPPvtszj6///3va+bMmdp555115ZVX6uijj9Ytt9yiqVOnKh6PS5L+85//aPny5TrssMMUiUSKjvOdd97RnXfeqa9//eu6/PLLNXPmTL300kuaNGmSb0+gCy+8UPfdd59+/vOf65hjjtE//vEPHX/88TrmmGP0xhtv6JxzztEBBxygWbNm6aKLLsrZ/tFHH9VJJ52kI444Quedd54+++wz7b333nr55ZdLOq5r1qzRp59+6vrP/tmXLl2qnXbaSffdd59++MMf6oILLlB3d7e+8Y1v+AbJ/F435Xrrrbd02GGHafr06brwwgv1v//9T9OnT9c
"text/plain": [
"<Figure size 2000x1000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, axs = plt.subplots(ncols=1, figsize=(20, 10))\n",
"sns.lineplot(df[\"value\"]).set(xlabel=\"Date\", ylabel=\"Page Views\", xticklabels=df.index, title='Daily freeCodeCamp Forum Page Views 5/2016-12/2019')"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "444da419-f087-427b-bc6d-87b38a85b8c1",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"1238"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(axs.lines[0].get_ydata())"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "c2846fe2-072a-4328-8982-363f02c214c1",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"df = pd.read_csv(\"fcc-forum-pageviews.csv\", parse_dates=True, index_col = 0)\n",
"df['year'] = df.index.year\n",
"df['month'] = df.index.month\n",
"# df['month'] = df['month'].apply(lambda x: calendar.month_abbr[x])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "168fcdf2-5c22-4917-bebb-b0419d169fcf",
"metadata": {
"tags": []
},
"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></th>\n",
" <th>value</th>\n",
" </tr>\n",
" <tr>\n",
" <th>year</th>\n",
" <th>month</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"8\" valign=\"top\">2016</th>\n",
" <th>5</th>\n",
" <td>11242.695652</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>19124.366667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>23314.225806</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>31049.193548</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>41476.866667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>27398.322581</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>40448.633333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>27832.419355</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"12\" valign=\"top\">2017</th>\n",
" <th>1</th>\n",
" <td>32785.161290</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>31113.071429</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>29369.096774</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>30878.733333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>34244.290323</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>43577.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>65806.838710</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>47712.451613</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>47376.800000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>47438.709677</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>57701.566667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>48420.580645</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"12\" valign=\"top\">2018</th>\n",
" <th>1</th>\n",
" <td>58580.096774</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>65679.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>62693.774194</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>62350.833333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>56562.870968</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>70117.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>63591.064516</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>62831.612903</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>65941.733333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>112592.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>78688.333333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>80047.483871</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"12\" valign=\"top\">2019</th>\n",
" <th>1</th>\n",
" <td>102056.516129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>105968.357143</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>91214.483871</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>89368.433333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>91439.903226</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>162402.600000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>100804.451613</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>117991.032258</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>97268.833333</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>150862.709677</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>181026.700000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>173870.333333</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value\n",
"year month \n",
"2016 5 11242.695652\n",
" 6 19124.366667\n",
" 7 23314.225806\n",
" 8 31049.193548\n",
" 9 41476.866667\n",
" 10 27398.322581\n",
" 11 40448.633333\n",
" 12 27832.419355\n",
"2017 1 32785.161290\n",
" 2 31113.071429\n",
" 3 29369.096774\n",
" 4 30878.733333\n",
" 5 34244.290323\n",
" 6 43577.500000\n",
" 7 65806.838710\n",
" 8 47712.451613\n",
" 9 47376.800000\n",
" 10 47438.709677\n",
" 11 57701.566667\n",
" 12 48420.580645\n",
"2018 1 58580.096774\n",
" 2 65679.000000\n",
" 3 62693.774194\n",
" 4 62350.833333\n",
" 5 56562.870968\n",
" 6 70117.000000\n",
" 7 63591.064516\n",
" 8 62831.612903\n",
" 9 65941.733333\n",
" 10 112592.000000\n",
" 11 78688.333333\n",
" 12 80047.483871\n",
"2019 1 102056.516129\n",
" 2 105968.357143\n",
" 3 91214.483871\n",
" 4 89368.433333\n",
" 5 91439.903226\n",
" 6 162402.600000\n",
" 7 100804.451613\n",
" 8 117991.032258\n",
" 9 97268.833333\n",
" 10 150862.709677\n",
" 11 181026.700000\n",
" 12 173870.333333"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby(['year', 'month']).mean()"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "445e28f9-2527-4e01-803c-a950d56f9f80",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"avg_monthly_views = df.groupby([df.index.year, df.index.month]).mean()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "5e81c4ed-62dd-4003-980d-2b6075ccdee7",
"metadata": {
"tags": []
},
"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></th>\n",
" <th>value</th>\n",
" <th>year</th>\n",
" <th>month</th>\n",
" </tr>\n",
" <tr>\n",
" <th>date</th>\n",
" <th>date</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th rowspan=\"8\" valign=\"top\">2016</th>\n",
" <th>5</th>\n",
" <td>11242.695652</td>\n",
" <td>2016.0</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>19124.366667</td>\n",
" <td>2016.0</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>23314.225806</td>\n",
" <td>2016.0</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>31049.193548</td>\n",
" <td>2016.0</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>41476.866667</td>\n",
" <td>2016.0</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>27398.322581</td>\n",
" <td>2016.0</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>40448.633333</td>\n",
" <td>2016.0</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>27832.419355</td>\n",
" <td>2016.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"12\" valign=\"top\">2017</th>\n",
" <th>1</th>\n",
" <td>32785.161290</td>\n",
" <td>2017.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>31113.071429</td>\n",
" <td>2017.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>29369.096774</td>\n",
" <td>2017.0</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>30878.733333</td>\n",
" <td>2017.0</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>34244.290323</td>\n",
" <td>2017.0</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>43577.500000</td>\n",
" <td>2017.0</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>65806.838710</td>\n",
" <td>2017.0</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>47712.451613</td>\n",
" <td>2017.0</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>47376.800000</td>\n",
" <td>2017.0</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>47438.709677</td>\n",
" <td>2017.0</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>57701.566667</td>\n",
" <td>2017.0</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>48420.580645</td>\n",
" <td>2017.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"12\" valign=\"top\">2018</th>\n",
" <th>1</th>\n",
" <td>58580.096774</td>\n",
" <td>2018.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>65679.000000</td>\n",
" <td>2018.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>62693.774194</td>\n",
" <td>2018.0</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>62350.833333</td>\n",
" <td>2018.0</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>56562.870968</td>\n",
" <td>2018.0</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>70117.000000</td>\n",
" <td>2018.0</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>63591.064516</td>\n",
" <td>2018.0</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>62831.612903</td>\n",
" <td>2018.0</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>65941.733333</td>\n",
" <td>2018.0</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>112592.000000</td>\n",
" <td>2018.0</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>78688.333333</td>\n",
" <td>2018.0</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>80047.483871</td>\n",
" <td>2018.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th rowspan=\"12\" valign=\"top\">2019</th>\n",
" <th>1</th>\n",
" <td>102056.516129</td>\n",
" <td>2019.0</td>\n",
" <td>1.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>105968.357143</td>\n",
" <td>2019.0</td>\n",
" <td>2.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>91214.483871</td>\n",
" <td>2019.0</td>\n",
" <td>3.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>89368.433333</td>\n",
" <td>2019.0</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>91439.903226</td>\n",
" <td>2019.0</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>162402.600000</td>\n",
" <td>2019.0</td>\n",
" <td>6.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>100804.451613</td>\n",
" <td>2019.0</td>\n",
" <td>7.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>117991.032258</td>\n",
" <td>2019.0</td>\n",
" <td>8.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>97268.833333</td>\n",
" <td>2019.0</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>150862.709677</td>\n",
" <td>2019.0</td>\n",
" <td>10.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>181026.700000</td>\n",
" <td>2019.0</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>173870.333333</td>\n",
" <td>2019.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" value year month\n",
"date date \n",
"2016 5 11242.695652 2016.0 5.0\n",
" 6 19124.366667 2016.0 6.0\n",
" 7 23314.225806 2016.0 7.0\n",
" 8 31049.193548 2016.0 8.0\n",
" 9 41476.866667 2016.0 9.0\n",
" 10 27398.322581 2016.0 10.0\n",
" 11 40448.633333 2016.0 11.0\n",
" 12 27832.419355 2016.0 12.0\n",
"2017 1 32785.161290 2017.0 1.0\n",
" 2 31113.071429 2017.0 2.0\n",
" 3 29369.096774 2017.0 3.0\n",
" 4 30878.733333 2017.0 4.0\n",
" 5 34244.290323 2017.0 5.0\n",
" 6 43577.500000 2017.0 6.0\n",
" 7 65806.838710 2017.0 7.0\n",
" 8 47712.451613 2017.0 8.0\n",
" 9 47376.800000 2017.0 9.0\n",
" 10 47438.709677 2017.0 10.0\n",
" 11 57701.566667 2017.0 11.0\n",
" 12 48420.580645 2017.0 12.0\n",
"2018 1 58580.096774 2018.0 1.0\n",
" 2 65679.000000 2018.0 2.0\n",
" 3 62693.774194 2018.0 3.0\n",
" 4 62350.833333 2018.0 4.0\n",
" 5 56562.870968 2018.0 5.0\n",
" 6 70117.000000 2018.0 6.0\n",
" 7 63591.064516 2018.0 7.0\n",
" 8 62831.612903 2018.0 8.0\n",
" 9 65941.733333 2018.0 9.0\n",
" 10 112592.000000 2018.0 10.0\n",
" 11 78688.333333 2018.0 11.0\n",
" 12 80047.483871 2018.0 12.0\n",
"2019 1 102056.516129 2019.0 1.0\n",
" 2 105968.357143 2019.0 2.0\n",
" 3 91214.483871 2019.0 3.0\n",
" 4 89368.433333 2019.0 4.0\n",
" 5 91439.903226 2019.0 5.0\n",
" 6 162402.600000 2019.0 6.0\n",
" 7 100804.451613 2019.0 7.0\n",
" 8 117991.032258 2019.0 8.0\n",
" 9 97268.833333 2019.0 9.0\n",
" 10 150862.709677 2019.0 10.0\n",
" 11 181026.700000 2019.0 11.0\n",
" 12 173870.333333 2019.0 12.0"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"avg_monthly_views"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "f3fefd42-d561-4d04-ad11-9b96a1044862",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"avg_monthly_views['month'] = avg_monthly_views['month'].apply(lambda x: calendar.month_name[int(x)])"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "4dbdb563-97d9-4972-b3e9-9b6f041884d8",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"avg_monthly_views = avg_monthly_views.astype({'year':'int'})"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "1bebff97-7deb-4ebb-8d86-7c7ace8bae14",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[Text(0.5, 0, 'Years'), Text(0, 0.5, 'Average Page Views')]"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 2000x1000 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, axs = plt.subplots(ncols=1, figsize=(20, 10))\n",
"sns.barplot(data=avg_monthly_views, x='year', y='value', hue='month', hue_order=['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']).set(xlabel=\"Years\", ylabel=\"Average Page Views\")"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "af6a3cc8-8955-4c96-8828-5379c8485741",
"metadata": {
"tags": []
},
"outputs": [],
"source": [
"df = pd.read_csv(\"fcc-forum-pageviews.csv\", parse_dates=True, index_col = 0)\n",
"df = df[(df['value'] >= df['value'].quantile(0.025)) & (df['value'] <= df['value'].quantile(0.975))]\n",
"df_box = df.copy()\n",
"df_box.reset_index(inplace=True)\n",
"df_box['year'] = [d.year for d in df_box.date]\n",
"df_box['month'] = [d.strftime('%b') for d in df_box.date]"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "1120ca63-aaf1-4eec-a2e3-7cda91e62422",
"metadata": {
"tags": []
},
"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>date</th>\n",
" <th>value</th>\n",
" <th>year</th>\n",
" <th>month</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>2016-05-19</td>\n",
" <td>19736</td>\n",
" <td>2016</td>\n",
" <td>May</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2016-05-26</td>\n",
" <td>18060</td>\n",
" <td>2016</td>\n",
" <td>May</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>2016-05-27</td>\n",
" <td>19997</td>\n",
" <td>2016</td>\n",
" <td>May</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>2016-05-28</td>\n",
" <td>19044</td>\n",
" <td>2016</td>\n",
" <td>May</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>2016-05-29</td>\n",
" <td>20325</td>\n",
" <td>2016</td>\n",
" <td>May</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1233</th>\n",
" <td>2019-11-24</td>\n",
" <td>138875</td>\n",
" <td>2019</td>\n",
" <td>Nov</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1234</th>\n",
" <td>2019-11-29</td>\n",
" <td>171584</td>\n",
" <td>2019</td>\n",
" <td>Nov</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1235</th>\n",
" <td>2019-11-30</td>\n",
" <td>141161</td>\n",
" <td>2019</td>\n",
" <td>Nov</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1236</th>\n",
" <td>2019-12-01</td>\n",
" <td>142918</td>\n",
" <td>2019</td>\n",
" <td>Dec</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1237</th>\n",
" <td>2019-12-03</td>\n",
" <td>158549</td>\n",
" <td>2019</td>\n",
" <td>Dec</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1238 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" date value year month\n",
"0 2016-05-19 19736 2016 May\n",
"1 2016-05-26 18060 2016 May\n",
"2 2016-05-27 19997 2016 May\n",
"3 2016-05-28 19044 2016 May\n",
"4 2016-05-29 20325 2016 May\n",
"... ... ... ... ...\n",
"1233 2019-11-24 138875 2019 Nov\n",
"1234 2019-11-29 171584 2019 Nov\n",
"1235 2019-11-30 141161 2019 Nov\n",
"1236 2019-12-01 142918 2019 Dec\n",
"1237 2019-12-03 158549 2019 Dec\n",
"\n",
"[1238 rows x 4 columns]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df_box"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "72c7a098-6b74-467f-86cc-4e9456598b56",
"metadata": {
"tags": []
},
"outputs": [
{
"data": {
"text/plain": [
"[Text(0.5, 1.0, 'Month-wise Box Plot (Seasonality)'),\n",
" Text(0, 0.5, 'Page Views'),\n",
" Text(0.5, 0, 'Month')]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB6oAAANXCAYAAACMqdFbAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAADiRUlEQVR4nOzde1yUZf7/8ffNKIxpaEBoHBxra1OztBDFSLPNJLXSSiUbT63p1pImWN9qO2nnE4vH1g6/TYupRTvRUbOjLWkSZpmdyxBoxcRV1BrU4fr90Zf5OgIKitwDvJ6PB49drvu673nPALt+7s99X7dljDECAAAAAAAAAAAAAKCRhNgdAAAAAAAAAAAAAADQstCoBgAAAAAAAAAAAAA0KhrVAAAAAAAAAAAAAIBGRaMaAAAAAAAAAAAAANCoaFQDAAAAAAAAAAAAABoVjWoAAAAAAAAAAAAAQKOiUQ0AAAAAAAAAAAAAaFQ0qgEAAAAAAAAAAAAAjYpGNQAAAAAAAAAAAACgUdGoBgCgngYOHKiBAwfaHaNJmDhxorp06dJor7dmzRqFhoaqsLCw0V6zIXTp0kUTJ070f79s2TK1a9dOv/zyi32hAAAAAOAQLMvSdddd1+ive2ANhdo19jmMJUuWKCIiQrt27Wq012yqZs6cKcuyAsYa+nd77969io+P16OPPtpgxwSAhkSjGgBw1AwZMkTHHXecSktLq23bsWOHTjjhBPXt21eVlZU2pGtaunTpIsuy/F9Op1OnnHKKbrzxRm3btq3R8wwcODAgT0REhBITE/XPf/6zwX6e9913n15++eV67XPrrbdqzJgxcrlcWrRoUUDG2r4as5FeVxdeeKFOPvlk3X///XZHAQAAAGCD/euZf//739W2G2MUHx8vy7J00UUXHdUsH330kWbOnKnt27cf1dcJdgfWkm3btlX37t11zz336Ndff230PAeeJ4iOjlb//v310ksvNcjxf/31V82cOVPvv/9+nffx+Xy68847NXXqVLVr184/vmfPHs2ZM0dnnnmmwsPD1aFDB5122mmaMmWKvv766wbJ21x9+eWXmjlzpn766afD2r9169bKyMjQvffeK6/X27DhAKABtLI7AACg+Xr00UfVo0cPpaen69lnnw3Y9re//U1bt27VsmXLFBLStK6beuutt2x53V69emnGjBmSJK/Xq4KCAs2ePVsffPCB1qxZ0+h54uLi/I3UX375RU8//bQmTZqkb7/9Vg888MARH/++++7TyJEjNWLEiDrNX7dund5++2199NFHkqQBAwbomWeeCZhz9dVXq0+fPpoyZYp/bP/iOZj85S9/0Q033KBZs2bp2GOPtTsOAAAAABs4nU49++yzOueccwLGP/jgAxUXFyssLOyoZ/joo480a9YsTZw4UR06dDjqr1cX33zzjS3nEi644AKNHz9ekrRr1y59+OGHuv322/XZZ59p6dKljZ5n//MEP//8sx577DFddtll+sc//qFrrrnmiI7966+/atasWZJU5zuyX331VX3zzTcBNbckXX755XrzzTc1ZswYTZ48WXv37tXXX3+t1157TWeffba6du16RFmbkwN/t7/88kvNmjVLAwcOPOwL7a+66irdfPPNevbZZ/XnP/+5gZICQMOgUQ0AOGpOPPFE3Xnnnbrppps0ceJEDR48WJKUn5+vhQsX6oYbblDPnj2Pagav16vQ0NAGLWBDQ0Mb7Fj1ERsbq7Fjx/q/v/rqq9WuXTs98sgj+u6773TKKac0ap727dsH5PnLX/6iU089VfPnz9fdd9+t1q1bN2qep556Sp07d1ZSUpIk6aSTTtJJJ50UMOeaa67RSSedFJD7QPv27VNlZaVtP+cql19+uaZOnaqlS5dSSAIAAAAt1NChQ7V06VLNnTtXrVr936ncZ599VgkJCdq6dauN6ezTGA36mvzxj38MqCevueYa7dmzRy+++KK8Xq+cTmej5jnwPMH48eN18sknKysr64gb1YfjqaeeUnJysmJjY/1j+fn5eu2113Tvvffqb3/7W8D8+fPnt/g79Q90NH63O3TooMGDB2vRokWcXwAQdJrWLWwAgCYnIyNDZ5xxhv7617/K6/XK5/Ppmmuukcvl0p133qmvv/5aI0eOVEREhJxOp3r37q1XXnkl4Bjbtm3TDTfcoNNPP13t2rVTeHi4hgwZos8++yxg3vvvvy/LsvSvf/1Lt912m2JjY3XMMceovLy8Wq7PP/9clmUFvFZBQYEsy9JZZ50VMHfIkCHq27ev//uanu80b948nXbaaTrmmGN03HHHqXfv3tXuIi8pKdGf//xndezYUWFhYTrttNP0z3/+s16f54E6deokSQEnLCTp3XffVf/+/dW2bVt16NBBw4cP11dffeXf/tRTT8myrGqvf99998myLL3xxhv1znLMMccoKSlJu3fvPuizlXfv3q0ZM2YoPj5eYWFhOvXUU/XII4/IGOOfY1mWdu/ercWLF/uXMTvUM5pefvll/elPf6r2fKeD+emnn2RZlh555BHNnj1bf/jDHxQWFqYvv/xSkur0+1m1JF9eXp4yMjJ0/PHHq23btrr00kurfQ7GGN1zzz2Ki4vTMccco/POO08bNmyoMVt0dLTOOOMM5ebm1vn9AAAAAGhexowZo7KyMq1YscI/tmfPHj3//PO68sora9ynLjWX9H/Pl3755ZfVo0cPf526bNky/5yZM2fqxhtvlPT7xehV9dmByxAf7Bi1eeWVV2RZlj7//HP/2AsvvCDLsnTZZZcFzO3WrZtSU1P93x/4HN+9e/dq1qxZOuWUU+R0OhUZGalzzjkn4HOT6lbj1VenTp1kWVa1unzp0qVKSEhQmzZtFBUVpbFjx6qkpMS//c4771RISIjeeeedgP2mTJmi0NDQauc86pqlW7du2rhx40HnbdmyRZMmTVLHjh3ldDrVs2dPLV682L/9p59+0vHHHy9JmjVrlv/nPnPmzFqP6fV6tWzZMg0aNChg/IcffpAkJScnV9vH4XAoMjIyYKwu50727NmjO+64QwkJCWrfvr3atm2r/v3767333qv2Gv/617+UkJCgY489VuHh4Tr99NM1Z86cgDk//vijRo0apYiICP+5jddffz1gTtU5pyVLlujee+9VXFycnE6nzj//fH3//fcBcz/88EONGjVKnTt3VlhYmOLj45Wenq7ffvut1s+vyv6/24sWLdKoUaMkSeedd57/5/D+++9rwoQJioqK0t69e6sdY/DgwTr11FMDxi644AL9+9//tuXxcQBwMNxRDQA4qlq1aqXHH39cZ599tu6++25FR0dr7dq1WrZsmTZu3Oi/0vbmm29W27ZttWTJEo0YMUIvvPCCLr30Ukm/Fwwvv/yyRo0apRNPPFGlpaV67LHHdO655+rLL79UTExMwGvefffdCg0N1Q033KCKiooa74zt0aOHOnTooJUrV+qSSy6R9HshERISos8++0zl5eUKDw9XZWWlPvroo2rLVu3viSee0LRp0zRy5Ehdf/318nq9+vzzz/Xxxx/7TxyUlpYqKSnJfyLg+OOP15tvvqlJkyapvLxc06dPP+RnuXfvXv/V8l6vV59++qn+/ve/a8CAATrxxBP9895++20NGTJEJ510kmbOnKnffvtN8+bNU3JystauXasuXbroqquu0osvvqiMjAxdcMEFio+P1/r16zVr1ixNmjRJQ4cOPWSemvz4449yOBy1LgdnjNEll1yi9957T5MmTVKvXr20fPly3XjjjSopKVFWVpYk6Zlnnqm2TPcf/vCHWl+3pKREmzZtqnaRQV099dRT8nq9mjJlisLCwhQREaENGzbU6fezytSpU3Xcccfpzjvv1E8//aTZs2fruuuuU05Ojn/OHXfcoXvuuUdDhw7V0KFDtXbtWg0ePFh79uypMVdCQkK9n9MNAAAAoPno0qWL+vXrp+eee05DhgyRJL355pvasWOHrrjiCs2dOzdgfl1rrir//ve/9eKLL+qvf/2rjj32WM2dO1eXX365Nm3apMjISF122WX69ttv9dxzzykrK0tRUVGS5G9i1uU
"text/plain": [
"<Figure size 2400x1000 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fix, axs = plt.subplots(ncols=2, figsize=(24,10))\n",
"sns.boxplot(data=df_box, ax=axs[0], x=\"year\", y=\"value\").set( title=\"Year-wise Box Plot (Trend)\", ylabel=\"Page Views\", xlabel=\"Year\")\n",
"sns.boxplot(data=df_box, ax=axs[1], x=\"month\", y=\"value\", order=[\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]).set(title=\"Month-wise Box Plot (Seasonality)\", ylabel=\"Page Views\", xlabel=\"Month\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8b3ed8de-ea6a-448f-995f-526bea05463b",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.8.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}