diff --git "a/netflix.ipynb" "b/netflix.ipynb" new file mode 100644--- /dev/null +++ "b/netflix.ipynb" @@ -0,0 +1,4688 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "ad9a90d6", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.132102300Z", + "start_time": "2023-11-30T16:28:55.530358300Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Time Period Subscribers\n", + "0 01/04/2013 34240000\n", + "1 01/07/2013 35640000\n", + "2 01/10/2013 38010000\n", + "3 01/01/2014 41430000\n", + "4 01/04/2014 46130000\n" + ] + } + ], + "source": [ + "# Importing Necessay Python libraries\n", + "import pickle\n", + "\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import plotly.graph_objs as go\n", + "import plotly.express as px\n", + "import plotly.io as pio\n", + "pio.templates.default = \"plotly_white\"\n", + "from statsmodels.tsa.arima.model import ARIMA\n", + "from statsmodels.graphics.tsaplots import plot_acf, plot_pacf\n", + "\n", + "# reading the data\n", + "data = pd.read_csv('Netflix-Subscriptions.csv')\n", + "print(data.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "043704f6", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.149369900Z", + "start_time": "2023-11-30T16:28:57.134099500Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Time Period Subscribers\n", + "0 2013-04-01 34240000\n", + "1 2013-07-01 35640000\n", + "2 2013-10-01 38010000\n", + "3 2014-01-01 41430000\n", + "4 2014-04-01 46130000\n" + ] + } + ], + "source": [ + "data['Time Period'] = pd.to_datetime(data['Time Period'], \n", + " format='%d/%m/%Y')\n", + "print(data.head())" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "5447593a", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.631623400Z", + "start_time": "2023-11-30T16:28:57.149369900Z" + } + }, + "outputs": [ + { + "data": { + "text/html": " \n " + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines", + "name": "Subscribers", + "x": [ + "2013-04-01T00:00:00", + "2013-07-01T00:00:00", + "2013-10-01T00:00:00", + "2014-01-01T00:00:00", + "2014-04-01T00:00:00", + "2014-07-01T00:00:00", + "2014-10-01T00:00:00", + "2015-01-01T00:00:00", + "2015-04-01T00:00:00", + "2015-07-01T00:00:00", + "2015-10-01T00:00:00", + "2016-01-01T00:00:00", + "2016-04-01T00:00:00", + "2016-07-01T00:00:00", + "2016-10-01T00:00:00", + "2017-01-01T00:00:00", + "2017-04-01T00:00:00", + "2017-07-01T00:00:00", + "2017-10-01T00:00:00", + "2018-01-01T00:00:00", + "2018-04-01T00:00:00", + "2018-07-01T00:00:00", + "2018-10-01T00:00:00", + "2019-01-01T00:00:00", + "2019-04-01T00:00:00", + "2019-07-01T00:00:00", + "2019-10-01T00:00:00", + "2020-01-01T00:00:00", + "2020-04-01T00:00:00", + "2020-07-01T00:00:00", + "2020-10-01T00:00:00", + "2021-01-01T00:00:00", + "2021-04-01T00:00:00", + "2021-07-01T00:00:00", + "2021-10-01T00:00:00", + "2022-01-01T00:00:00", + "2022-04-01T00:00:00", + "2022-07-01T00:00:00", + "2022-10-01T00:00:00", + "2023-01-01T00:00:00", + "2023-04-01T00:00:00", + "2023-07-01T00:00:00" + ], + "y": [ + 34240000, + 35640000, + 38010000, + 41430000, + 46130000, + 47990000, + 50650000, + 54480000, + 59620000, + 62080000, + 66020000, + 70840000, + 77710000, + 79900000, + 83280000, + 89090000, + 94360000, + 99040000, + 104020000, + 110640000, + 118900000, + 124350000, + 130420000, + 139260000, + 148860000, + 151560000, + 158330000, + 167090000, + 182860000, + 192950000, + 195150000, + 203660000, + 207640000, + 209180000, + 213560000, + 221840000, + 221640000, + 220670000, + 223090000, + 230750000, + 232500000, + 238390000 + ], + "type": "scatter" + } + ], + "layout": { + "template": { + "data": { + "histogram2dcontour": [ + { + "type": "histogram2dcontour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "choropleth": [ + { + "type": "choropleth", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "histogram2d": [ + { + "type": "histogram2d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmap": [ + { + "type": "heatmap", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmapgl": [ + { + "type": "heatmapgl", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "contourcarpet": [ + { + "type": "contourcarpet", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "contour": [ + { + "type": "contour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "surface": [ + { + "type": "surface", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "mesh3d": [ + { + "type": "mesh3d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "parcoords": [ + { + "type": "parcoords", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolargl": [ + { + "type": "scatterpolargl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "scattergeo": [ + { + "type": "scattergeo", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolar": [ + { + "type": "scatterpolar", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "scattergl": [ + { + "type": "scattergl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatter3d": [ + { + "type": "scatter3d", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattermapbox": [ + { + "type": "scattermapbox", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterternary": [ + { + "type": "scatterternary", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattercarpet": [ + { + "type": "scattercarpet", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ] + }, + "layout": { + "autotypenumbers": "strict", + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "hovermode": "closest", + "hoverlabel": { + "align": "left" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "bgcolor": "white", + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "ternary": { + "bgcolor": "white", + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ] + }, + "xaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "automargin": true, + "zerolinewidth": 2 + }, + "yaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "automargin": true, + "zerolinewidth": 2 + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "geo": { + "bgcolor": "white", + "landcolor": "white", + "subunitcolor": "#C8D4E3", + "showland": true, + "showlakes": true, + "lakecolor": "white" + }, + "title": { + "x": 0.05 + }, + "mapbox": { + "style": "light" + } + } + }, + "title": { + "text": "Netflix Quarterly Subscriptions Growth" + }, + "xaxis": { + "title": { + "text": "Date" + } + }, + "yaxis": { + "title": { + "text": "Netflix Subscriptions" + } + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = go.Figure()\n", + "fig.add_trace(go.Scatter(x=data['Time Period'],\n", + " y=data['Subscribers'],\n", + " mode='lines', name='Subscribers'))\n", + "fig.update_layout(title='Netflix Quarterly Subscriptions Growth',\n", + " xaxis_title='Date',\n", + " yaxis_title='Netflix Subscriptions')\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "80ad6d5f", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.633611100Z", + "start_time": "2023-11-30T16:28:57.550307300Z" + } + }, + "outputs": [], + "source": [ + "data['Quarterly Growth Rate'] = data['Subscribers'].pct_change() * 100" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "3da1150a", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.634608300Z", + "start_time": "2023-11-30T16:28:57.551318200Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": " Time Period Subscribers Quarterly Growth Rate\n0 2013-04-01 34240000 NaN\n1 2013-07-01 35640000 4.088785\n2 2013-10-01 38010000 6.649832\n3 2014-01-01 41430000 8.997632\n4 2014-04-01 46130000 11.344436", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Time PeriodSubscribersQuarterly Growth Rate
02013-04-0134240000NaN
12013-07-01356400004.088785
22013-10-01380100006.649832
32014-01-01414300008.997632
42014-04-014613000011.344436
\n
" + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "3bc008e5", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.634608300Z", + "start_time": "2023-11-30T16:28:57.551318200Z" + } + }, + "outputs": [], + "source": [ + "data[\"Bar Color\"] = data[\"Quarterly Growth Rate\"].apply(lambda x: 'green ' if x>0 else 'red')" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "9f9aa033", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.634608300Z", + "start_time": "2023-11-30T16:28:57.551318200Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": " Time Period Subscribers Quarterly Growth Rate Bar Color\n0 2013-04-01 34240000 NaN red\n1 2013-07-01 35640000 4.088785 green \n2 2013-10-01 38010000 6.649832 green \n3 2014-01-01 41430000 8.997632 green \n4 2014-04-01 46130000 11.344436 green \n5 2014-07-01 47990000 4.032083 green \n6 2014-10-01 50650000 5.542821 green \n7 2015-01-01 54480000 7.561698 green \n8 2015-04-01 59620000 9.434655 green \n9 2015-07-01 62080000 4.126132 green \n10 2015-10-01 66020000 6.346649 green \n11 2016-01-01 70840000 7.300818 green \n12 2016-04-01 77710000 9.697911 green \n13 2016-07-01 79900000 2.818170 green \n14 2016-10-01 83280000 4.230288 green \n15 2017-01-01 89090000 6.976465 green \n16 2017-04-01 94360000 5.915366 green \n17 2017-07-01 99040000 4.959729 green \n18 2017-10-01 104020000 5.028271 green \n19 2018-01-01 110640000 6.364161 green \n20 2018-04-01 118900000 7.465654 green \n21 2018-07-01 124350000 4.583684 green \n22 2018-10-01 130420000 4.881383 green \n23 2019-01-01 139260000 6.778102 green \n24 2019-04-01 148860000 6.893580 green \n25 2019-07-01 151560000 1.813785 green \n26 2019-10-01 158330000 4.466878 green \n27 2020-01-01 167090000 5.532748 green \n28 2020-04-01 182860000 9.438027 green \n29 2020-07-01 192950000 5.517883 green \n30 2020-10-01 195150000 1.140192 green \n31 2021-01-01 203660000 4.360748 green \n32 2021-04-01 207640000 1.954237 green \n33 2021-07-01 209180000 0.741668 green \n34 2021-10-01 213560000 2.093890 green \n35 2022-01-01 221840000 3.877131 green \n36 2022-04-01 221640000 -0.090155 red\n37 2022-07-01 220670000 -0.437647 red\n38 2022-10-01 223090000 1.096660 green \n39 2023-01-01 230750000 3.433592 green \n40 2023-04-01 232500000 0.758397 green \n41 2023-07-01 238390000 2.533333 green ", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Time PeriodSubscribersQuarterly Growth RateBar Color
02013-04-0134240000NaNred
12013-07-01356400004.088785green
22013-10-01380100006.649832green
32014-01-01414300008.997632green
42014-04-014613000011.344436green
52014-07-01479900004.032083green
62014-10-01506500005.542821green
72015-01-01544800007.561698green
82015-04-01596200009.434655green
92015-07-01620800004.126132green
102015-10-01660200006.346649green
112016-01-01708400007.300818green
122016-04-01777100009.697911green
132016-07-01799000002.818170green
142016-10-01832800004.230288green
152017-01-01890900006.976465green
162017-04-01943600005.915366green
172017-07-01990400004.959729green
182017-10-011040200005.028271green
192018-01-011106400006.364161green
202018-04-011189000007.465654green
212018-07-011243500004.583684green
222018-10-011304200004.881383green
232019-01-011392600006.778102green
242019-04-011488600006.893580green
252019-07-011515600001.813785green
262019-10-011583300004.466878green
272020-01-011670900005.532748green
282020-04-011828600009.438027green
292020-07-011929500005.517883green
302020-10-011951500001.140192green
312021-01-012036600004.360748green
322021-04-012076400001.954237green
332021-07-012091800000.741668green
342021-10-012135600002.093890green
352022-01-012218400003.877131green
362022-04-01221640000-0.090155red
372022-07-01220670000-0.437647red
382022-10-012230900001.096660green
392023-01-012307500003.433592green
402023-04-012325000000.758397green
412023-07-012383900002.533333green
\n
" + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "06d98092", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.635615Z", + "start_time": "2023-11-30T16:28:57.551318200Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "marker": { + "color": [ + "red", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "green ", + "red", + "red", + "green ", + "green ", + "green ", + "green " + ] + }, + "name": "Quarterly Growth Rate", + "x": [ + "2013-04-01T00:00:00", + "2013-07-01T00:00:00", + "2013-10-01T00:00:00", + "2014-01-01T00:00:00", + "2014-04-01T00:00:00", + "2014-07-01T00:00:00", + "2014-10-01T00:00:00", + "2015-01-01T00:00:00", + "2015-04-01T00:00:00", + "2015-07-01T00:00:00", + "2015-10-01T00:00:00", + "2016-01-01T00:00:00", + "2016-04-01T00:00:00", + "2016-07-01T00:00:00", + "2016-10-01T00:00:00", + "2017-01-01T00:00:00", + "2017-04-01T00:00:00", + "2017-07-01T00:00:00", + "2017-10-01T00:00:00", + "2018-01-01T00:00:00", + "2018-04-01T00:00:00", + "2018-07-01T00:00:00", + "2018-10-01T00:00:00", + "2019-01-01T00:00:00", + "2019-04-01T00:00:00", + "2019-07-01T00:00:00", + "2019-10-01T00:00:00", + "2020-01-01T00:00:00", + "2020-04-01T00:00:00", + "2020-07-01T00:00:00", + "2020-10-01T00:00:00", + "2021-01-01T00:00:00", + "2021-04-01T00:00:00", + "2021-07-01T00:00:00", + "2021-10-01T00:00:00", + "2022-01-01T00:00:00", + "2022-04-01T00:00:00", + "2022-07-01T00:00:00", + "2022-10-01T00:00:00", + "2023-01-01T00:00:00", + "2023-04-01T00:00:00", + "2023-07-01T00:00:00" + ], + "y": [ + null, + 4.088785046728982, + 6.649831649831639, + 8.997632202052097, + 11.344436398744872, + 4.032083243008877, + 5.542821421129407, + 7.561697926949651, + 9.434654919236408, + 4.126132170412622, + 6.346649484536093, + 7.300817933959403, + 9.697910784867304, + 2.8181701196757114, + 4.230287859824777, + 6.976464937560034, + 5.915366483331463, + 4.959728698601107, + 5.028271405492735, + 6.3641607383195575, + 7.465654374548092, + 4.583683767872171, + 4.881383192601518, + 6.778101518172064, + 6.893580353295992, + 1.8137847642079707, + 4.466877804169966, + 5.532748057853842, + 9.438027410377646, + 5.5178825330854275, + 1.1401917595232014, + 4.360748142454529, + 1.9542374545811647, + 0.7416682720092549, + 2.093890429295353, + 3.877130548791907, + -0.09015506671474771, + -0.43764663418155436, + 1.096660171296504, + 3.433591823927573, + 0.7583965330444142, + 2.533333333333343 + ], + "type": "bar" + } + ], + "layout": { + "template": { + "data": { + "histogram2dcontour": [ + { + "type": "histogram2dcontour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "choropleth": [ + { + "type": "choropleth", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "histogram2d": [ + { + "type": "histogram2d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmap": [ + { + "type": "heatmap", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmapgl": [ + { + "type": "heatmapgl", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "contourcarpet": [ + { + "type": "contourcarpet", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "contour": [ + { + "type": "contour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "surface": [ + { + "type": "surface", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "mesh3d": [ + { + "type": "mesh3d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "parcoords": [ + { + "type": "parcoords", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolargl": [ + { + "type": "scatterpolargl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "scattergeo": [ + { + "type": "scattergeo", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolar": [ + { + "type": "scatterpolar", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "scattergl": [ + { + "type": "scattergl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatter3d": [ + { + "type": "scatter3d", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattermapbox": [ + { + "type": "scattermapbox", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterternary": [ + { + "type": "scatterternary", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattercarpet": [ + { + "type": "scattercarpet", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ] + }, + "layout": { + "autotypenumbers": "strict", + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "hovermode": "closest", + "hoverlabel": { + "align": "left" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "bgcolor": "white", + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "ternary": { + "bgcolor": "white", + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ] + }, + "xaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "automargin": true, + "zerolinewidth": 2 + }, + "yaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "automargin": true, + "zerolinewidth": 2 + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "geo": { + "bgcolor": "white", + "landcolor": "white", + "subunitcolor": "#C8D4E3", + "showland": true, + "showlakes": true, + "lakecolor": "white" + }, + "title": { + "x": 0.05 + }, + "mapbox": { + "style": "light" + } + } + }, + "title": { + "text": "Netflix Quarterly Subscriptions Growth Rate" + }, + "xaxis": { + "title": { + "text": "Time Period" + } + }, + "yaxis": { + "title": { + "text": "Quarterly Growth Rate (%)" + } + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = go.Figure()\n", + "fig.add_trace(go.Bar(\n", + " x=data['Time Period'],\n", + " y=data['Quarterly Growth Rate'],\n", + " marker_color=data['Bar Color'],\n", + " name='Quarterly Growth Rate'\n", + "))\n", + "fig.update_layout(title='Netflix Quarterly Subscriptions Growth Rate',\n", + " xaxis_title='Time Period',\n", + " yaxis_title='Quarterly Growth Rate (%)')\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "16ed482e", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.637603800Z", + "start_time": "2023-11-30T16:28:57.552324500Z" + } + }, + "outputs": [], + "source": [ + "data[\"Year\"] = data[\"Time Period\"].dt.year" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "7753770d", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.639607100Z", + "start_time": "2023-11-30T16:28:57.552324500Z" + } + }, + "outputs": [], + "source": [ + "yearly_growth = round(data.groupby('Year')['Subscribers'].pct_change().fillna(0) * 100)" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "0353f1a8", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.640608700Z", + "start_time": "2023-11-30T16:28:57.560321900Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "0 0.0\n1 4.0\n2 7.0\n3 0.0\n4 11.0\n5 4.0\n6 6.0\n7 0.0\n8 9.0\n9 4.0\n10 6.0\n11 0.0\n12 10.0\n13 3.0\n14 4.0\n15 0.0\n16 6.0\n17 5.0\n18 5.0\n19 0.0\n20 7.0\n21 5.0\n22 5.0\n23 0.0\n24 7.0\n25 2.0\n26 4.0\n27 0.0\n28 9.0\n29 6.0\n30 1.0\n31 0.0\n32 2.0\n33 1.0\n34 2.0\n35 0.0\n36 -0.0\n37 -0.0\n38 1.0\n39 0.0\n40 1.0\n41 3.0\nName: Subscribers, dtype: float64" + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "yearly_growth" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "de7dbbb6", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.642610100Z", + "start_time": "2023-11-30T16:28:57.576346200Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": " Time Period Subscribers Quarterly Growth Rate Bar Color Year\n0 2013-04-01 34240000 NaN red 2013\n1 2013-07-01 35640000 4.088785 green 2013\n2 2013-10-01 38010000 6.649832 green 2013\n3 2014-01-01 41430000 8.997632 green 2014\n4 2014-04-01 46130000 11.344436 green 2014\n5 2014-07-01 47990000 4.032083 green 2014\n6 2014-10-01 50650000 5.542821 green 2014\n7 2015-01-01 54480000 7.561698 green 2015\n8 2015-04-01 59620000 9.434655 green 2015\n9 2015-07-01 62080000 4.126132 green 2015\n10 2015-10-01 66020000 6.346649 green 2015\n11 2016-01-01 70840000 7.300818 green 2016\n12 2016-04-01 77710000 9.697911 green 2016\n13 2016-07-01 79900000 2.818170 green 2016\n14 2016-10-01 83280000 4.230288 green 2016\n15 2017-01-01 89090000 6.976465 green 2017\n16 2017-04-01 94360000 5.915366 green 2017\n17 2017-07-01 99040000 4.959729 green 2017\n18 2017-10-01 104020000 5.028271 green 2017\n19 2018-01-01 110640000 6.364161 green 2018\n20 2018-04-01 118900000 7.465654 green 2018\n21 2018-07-01 124350000 4.583684 green 2018\n22 2018-10-01 130420000 4.881383 green 2018\n23 2019-01-01 139260000 6.778102 green 2019\n24 2019-04-01 148860000 6.893580 green 2019\n25 2019-07-01 151560000 1.813785 green 2019\n26 2019-10-01 158330000 4.466878 green 2019\n27 2020-01-01 167090000 5.532748 green 2020\n28 2020-04-01 182860000 9.438027 green 2020\n29 2020-07-01 192950000 5.517883 green 2020\n30 2020-10-01 195150000 1.140192 green 2020\n31 2021-01-01 203660000 4.360748 green 2021\n32 2021-04-01 207640000 1.954237 green 2021\n33 2021-07-01 209180000 0.741668 green 2021\n34 2021-10-01 213560000 2.093890 green 2021\n35 2022-01-01 221840000 3.877131 green 2022\n36 2022-04-01 221640000 -0.090155 red 2022\n37 2022-07-01 220670000 -0.437647 red 2022\n38 2022-10-01 223090000 1.096660 green 2022\n39 2023-01-01 230750000 3.433592 green 2023\n40 2023-04-01 232500000 0.758397 green 2023\n41 2023-07-01 238390000 2.533333 green 2023", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Time PeriodSubscribersQuarterly Growth RateBar ColorYear
02013-04-0134240000NaNred2013
12013-07-01356400004.088785green2013
22013-10-01380100006.649832green2013
32014-01-01414300008.997632green2014
42014-04-014613000011.344436green2014
52014-07-01479900004.032083green2014
62014-10-01506500005.542821green2014
72015-01-01544800007.561698green2015
82015-04-01596200009.434655green2015
92015-07-01620800004.126132green2015
102015-10-01660200006.346649green2015
112016-01-01708400007.300818green2016
122016-04-01777100009.697911green2016
132016-07-01799000002.818170green2016
142016-10-01832800004.230288green2016
152017-01-01890900006.976465green2017
162017-04-01943600005.915366green2017
172017-07-01990400004.959729green2017
182017-10-011040200005.028271green2017
192018-01-011106400006.364161green2018
202018-04-011189000007.465654green2018
212018-07-011243500004.583684green2018
222018-10-011304200004.881383green2018
232019-01-011392600006.778102green2019
242019-04-011488600006.893580green2019
252019-07-011515600001.813785green2019
262019-10-011583300004.466878green2019
272020-01-011670900005.532748green2020
282020-04-011828600009.438027green2020
292020-07-011929500005.517883green2020
302020-10-011951500001.140192green2020
312021-01-012036600004.360748green2021
322021-04-012076400001.954237green2021
332021-07-012091800000.741668green2021
342021-10-012135600002.093890green2021
352022-01-012218400003.877131green2022
362022-04-01221640000-0.090155red2022
372022-07-01220670000-0.437647red2022
382022-10-012230900001.096660green2022
392023-01-012307500003.433592green2023
402023-04-012325000000.758397green2023
412023-07-012383900002.533333green2023
\n
" + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "c6558991", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.964364Z", + "start_time": "2023-11-30T16:28:57.584922100Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "marker": { + "color": [ + "red", + "green", + "green", + "red", + "green", + "green", + "green", + "red", + "green", + "green", + "green", + "red", + "green", + "green", + "green", + "red", + "green", + "green", + "green", + "red", + "green", + "green", + "green", + "red", + "green", + "green", + "green", + "red", + "green", + "green", + "green", + "red", + "green", + "green", + "green", + "red", + "red", + "red", + "green", + "red", + "green", + "green" + ] + }, + "name": "Yearly Growth Rate", + "x": [ + 2013, + 2013, + 2013, + 2014, + 2014, + 2014, + 2014, + 2015, + 2015, + 2015, + 2015, + 2016, + 2016, + 2016, + 2016, + 2017, + 2017, + 2017, + 2017, + 2018, + 2018, + 2018, + 2018, + 2019, + 2019, + 2019, + 2019, + 2020, + 2020, + 2020, + 2020, + 2021, + 2021, + 2021, + 2021, + 2022, + 2022, + 2022, + 2022, + 2023, + 2023, + 2023 + ], + "y": [ + 0.0, + 4.0, + 7.0, + 0.0, + 11.0, + 4.0, + 6.0, + 0.0, + 9.0, + 4.0, + 6.0, + 0.0, + 10.0, + 3.0, + 4.0, + 0.0, + 6.0, + 5.0, + 5.0, + 0.0, + 7.0, + 5.0, + 5.0, + 0.0, + 7.0, + 2.0, + 4.0, + 0.0, + 9.0, + 6.0, + 1.0, + 0.0, + 2.0, + 1.0, + 2.0, + 0.0, + -0.0, + -0.0, + 1.0, + 0.0, + 1.0, + 3.0 + ], + "type": "bar" + } + ], + "layout": { + "template": { + "data": { + "histogram2dcontour": [ + { + "type": "histogram2dcontour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "choropleth": [ + { + "type": "choropleth", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "histogram2d": [ + { + "type": "histogram2d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmap": [ + { + "type": "heatmap", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmapgl": [ + { + "type": "heatmapgl", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "contourcarpet": [ + { + "type": "contourcarpet", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "contour": [ + { + "type": "contour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "surface": [ + { + "type": "surface", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "mesh3d": [ + { + "type": "mesh3d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "parcoords": [ + { + "type": "parcoords", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolargl": [ + { + "type": "scatterpolargl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "scattergeo": [ + { + "type": "scattergeo", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolar": [ + { + "type": "scatterpolar", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "scattergl": [ + { + "type": "scattergl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatter3d": [ + { + "type": "scatter3d", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattermapbox": [ + { + "type": "scattermapbox", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterternary": [ + { + "type": "scatterternary", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattercarpet": [ + { + "type": "scattercarpet", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ] + }, + "layout": { + "autotypenumbers": "strict", + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "hovermode": "closest", + "hoverlabel": { + "align": "left" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "bgcolor": "white", + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "ternary": { + "bgcolor": "white", + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ] + }, + "xaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "automargin": true, + "zerolinewidth": 2 + }, + "yaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "automargin": true, + "zerolinewidth": 2 + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "geo": { + "bgcolor": "white", + "landcolor": "white", + "subunitcolor": "#C8D4E3", + "showland": true, + "showlakes": true, + "lakecolor": "white" + }, + "title": { + "x": 0.05 + }, + "mapbox": { + "style": "light" + } + } + }, + "title": { + "text": "Netflix Yearly Subscriber Growth Rate" + }, + "xaxis": { + "title": { + "text": "Year" + } + }, + "yaxis": { + "title": { + "text": "Yearly Growth Rate (%)" + } + } + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "\n", + "# Create a new column for bar color (green for positive growth, red for negative growth)\n", + "data['Bar Color'] = yearly_growth.apply(lambda x: 'green' if x > 0 else 'red')\n", + "\n", + "# Plot the yearly subscriber growth rate using bar graphs\n", + "fig = go.Figure()\n", + "fig.add_trace(go.Bar(\n", + " x=data['Year'],\n", + " y=yearly_growth,\n", + " marker_color=data['Bar Color'],\n", + " name='Yearly Growth Rate'\n", + "))\n", + "fig.update_layout(title='Netflix Yearly Subscriber Growth Rate',\n", + " xaxis_title='Year',\n", + " yaxis_title='Yearly Growth Rate (%)')\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "e025f74d", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.965368200Z", + "start_time": "2023-11-30T16:28:57.602391200Z" + } + }, + "outputs": [], + "source": [ + "time_series = data.set_index('Time Period')['Subscribers']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "def7270c", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:57.966358900Z", + "start_time": "2023-11-30T16:28:57.613078Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "Time Period\n2013-04-01 34240000\n2013-07-01 35640000\n2013-10-01 38010000\n2014-01-01 41430000\n2014-04-01 46130000\n2014-07-01 47990000\n2014-10-01 50650000\n2015-01-01 54480000\n2015-04-01 59620000\n2015-07-01 62080000\n2015-10-01 66020000\n2016-01-01 70840000\n2016-04-01 77710000\n2016-07-01 79900000\n2016-10-01 83280000\n2017-01-01 89090000\n2017-04-01 94360000\n2017-07-01 99040000\n2017-10-01 104020000\n2018-01-01 110640000\n2018-04-01 118900000\n2018-07-01 124350000\n2018-10-01 130420000\n2019-01-01 139260000\n2019-04-01 148860000\n2019-07-01 151560000\n2019-10-01 158330000\n2020-01-01 167090000\n2020-04-01 182860000\n2020-07-01 192950000\n2020-10-01 195150000\n2021-01-01 203660000\n2021-04-01 207640000\n2021-07-01 209180000\n2021-10-01 213560000\n2022-01-01 221840000\n2022-04-01 221640000\n2022-07-01 220670000\n2022-10-01 223090000\n2023-01-01 230750000\n2023-04-01 232500000\n2023-07-01 238390000\nName: Subscribers, dtype: int64" + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "time_series" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "5a1b5fef", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.200141400Z", + "start_time": "2023-11-30T16:28:57.619611Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Cihat Emre Karataş\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\statsmodels\\graphics\\tsaplots.py:348: FutureWarning:\n", + "\n", + "The default method 'yw' can produce PACF values outside of the [-1,1] interval. After 0.13, the default will change tounadjusted Yule-Walker ('ywm'). You can use this method now by setting method='ywm'.\n", + "\n" + ] + }, + { + "data": { + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA+oAAAF2CAYAAAD5pWLDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjYuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8o6BhiAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZRklEQVR4nO3deXxU1f3/8fckJJMETMKShUgkBBVEWWyQCC5BSUkQRSyiWCxLESyFWgQr0K+CiJW6lOJCBVs2f6IgKojLF2R1paAg4oJ82fckLCaBAFlmzu+PmIEhkw1mkjvJ6/l4zCMz95575tx7k3zmM/fcc2zGGCMAAAAAAGAJATXdAAAAAAAAcBaJOgAAAAAAFkKiDgAAAACAhZCoAwAAAABgISTqAAAAAABYCIk6AAAAAAAWQqIOAAAAAICFkKgDAAAAAGAhJOoAAAAAAFgIiToAS1i7dq1sNpvWrl3r1XptNpueeOIJr9YJAIAkPfHEE7LZbBe0bdeuXdW1a1fvNgge+eJYX8y5ByqDRB3wgX/961+y2WxKTk6+qHo++ugjksxK4DgBQN0zd+5c2Ww21yMkJERXXnmlRo4cqczMTK+9z6lTp/TEE094/YvkqnI4HIqLi5PNZtP//u//XlRdVtknq+M4oSaRqAM+MH/+fCUkJGjDhg3asWPHBdfz0UcfadKkSV5sWe1U3nE6ffq0HnvssWpuEQCgujz55JP6f//v/+nll19Wly5d9Morr6hz5846deqUV+o/deqUJk2a5DFZe+yxx3T69GmvvE9FVq9ercOHDyshIUHz58+/qLrK2yecZZVzj7qJRB3wst27d+vLL7/U1KlTFRUVddHB1OrK+iBUVFSkgoKCam5NaSEhIapXr15NNwMA4CM9evTQ/fffrwceeEBz587VqFGjtHv3br333nsXVa/T6dSZM2fKLVOvXj2FhIRc1PtU1uuvv65f/epXevjhh7VkyRLl5eVVy/vWlDNnzsjpdHpcZ4V9r85zj7qJRB3wsvnz56thw4bq2bOn7r777lKJeln3Yu/Zs0c2m01z586VJA0aNEjTp0+XJLeufSXy8vI0ZswYxcfHy263q1WrVnr++edljCnVptdff12dOnVSWFiYGjZsqJtvvlkff/yxW5l//etfuvrqq2W32xUXF6cRI0YoOzvbrUzXrl11zTXXaOPGjbr55psVFhamv/71r662P//885o2bZpatmwpu92uH3/8UZL0008/6e6771ajRo0UEhKijh07aunSpRUey88++0x9+/bVZZddJrvdrvj4eD388MNu32BXdJw83aP+zTffqEePHgoPD1eDBg3UrVs3/fe//3UrU9Kl8osvvtDo0aMVFRWl+vXr66677tKRI0cqbDsAoGbceuutkoq/OJek559/Xl26dFHjxo0VGhqqpKQkvf3226W2s9lsGjlypObPn++KhzNmzFBUVJQkadKkSa4YUxJXPN2nPGfOHN16662Kjo6W3W5XmzZt9Morr1zUPp0+fVqLFy9Wv379dM899+j06dMev4go617sQYMGKSEhQVLx543y9kkqvnp/0003qX79+oqMjNSdd96prVu3lqr34MGDGjJkiOLi4mS329WiRQsNHz7c7Yv6Xbt2qW/fvmrUqJHCwsJ0/fXX68MPP3Srp+Sz0YIFC/TYY4/p0ksvVVhYmHJzczVo0CA1aNBAO3fu1G233aZLLrlE/fv3l1T8Zcq0adN09dVXKyQkRDExMXrwwQf1888/l3s8CwoKNGHCBCUlJSkiIkL169fXTTfdpDVr1rjKVHScPJ37oqIiTZ482fU5KCEhQX/961+Vn5/vVi4hIUG33367Pv/8c3Xq1EkhISFKTEzUa6+9Vm67UbdwmQnwsvnz5+s3v/mNgoODdd999+mVV17RV199peuuu65K9Tz44IM6dOiQVqxYof/3//6f2zpjjHr16qU1a9ZoyJAh6tChg5YvX66//OUvOnjwoP75z3+6yk6aNElPPPGEunTpoieffFLBwcFav369Vq9ere7du0sqDjaTJk1Samqqhg8frm3btrna/cUXXygoKMhV37Fjx9SjRw/169dP999/v2JiYlzr5syZozNnzmjYsGGy2+1q1KiRfvjhB91www269NJLNW7cONWvX19vvfWWevfurXfeeUd33XVXmcdg0aJFOnXqlIYPH67GjRtrw4YNeumll3TgwAEtWrSowuPkyQ8//KCbbrpJ4eHhevTRRxUUFKSZM2eqa9eu+uSTT0qNK/CnP/1JDRs21MSJE7Vnzx5NmzZNI0eO1MKFCyt8LwBA9du5c6ckqXHjxpKkF154Qb169VL//v1VUFCgBQsWqG/fvvrggw/Us2dPt21Xr16tt956SyNHjlSTJk3Uvn17vfLKKxo+fLjuuusu/eY3v5EktWvXrsz3f+WVV3T11VerV69eqlevnt5//3398Y9/lNPp1IgRIy5on5YuXaqTJ0+qX79+io2NVdeuXTV//nz99re/rXJdUVFR5e7TypUr1aNHDyUmJuqJJ57Q6dOn9dJLL+mGG27Qpk2bXAn/oUOH1KlTJ2VnZ2vYsGFq3bq1Dh48qLffflunTp1ScHCwMjMz1aVLF506dUoPPfSQGjdurHnz5qlXr156++23S30GmDx5soKDg/XII48oPz9fwcHBkooT4LS0NN144416/vnnFRYWJqn4M8DcuXM1ePBgPfTQQ9q9e7defvllffPNN6U+v5wrNzdX//nPf3Tfffdp6NChOnHihGbNmqW0tDRt2LBBHTp0qPA4efLAAw9o3rx5uvvuuzVmzBitX79eU6ZM0datW7V48WK3sjt27NDdd9+tIUOGaODAgZo9e7YGDRqkpKQkXX311VU8q6iVDACv+frrr40ks2LFCmOMMU6n0zRr1sz8+c9/dpVZs2aNkWTWrFnjtu3u3buNJDNnzhzXshEjRhhPf6ZLliwxksxTTz3ltvzuu+82NpvN7NixwxhjzPbt201AQIC56667jMPhcCvrdDqNMcZkZWWZ4OBg0717d7cyL7/8spFkZs+e7VqWkpJiJJkZM2Z4bHt4eLjJyspyW9etWzfTtm1bc+bMGbf37tKli7niiivKPS6nTp0qte9TpkwxNpvN7N27t8LjZIwxkszEiRNdr3v37m2Cg4PNzp07XcsOHTpkLrnkEnPzzTe7ls2ZM8dIMqmpqa5jZYwxDz/8sAkMDDTZ2dke3w8AUD1K/k+vXLnSHDlyxOzfv98sWLDANG7c2ISGhpoDBw4YY0rHkoKCAnPNNdeYW2+91W25JBMQEGB++OEHt+VHjhwpFUtKTJw4sVT88RS70tLSTGJiotuylJQUk5KSUql9vf32280NN9zgev3qq6+aevXqlYq5ZdU5cOBA07x5c9fr8vapQ4cOJjo62hw7dsy17NtvvzUBAQFmwIABrmUDBgwwAQEB5quvvipVR0ncHDVqlJFkPvvsM9e6EydOmBYtWpiEhATX546SzwCJiYmljt/AgQONJDNu3Di35Z999pmRZObPn++2fNmyZaWWn39cioqKTH5+vtt2P//8s4mJiTG///3vK3Wczj/3mzdvNpLMAw884FbukUceMZLM6tWrXcuaN29uJJlPP/3UtSwrK8vY7XYzZsyYUu+Fuomu74AXzZ8/XzExMbrlllskFXeju/fee7VgwQI5HA6vvc9HH32kwMBAPfTQQ27Lx4wZI2OMazTYJUuWyOl0asKECQoIcP9zL+mutXLlShUUFGjUqFFuZYYOHarw8PBS3dPsdrsGDx7ssV19+vRxdROTpOPHj2v16tW65557dOLECR09elRHjx7VsWPHlJaWpu3bt+vgwYNl7mdoaKjreV5eno4ePaouXbrIGKNvvvmmvEPkkcPh0Mcff6zevXsrMTHRtbxp06b67W9/q88//1y5ublu2wwbNsyta9tNN90kh8OhvXv3Vvn9AQDel5qaqqioKMXHx6tfv35q0KCBFi9erEsvvVSSeyz5+eeflZOTo5tuukmbNm0qVVdKSoratGlzUe059/1ycnJ09OhRpaSkaNeuXcrJyalyfceOHdPy5ct13333uZb16dNHNptNb7311kW19XyHDx/W5s2bNWjQIDVq1Mi1vF27dvr1r3+tjz76SFJxl/MlS5bojjvuUMeOHUvVUxI3P/roI3Xq1Ek33nija12DBg00bNgw7dmzx3WLXImBAwe6Hb9zDR8+3O31okWLFBERoV//+teuzxdHjx5VUlKSGjRo4NaN/XyBgYGuq/VOp1PHjx9XUVGROnbs6PH3ojJKjs3o0aPdlo8ZM0aSSn2eatOmjW666SbX66ioKLVq1Uq7du26oPdH7UPXd8BLHA6HFixYoFtuucV1X5wkJScn6x//+IdWrVrl6mp+sfbu3au4uDhdcsklbsuvuuoq13qpuPtfQEBAuR86Ssq2atXKbXlwcLASExNLJaSXXnqpK7idr0WLFm6vd+zYIWOMHn/8cT3++OMet8nKynJ9mDrfvn37NGHCBC1durTU/WYX8mHnyJEjOnXqVKl9lYqPndPp1P79+926nF122WVu5Ro2bChJFd7/BgCoHtOnT9eVV16pevXqKSYmRq1atXL74vmDDz7QU089pc2bN7vdK+xpDuzz49iF+OKLLzRx4kStW7eu1ICrOTk5ioiIqFJ9CxcuVGFhoa699lq3mWSSk5M1f/78C+5O70lZnwmk4ji5fPly5eXl6eTJk8rNzdU111xTYX2epqo99/PKuXWUdfzr1aunZs2auS3bvn27cnJyFB0d7XGbrKyscts2b948/eMf/9BPP/2kwsLCCttQkb179yogIECXX3652/LY2FhFRkaW+jx1/ucLqfgzBp8vUIJEHfCSkmlTFixYoAULFpRaP3/+fHXv3t3jBwNJXr3i7ktlfdPtaV3JaK2PPPKI0tLSPG5zfkAr4XA49Otf/1rHjx/X2LFj1bp1a9WvX18HDx7UoEGDyhwJ1tsCAwM9LjceBu0DAFS/Tp06ebyqKxUPStqrVy/dfPPN+te//qWmTZsqKChIc+bM0RtvvFGqfHkxrjJ27typbt26qXXr1po6dari4+MVHBysjz76SP/85z8vKHaVDEp7ww03eFy/a9cuVy8xm83mMT75+2cMu91eqmeg0+lUdHR0mbPrnNvD73yvv/66Bg0apN69e+svf/mLoqOjFRgYqClTprjGOLhQZX3OOx+fL1AREnXAS+bPn6/o6GjXCOTnevfdd7V48WLNmDHDdUX2/BHVPXWlLuufffPmzbVy5UqdOHHC7ar6Tz/95FovSS1btpTT6dSPP/6oDh06lFmXJG3bts2tO3hBQYF2796t1NTUMva4YiX1BQUFVbme7777Tv/3f/+nefPmacCAAa7lK1asKFW2skExKipKYWFh2rZtW6l1P/30kwICAhQfH1+ldgIArOudd95RSEiIli9fLrvd7lo+Z86cStdR2RgjSe+//77y8/O1dOlStyum5XXDLk/JlK8jR45USkqK2zqn06nf/e53euONN/TYY49JKr4i66nr9PmfMcr7fCGpzDjZpEkT1a9fX6GhoQoPD9f3339fbvubN29eZl3nvt+FaNmypVauXKkbbrihyl+wvP3220pMTNS7777rdiwmTpzoVq4q57558+ZyOp3avn27q8eAJGVmZio7O/ui9hV1E/eoA15w+vRpvfvuu7r99tt19913l3qMHDlSJ06c0NKlS9W8eXMFBgbq008/davjX//6V6l669evL6l0Un/bbbfJ4XDo5Zdfdlv+z3/+UzabTT169JAk9e7dWwEBAXryySdLfYtf8o1tamqqgoOD9eKLL7p9iztr1izl5OSUGhG3KqKjo9W1a1fNnDlThw8fLrW+vGnOSr5pPrdNxhi98MILpcqWdZw81dm9e3e999572rNnj2t5Zmam3njjDd14440KDw8vtw4AgP8IDAyUzWZzu6K8Z88eLVmypNJ1lIwwXlGMKXk/yT125eTkVOmLgXOVXC1+9NFHS322uOeee5SSkuJ2Rblly5b66aef3OLrt99+qy+++KJS+9S0aVN16NBB8+bNc1v3/fff6+OPP9Ztt90mSQoICFDv3r31/vvv6+uvvy7V7pL9v+2227RhwwatW7fOtS4vL0+vvvqqEhISLmo8gHvuuUcOh0OTJ08uta6oqKjc8+XpPK1fv96tnVLVzn3JsZk2bZrb8qlTp0rSRX2eQt3EFXXAC5YuXaoTJ06oV69eHtdff/31ioqK0vz583Xvvfeqb9++eumll2Sz2dSyZUt98MEHHu+lSkpKkiQ99NBDSktLU2BgoPr166c77rhDt9xyi/7nf/5He/bsUfv27fXxxx/rvffe06hRo9SyZUtJxd3K/+d//keTJ0/WTTfdpN/85jey2+366quvFBcXpylTpigqKkrjx4/XpEmTlJ6erl69emnbtm3617/+peuuu07333//RR2b6dOn68Ybb1Tbtm01dOhQJSYmKjMzU+vWrdOBAwf07bffetyudevWatmypR555BEdPHhQ4eHheueddzzeu1XWcfLkqaee0ooVK3TjjTfqj3/8o+rVq6eZM2cqPz9fzz777EXtKwDAWnr27KmpU6cqPT1dv/3tb5WVlaXp06fr8ssv15YtWypVR2hoqNq0aaOFCxfqyiuvVKNGjXTNNdd4vD+7e/fuCg4O1h133KEHH3xQJ0+e1L///W9FR0d7/MK6IvPnz1eHDh3K7O3Vq1cv/elPf9KmTZv0q1/9Sr///e81depUpaWlaciQIcrKytKMGTN09dVXuw2WWt4+Pffcc+rRo4c6d+6sIUOGuKZni4iIcJtr/emnn9bHH3+slJQUDRs2TFdddZUOHz6sRYsW6fPPP1dkZKTGjRunN998Uz169NBDDz2kRo0aad68edq9e7feeeedUt3ZqyIlJUUPPvigpkyZos2bN6t79+4KCgrS9u3btWjRIr3wwgu6++67PW57++23691339Vdd92lnj17avfu3ZoxY4batGmjkydPVuo4na99+/YaOHCgXn31VWVnZyslJUUbNmzQvHnz1Lt3b9dAw0Cl1chY80Atc8cdd5iQkBCTl5dXZplBgwaZoKAgc/ToUXPkyBHTp08fExYWZho2bGgefPBB8/3335eanq2oqMj86U9/MlFRUcZms7lNA3LixAnz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x19sswEA8KoTJ04oIiKippvhM76K98R6AIC/qEysr1KiPm7cOD3zzDPlltm6datat25dlWp9bvz48Ro9erTrtdPp1PHjx9W4cWPZbLaLqjs3N1fx8fHav39/retax775J/bNP7Fv/smb+2aM0YkTJyp9G5cv+WO892Wsl2rv73Ft3S+JffNX7Jt/Yt8qpyqxvkqJ+pgxYzRo0KByyyQmJlalSpfY2FhJUmZmppo2bepanpmZqQ4dOrjKZGVluW1XVFSk48ePu7b3xG63y263uy2r7Mi0lRUeHl7rfilLsG/+iX3zT+ybf/LWvlnlSro/xvvqiPVS7f09rq37JbFv/op980/sW8UqG+urlKhHRUUpKirqghpUkRYtWig2NlarVq1yBerc3FytX7/eNZJs586dlZ2drY0bNyopKUmStHr1ajmdTiUnJ/ukXQAA1DXEewAAapbPpmfbt2+fNm/erH379snhcGjz5s3avHmz2xyorVu31uLFiyVJNptNo0aN0lNPPaWlS5fqu+++04ABAxQXF6fevXtLkq666iqlp6dr6NCh2rBhg7744guNHDlS/fr1s0RXQQAA6hriPQAA3uezweQmTJigefPmuV5fe+21kqQ1a9aoa9eukqRt27a5RmWVpEcffVR5eXkaNmyYsrOzdeONN2rZsmUKCQlxlZk/f75Gjhypbt26KSAgQH369NGLL77oq92okN1u18SJE0t1t6sN2Df/xL75J/bNP9Xmfass4r1/q637JbFv/op980/sm/f5fB51AAAAAABQeT7r+g4AAAAAAKqORB0AAAAAAAshUQcAAAAAwEJI1AEAAAAAsBAS9UqYPn26EhISFBISouTkZG3YsKHc8osWLVLr1q0VEhKitm3b6qOPPqqmllbelClTdN111+mSSy5RdHS0evfurW3btpW7zdy5c2Wz2dwe547QaxVPPPFEqXa2bt263G384ZxJUkJCQql9s9lsGjFihMfyVj5nn376qe644w7FxcXJZrNpyZIlbuuNMZowYYKaNm2q0NBQpaamavv27RXWW9W/V18ob98KCws1duxYtW3bVvXr11dcXJwGDBigQ4cOlVvnhfxe+0JF523QoEGl2pmenl5hvVY/b5I8/u3ZbDY999xzZdZplfOGyiHeF7Ny7DhXbY33xHpifU3HDGK9NWI9iXoFFi5cqNGjR2vixInatGmT2rdvr7S0NGVlZXks/+WXX+q+++7TkCFD9M0336h3797q3bu3vv/++2puefk++eQTjRgxQv/973+1YsUKFRYWqnv37srLyyt3u/DwcB0+fNj12Lt3bzW1uGquvvpqt3Z+/vnnZZb1l3MmSV999ZXbfq1YsUKS1Ldv3zK3seo5y8vLU/v27TV9+nSP65999lm9+OKLmjFjhtavX6/69esrLS1NZ86cKbPOqv69+kp5+3bq1Clt2rRJjz/+uDZt2qR3331X27ZtU69evSqstyq/175S0XmTpPT0dLd2vvnmm+XW6Q/nTZLbPh0+fFizZ8+WzWZTnz59yq3XCucNFSPeu7Nq7DhfbYz3xHpifU3HDGK9RWK9Qbk6depkRowY4XrtcDhMXFycmTJlisfy99xzj+nZs6fbsuTkZPPggw/6tJ0XKysry0gyn3zySZll5syZYyIiIqqvURdo4sSJpn379pUu76/nzBhj/vznP5uWLVsap9Ppcb2/nDNJZvHixa7XTqfTxMbGmueee861LDs729jtdvPmm2+WWU9V/16rw/n75smGDRuMJLN3794yy1T197o6eNq3gQMHmjvvvLNK9fjrebvzzjvNrbfeWm4ZK543eEa8P8tfYkddiffEenf+GjOI9f553moy1nNFvRwFBQXauHGjUlNTXcsCAgKUmpqqdevWedxm3bp1buUlKS0trczyVpGTkyNJatSoUbnlTp48qebNmys+Pl533nmnfvjhh+poXpVt375dcXFxSkxMVP/+/bVv374yy/rrOSsoKNDrr7+u3//+97LZbGWW85dzdq7du3crIyPD7bxEREQoOTm5zPNyIX+vVpGTkyObzabIyMhyy1Xl97omrV27VtHR0WrVqpWGDx+uY8eOlVnWX89bZmamPvzwQw0ZMqTCsv5y3uoy4n1p/hI7anu8J9a789eYIRHr/fG81XSsJ1Evx9GjR+VwOBQTE+O2PCYmRhkZGR63ycjIqFJ5K3A6nRo1apRuuOEGXXPNNWWWa9WqlWbPnq333ntPr7/+upxOp7p06aIDBw5UY2srlpycrLlz52rZsmV65ZVXtHv3bt100006ceKEx/L+eM4kacmSJcrOztagQYPKLOMv5+x8Jce+KuflQv5ereDMmTMaO3as7rvvPoWHh5dZrqq/1zUlPT1dr732mlatWqVnnnlGn3zyiXr06CGHw+GxvL+et3nz5umSSy7Rb37zm3LL+ct5q+uI9+78JXbUhXhPrHfnrzGDWO+f562mY329i9oatcKIESP0/fffV3gvRefOndW5c2fX6y5duuiqq67SzJkzNXnyZF83s9J69Ojhet6uXTslJyerefPmeuuttyr1jZi/mDVrlnr06KG4uLgyy/jLOaurCgsLdc8998gYo1deeaXcsv7ye92vXz/X87Zt26pdu3Zq2bKl1q5dq27dutVgy7xr9uzZ6t+/f4UDNvnLeUPdQLz3P8R6/0es9181Heu5ol6OJk2aKDAwUJmZmW7LMzMzFRsb63Gb2NjYKpWvaSNHjtQHH3ygNWvWqFmzZlXaNigoSNdee6127Njho9Z5R2RkpK688soy2+lv50yS9u7dq5UrV+qBBx6o0nb+cs5Kjn1VzsuF/L3WpJLAvXfvXq1YsaLcb9g9qej32ioSExPVpEmTMtvpb+dNkj777DNt27atyn9/kv+ct7qGeF8+f4kdtS3eE+tL87eYQawv5m/nTbJGrCdRL0dwcLCSkpK0atUq1zKn06lVq1a5fXN5rs6dO7uVl6QVK1aUWb6mGGM0cuRILV68WKtXr1aLFi2qXIfD4dB3332npk2b+qCF3nPy5Ent3LmzzHb6yzk715w5cxQdHa2ePXtWaTt/OWctWrRQbGys23nJzc3V+vXryzwvF/L3WlNKAvf27du1cuVKNW7cuMp1VPR7bRUHDhzQsWPHymynP523ErNmzVJSUpLat29f5W395bzVNcT78vlL7Kht8Z5YX5o/xQxi/Vn+dN5KWCLWe314ulpmwYIFxm63m7lz55off/zRDBs2zERGRpqMjAxjjDG/+93vzLhx41zlv/jiC1OvXj3z/PPPm61bt5qJEyeaoKAg891339XULng0fPhwExERYdauXWsOHz7sepw6dcpV5vx9mzRpklm+fLnZuXOn2bhxo+nXr58JCQkxP/zwQ03sQpnGjBlj1q5da3bv3m2++OILk5qaapo0aWKysrKMMf57zko4HA5z2WWXmbFjx5Za50/n7MSJE+abb74x33zzjZFkpk6dar755hvXaKh///vfTWRkpHnvvffMli1bzJ133mlatGhhTp8+7arj1ltvNS+99JLrdUV/r1bYt4KCAtOrVy/TrFkzs3nzZre/v/z8/DL3raLfayvs24kTJ8wjjzxi1q1bZ3bv3m1WrlxpfvWrX5krrrjCnDlzpsx984fzViInJ8eEhYWZV155xWMdVj1vqBjx3j9ix7lqc7wn1hPrifXVv28lrBLrSdQr4aWXXjKXXXaZCQ4ONp06dTL//e9/XetSUlLMwIED3cq/9dZb5sorrzTBwcHm6quvNh9++GE1t7hikjw+5syZ4ypz/r6NGjXKdRxiYmLMbbfdZjZt2lT9ja/Avffea5o2bWqCg4PNpZdeau69916zY8cO13p/PWclli9fbiSZbdu2lVrnT+dszZo1Hn8HS9rvdDrN448/bmJiYozdbjfdunUrtc/Nmzc3EydOdFtW3t9rdSlv33bv3l3m39+aNWtcdZy/bxX9Xlth306dOmW6d+9uoqKiTFBQkGnevLkZOnRoqSDsj+etxMyZM01oaKjJzs72WIdVzxsqh3hfzMqx41y1Od4T68/yx5hBrPfP81bCKrHeZowxF3o1HgAAAAAAeBf3qAMAAAAAYCEk6gAAAAAAWAiJOgAAAAAAFkKiDgAAAACAhZCoAwAAAABgISTqAAAAAABYCIk6AAAAAAAWQqIOAAAAAICFkKgDAAAAAGAhJOoAAAAAAFgIiToAAAAAABZCog4AAAAAgIX8f1zVL5DkT3iUAAAAAElFTkSuQmCC\n" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "differenced_series = time_series.diff().dropna()\n", + "\n", + "# Plot ACF and PACF of differenced time series\n", + "fig, axes = plt.subplots(1, 2, figsize=(12, 4))\n", + "plot_acf(differenced_series, ax=axes[0])\n", + "plot_pacf(differenced_series, ax=axes[1])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "30ad68b1", + "metadata": {}, + "source": [ + "ACF ve PACF grafiği, zaman serisi verisinin kendi kendine benzerliği veya otokorelasyon yapılarını analiz etmek için kullanılır. ACF grafiği, her gecikme (lag) değeri için otokorelasyonu gösterirken, PACF grafiği yalnızca belirli bir gecikme değeri için otokorelasyonu gösterir. Bu görselleştirmeler, zaman serisi verisiyle çalışırken model seçimi ve analizinde faydalı olabilir." + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "3324f6d8", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.201145800Z", + "start_time": "2023-11-30T16:28:57.938819Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "Time Period\n2013-07-01 1400000.0\n2013-10-01 2370000.0\n2014-01-01 3420000.0\n2014-04-01 4700000.0\n2014-07-01 1860000.0\n2014-10-01 2660000.0\n2015-01-01 3830000.0\n2015-04-01 5140000.0\n2015-07-01 2460000.0\n2015-10-01 3940000.0\n2016-01-01 4820000.0\n2016-04-01 6870000.0\n2016-07-01 2190000.0\n2016-10-01 3380000.0\n2017-01-01 5810000.0\n2017-04-01 5270000.0\n2017-07-01 4680000.0\n2017-10-01 4980000.0\n2018-01-01 6620000.0\n2018-04-01 8260000.0\n2018-07-01 5450000.0\n2018-10-01 6070000.0\n2019-01-01 8840000.0\n2019-04-01 9600000.0\n2019-07-01 2700000.0\n2019-10-01 6770000.0\n2020-01-01 8760000.0\n2020-04-01 15770000.0\n2020-07-01 10090000.0\n2020-10-01 2200000.0\n2021-01-01 8510000.0\n2021-04-01 3980000.0\n2021-07-01 1540000.0\n2021-10-01 4380000.0\n2022-01-01 8280000.0\n2022-04-01 -200000.0\n2022-07-01 -970000.0\n2022-10-01 2420000.0\n2023-01-01 7660000.0\n2023-04-01 1750000.0\n2023-07-01 5890000.0\nName: Subscribers, dtype: float64" + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "differenced_series" + ] + }, + { + "cell_type": "markdown", + "id": "5b128cf2", + "metadata": {}, + "source": [] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "56fca13d", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.646871900Z", + "start_time": "2023-11-30T16:28:57.945351800Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Cihat Emre Karataş\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:471: ValueWarning:\n", + "\n", + "No frequency information was provided, so inferred frequency QS-OCT will be used.\n", + "\n", + "C:\\Users\\Cihat Emre Karataş\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:471: ValueWarning:\n", + "\n", + "No frequency information was provided, so inferred frequency QS-OCT will be used.\n", + "\n", + "C:\\Users\\Cihat Emre Karataş\\AppData\\Local\\Programs\\Python\\Python311\\Lib\\site-packages\\statsmodels\\tsa\\base\\tsa_model.py:471: ValueWarning:\n", + "\n", + "No frequency information was provided, so inferred frequency QS-OCT will be used.\n", + "\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " SARIMAX Results \n", + "==============================================================================\n", + "Dep. Variable: Subscribers No. Observations: 42\n", + "Model: ARIMA(1, 1, 2) Log Likelihood -672.893\n", + "Date: Thu, 30 Nov 2023 AIC 1353.786\n", + "Time: 19:28:58 BIC 1360.641\n", + "Sample: 04-01-2013 HQIC 1356.282\n", + " - 07-01-2023 \n", + "Covariance Type: opg \n", + "==============================================================================\n", + " coef std err z P>|z| [0.025 0.975]\n", + "------------------------------------------------------------------------------\n", + "ar.L1 0.9998 0.010 96.903 0.000 0.980 1.020\n", + "ma.L1 -0.9625 0.218 -4.407 0.000 -1.391 -0.534\n", + "ma.L2 -0.0300 0.113 -0.266 0.790 -0.251 0.191\n", + "sigma2 1.165e+13 1.49e-14 7.82e+26 0.000 1.17e+13 1.17e+13\n", + "===================================================================================\n", + "Ljung-Box (L1) (Q): 3.31 Jarque-Bera (JB): 3.87\n", + "Prob(Q): 0.07 Prob(JB): 0.14\n", + "Heteroskedasticity (H): 6.31 Skew: 0.49\n", + "Prob(H) (two-sided): 0.00 Kurtosis: 4.14\n", + "===================================================================================\n", + "\n", + "Warnings:\n", + "[1] Covariance matrix calculated using the outer product of gradients (complex-step).\n", + "[2] Covariance matrix is singular or near-singular, with condition number 1.89e+42. Standard errors may be unstable.\n" + ] + } + ], + "source": [ + "p, d, q = 1, 1, 2\n", + "model = ARIMA(time_series, order=(p, d, q))\n", + "results = model.fit()\n", + "print(results.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "066d4ded", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.679874900Z", + "start_time": "2023-11-30T16:28:58.183870100Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": "2023-10-01 243339993\n2024-01-01 248256768\n2024-04-01 253172699\n2024-07-01 258087787\n2024-10-01 263002031\n2025-01-01 267915431\n2025-04-01 272827989\n2025-07-01 277739704\n2025-10-01 282650576\n2026-01-01 287560605\n2026-04-01 292469792\n2026-07-01 297378136\n2026-10-01 302285638\n2027-01-01 307192298\n2027-04-01 312098116\n2027-07-01 317003092\n2027-10-01 321907227\n2028-01-01 326810520\n2028-04-01 331712971\nFreq: QS-OCT, Name: predicted_mean, dtype: int32" + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "future_steps = 20\n", + "predictions = results.predict(len(time_series), len(time_series) + future_steps - 2)\n", + "predictions = predictions.astype(int)\n", + "predictions" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "96fae9ef", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.682887600Z", + "start_time": "2023-11-30T16:28:58.210153900Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "data": [ + { + "mode": "lines", + "name": "Predictions", + "x": [ + "2013-04-01T00:00:00", + "2013-07-01T00:00:00", + "2013-10-01T00:00:00", + "2014-01-01T00:00:00", + "2014-04-01T00:00:00", + "2014-07-01T00:00:00", + "2014-10-01T00:00:00", + "2015-01-01T00:00:00", + "2015-04-01T00:00:00", + "2015-07-01T00:00:00", + "2015-10-01T00:00:00", + "2016-01-01T00:00:00", + "2016-04-01T00:00:00", + "2016-07-01T00:00:00", + "2016-10-01T00:00:00", + "2017-01-01T00:00:00", + "2017-04-01T00:00:00", + "2017-07-01T00:00:00", + "2017-10-01T00:00:00", + "2018-01-01T00:00:00", + "2018-04-01T00:00:00", + "2018-07-01T00:00:00", + "2018-10-01T00:00:00", + "2019-01-01T00:00:00", + "2019-04-01T00:00:00", + "2019-07-01T00:00:00", + "2019-10-01T00:00:00", + "2020-01-01T00:00:00", + "2020-04-01T00:00:00", + "2020-07-01T00:00:00", + "2020-10-01T00:00:00", + "2021-01-01T00:00:00", + "2021-04-01T00:00:00", + "2021-07-01T00:00:00", + "2021-10-01T00:00:00", + "2022-01-01T00:00:00", + "2022-04-01T00:00:00", + "2022-07-01T00:00:00", + "2022-10-01T00:00:00", + "2023-01-01T00:00:00", + "2023-04-01T00:00:00", + "2023-07-01T00:00:00", + "2023-10-01T00:00:00", + "2024-01-01T00:00:00", + "2024-04-01T00:00:00", + "2024-07-01T00:00:00", + "2024-10-01T00:00:00", + "2025-01-01T00:00:00", + "2025-04-01T00:00:00", + "2025-07-01T00:00:00", + "2025-10-01T00:00:00", + "2026-01-01T00:00:00", + "2026-04-01T00:00:00", + "2026-07-01T00:00:00", + "2026-10-01T00:00:00", + "2027-01-01T00:00:00", + "2027-04-01T00:00:00", + "2027-07-01T00:00:00", + "2027-10-01T00:00:00", + "2028-01-01T00:00:00", + "2028-04-01T00:00:00" + ], + "y": [ + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + 2.43339993E8, + 2.48256768E8, + 2.53172699E8, + 2.58087787E8, + 2.63002031E8, + 2.67915431E8, + 2.72827989E8, + 2.77739704E8, + 2.82650576E8, + 2.87560605E8, + 2.92469792E8, + 2.97378136E8, + 3.02285638E8, + 3.07192298E8, + 3.12098116E8, + 3.17003092E8, + 3.21907227E8, + 3.2681052E8, + 3.31712971E8 + ], + "type": "scatter" + }, + { + "mode": "lines", + "name": "Original Data", + "x": [ + "2013-04-01T00:00:00", + "2013-07-01T00:00:00", + "2013-10-01T00:00:00", + "2014-01-01T00:00:00", + "2014-04-01T00:00:00", + "2014-07-01T00:00:00", + "2014-10-01T00:00:00", + "2015-01-01T00:00:00", + "2015-04-01T00:00:00", + "2015-07-01T00:00:00", + "2015-10-01T00:00:00", + "2016-01-01T00:00:00", + "2016-04-01T00:00:00", + "2016-07-01T00:00:00", + "2016-10-01T00:00:00", + "2017-01-01T00:00:00", + "2017-04-01T00:00:00", + "2017-07-01T00:00:00", + "2017-10-01T00:00:00", + "2018-01-01T00:00:00", + "2018-04-01T00:00:00", + "2018-07-01T00:00:00", + "2018-10-01T00:00:00", + "2019-01-01T00:00:00", + "2019-04-01T00:00:00", + "2019-07-01T00:00:00", + "2019-10-01T00:00:00", + "2020-01-01T00:00:00", + "2020-04-01T00:00:00", + "2020-07-01T00:00:00", + "2020-10-01T00:00:00", + "2021-01-01T00:00:00", + "2021-04-01T00:00:00", + "2021-07-01T00:00:00", + "2021-10-01T00:00:00", + "2022-01-01T00:00:00", + "2022-04-01T00:00:00", + "2022-07-01T00:00:00", + "2022-10-01T00:00:00", + "2023-01-01T00:00:00", + "2023-04-01T00:00:00", + "2023-07-01T00:00:00", + "2023-10-01T00:00:00", + "2024-01-01T00:00:00", + "2024-04-01T00:00:00", + "2024-07-01T00:00:00", + "2024-10-01T00:00:00", + "2025-01-01T00:00:00", + "2025-04-01T00:00:00", + "2025-07-01T00:00:00", + "2025-10-01T00:00:00", + "2026-01-01T00:00:00", + "2026-04-01T00:00:00", + "2026-07-01T00:00:00", + "2026-10-01T00:00:00", + "2027-01-01T00:00:00", + "2027-04-01T00:00:00", + "2027-07-01T00:00:00", + "2027-10-01T00:00:00", + "2028-01-01T00:00:00", + "2028-04-01T00:00:00" + ], + "y": [ + 3.424E7, + 3.564E7, + 3.801E7, + 4.143E7, + 4.613E7, + 4.799E7, + 5.065E7, + 5.448E7, + 5.962E7, + 6.208E7, + 6.602E7, + 7.084E7, + 7.771E7, + 7.99E7, + 8.328E7, + 8.909E7, + 9.436E7, + 9.904E7, + 1.0402E8, + 1.1064E8, + 1.189E8, + 1.2435E8, + 1.3042E8, + 1.3926E8, + 1.4886E8, + 1.5156E8, + 1.5833E8, + 1.6709E8, + 1.8286E8, + 1.9295E8, + 1.9515E8, + 2.0366E8, + 2.0764E8, + 2.0918E8, + 2.1356E8, + 2.2184E8, + 2.2164E8, + 2.2067E8, + 2.2309E8, + 2.3075E8, + 2.325E8, + 2.3839E8, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null, + null + ], + "type": "scatter" + } + ], + "layout": { + "template": { + "data": { + "histogram2dcontour": [ + { + "type": "histogram2dcontour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "choropleth": [ + { + "type": "choropleth", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "histogram2d": [ + { + "type": "histogram2d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmap": [ + { + "type": "heatmap", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "heatmapgl": [ + { + "type": "heatmapgl", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "contourcarpet": [ + { + "type": "contourcarpet", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "contour": [ + { + "type": "contour", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "surface": [ + { + "type": "surface", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ] + } + ], + "mesh3d": [ + { + "type": "mesh3d", + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "parcoords": [ + { + "type": "parcoords", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolargl": [ + { + "type": "scatterpolargl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "scattergeo": [ + { + "type": "scattergeo", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterpolar": [ + { + "type": "scatterpolar", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "scattergl": [ + { + "type": "scattergl", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatter3d": [ + { + "type": "scatter3d", + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattermapbox": [ + { + "type": "scattermapbox", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scatterternary": [ + { + "type": "scatterternary", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "scattercarpet": [ + { + "type": "scattercarpet", + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + } + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "#C8D4E3", + "linecolor": "#C8D4E3", + "minorgridcolor": "#C8D4E3", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "white", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ] + }, + "layout": { + "autotypenumbers": "strict", + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "hovermode": "closest", + "hoverlabel": { + "align": "left" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "white", + "polar": { + "bgcolor": "white", + "angularaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + }, + "radialaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "" + } + }, + "ternary": { + "bgcolor": "white", + "aaxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "baxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + }, + "caxis": { + "gridcolor": "#DFE8F3", + "linecolor": "#A2B1C6", + "ticks": "" + } + }, + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "sequential": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0.0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1.0, + "#f0f921" + ] + ], + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ] + }, + "xaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "automargin": true, + "zerolinewidth": 2 + }, + "yaxis": { + "gridcolor": "#EBF0F8", + "linecolor": "#EBF0F8", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "#EBF0F8", + "automargin": true, + "zerolinewidth": 2 + }, + "scene": { + "xaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + }, + "yaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + }, + "zaxis": { + "backgroundcolor": "white", + "gridcolor": "#DFE8F3", + "linecolor": "#EBF0F8", + "showbackground": true, + "ticks": "", + "zerolinecolor": "#EBF0F8", + "gridwidth": 2 + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "geo": { + "bgcolor": "white", + "landcolor": "white", + "subunitcolor": "#C8D4E3", + "showland": true, + "showlakes": true, + "lakecolor": "white" + }, + "title": { + "x": 0.05 + }, + "mapbox": { + "style": "light" + } + } + }, + "legend": { + "x": 0.1, + "y": 0.9 + }, + "title": { + "text": "Netflix Quarterly Subscription Predictions" + }, + "xaxis": { + "title": { + "text": "Time Period" + } + }, + "yaxis": { + "title": { + "text": "Subscribers" + } + }, + "showlegend": true + }, + "config": { + "plotlyServerURL": "https://plot.ly" + } + }, + "text/html": "
" + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# Create a DataFrame with the original data and predictions\n", + "forecast = pd.DataFrame({'Original': time_series, 'Predictions': predictions})\n", + "\n", + "# Plot the original data and predictions\n", + "fig = go.Figure()\n", + "\n", + "fig.add_trace(go.Scatter(x=forecast.index, y=forecast['Predictions'],\n", + " mode='lines', name='Predictions'))\n", + "\n", + "fig.add_trace(go.Scatter(x=forecast.index, y=forecast['Original'],\n", + " mode='lines', name='Original Data'))\n", + "\n", + "fig.update_layout(title='Netflix Quarterly Subscription Predictions',\n", + " xaxis_title='Time Period',\n", + " yaxis_title='Subscribers',\n", + " legend=dict(x=0.1, y=0.9),\n", + " showlegend=True)\n", + "\n", + "fig.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "ba263cfe", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.684888800Z", + "start_time": "2023-11-30T16:28:58.232784800Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": " Original Predictions\n2013-04-01 34240000.0 NaN\n2013-07-01 35640000.0 NaN\n2013-10-01 38010000.0 NaN\n2014-01-01 41430000.0 NaN\n2014-04-01 46130000.0 NaN\n... ... ...\n2027-04-01 NaN 312098116.0\n2027-07-01 NaN 317003092.0\n2027-10-01 NaN 321907227.0\n2028-01-01 NaN 326810520.0\n2028-04-01 NaN 331712971.0\n\n[61 rows x 2 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
OriginalPredictions
2013-04-0134240000.0NaN
2013-07-0135640000.0NaN
2013-10-0138010000.0NaN
2014-01-0141430000.0NaN
2014-04-0146130000.0NaN
.........
2027-04-01NaN312098116.0
2027-07-01NaN317003092.0
2027-10-01NaN321907227.0
2028-01-01NaN326810520.0
2028-04-01NaN331712971.0
\n

61 rows × 2 columns

\n
" + }, + "execution_count": 21, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "forecast" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "56dfbf7c", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.687887700Z", + "start_time": "2023-11-30T16:28:58.247910400Z" + } + }, + "outputs": [], + "source": [ + "with open('arima_model.pkl', 'wb') as model_file:\n", + " pickle.dump(results, model_file)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "2e6d012b", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.687887700Z", + "start_time": "2023-11-30T16:28:58.262859400Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "6fb8ab09", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.687887700Z", + "start_time": "2023-11-30T16:28:58.265875700Z" + } + }, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "580627c7", + "metadata": { + "ExecuteTime": { + "end_time": "2023-11-30T16:28:58.688891700Z", + "start_time": "2023-11-30T16:28:58.270952900Z" + } + }, + "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.11.3" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}