├── .gitignore
├── Obtain_and_Append_Data.ipynb
├── README.md
├── Time Series Stock Sample Data.ipynb
├── Time_Series_Models_Examples.ipynb
├── Weather_data.ipynb
├── data_files
├── additional_data
│ ├── low_revenue.csv
│ └── low_revenue.xlsx
├── financial_data
│ ├── GSPC.csv
│ ├── GSPC_newdata.csv
│ └── august_31_2015_to_now_GSPC.csv
├── price_data
│ ├── BBBY.csv
│ ├── CPB.csv
│ └── VFC_november_17_2014_to_november_15_2019.csv
└── supporting_data
│ └── nyc weather observances.csv
├── fundamental_trend_analysis.ipynb
├── requirements.txt
├── stationarity_check_funtion.py
├── time_series.yml
├── time_series_removing_trends_and_decomposition.ipynb
└── trend_analysis.ipynb
/.gitignore:
--------------------------------------------------------------------------------
1 | # Byte-compiled / optimized / DLL files
2 | __pycache__/
3 | *.py[cod]
4 | *$py.class
5 |
6 | # C extensions
7 | *.so
8 |
9 | # Distribution / packaging
10 | .Python
11 | build/
12 | develop-eggs/
13 | dist/
14 | downloads/
15 | eggs/
16 | .eggs/
17 | lib/
18 | lib64/
19 | parts/
20 | sdist/
21 | var/
22 | wheels/
23 | pip-wheel-metadata/
24 | share/python-wheels/
25 | *.egg-info/
26 | .installed.cfg
27 | *.egg
28 | MANIFEST
29 |
30 | # PyInstaller
31 | # Usually these files are written by a python script from a template
32 | # before PyInstaller builds the exe, so as to inject date/other infos into it.
33 | *.manifest
34 | *.spec
35 |
36 | # Installer logs
37 | pip-log.txt
38 | pip-delete-this-directory.txt
39 |
40 | # Unit test / coverage reports
41 | htmlcov/
42 | .tox/
43 | .nox/
44 | .coverage
45 | .coverage.*
46 | .cache
47 | nosetests.xml
48 | coverage.xml
49 | *.cover
50 | *.py,cover
51 | .hypothesis/
52 | .pytest_cache/
53 |
54 | # Translations
55 | *.mo
56 | *.pot
57 |
58 | # Django stuff:
59 | *.log
60 | local_settings.py
61 | db.sqlite3
62 | db.sqlite3-journal
63 |
64 | # Flask stuff:
65 | instance/
66 | .webassets-cache
67 |
68 | # Scrapy stuff:
69 | .scrapy
70 |
71 | # Sphinx documentation
72 | docs/_build/
73 |
74 | # PyBuilder
75 | target/
76 |
77 | # Jupyter Notebook
78 | .ipynb_checkpoints
79 |
80 | # IPython
81 | profile_default/
82 | ipython_config.py
83 |
84 | # pyenv
85 | .python-version
86 |
87 | # pipenv
88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies
90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not
91 | # install all needed dependencies.
92 | #Pipfile.lock
93 |
94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow
95 | __pypackages__/
96 |
97 | # Celery stuff
98 | celerybeat-schedule
99 | celerybeat.pid
100 |
101 | # SageMath parsed files
102 | *.sage.py
103 |
104 | # Environments
105 | .env
106 | .venv
107 | env/
108 | venv/
109 | ENV/
110 | env.bak/
111 | venv.bak/
112 |
113 | # Spyder project settings
114 | .spyderproject
115 | .spyproject
116 |
117 | # Rope project settings
118 | .ropeproject
119 |
120 | # mkdocs documentation
121 | /site
122 |
123 | # Files
124 | passwords.py
125 | fmppassword.py
126 |
127 | # mypy
128 | .mypy_cache/
129 | .dmypy.json
130 | dmypy.json
131 |
132 | # Pyre type checker
133 | .pyre/
134 |
--------------------------------------------------------------------------------
/Obtain_and_Append_Data.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Obtain and Append Data\n",
8 | "\n",
9 | "This notebook contains code to obtain and append financial data to avoid going over API request limits."
10 | ]
11 | },
12 | {
13 | "cell_type": "code",
14 | "execution_count": 1,
15 | "metadata": {},
16 | "outputs": [],
17 | "source": [
18 | "import pandas as pd\n",
19 | "from datetime import date\n",
20 | "from datetime import timedelta\n",
21 | "import plotly.graph_objects as go\n",
22 | "\n",
23 | "import requests\n",
24 | "import json\n",
25 | "import matplotlib.pyplot as plt\n",
26 | "import matplotlib.dates as mdates\n",
27 | "import matplotlib.ticker as ticker\n",
28 | "\n",
29 | "import numpy as np\n",
30 | "from IPython.display import clear_output\n",
31 | "import time\n",
32 | "# Set plot space as inline for inline plots and qt for external plots\n",
33 | "%matplotlib inline"
34 | ]
35 | },
36 | {
37 | "cell_type": "code",
38 | "execution_count": 2,
39 | "metadata": {},
40 | "outputs": [
41 | {
42 | "name": "stdout",
43 | "output_type": "stream",
44 | "text": [
45 | "3.8.3\n"
46 | ]
47 | }
48 | ],
49 | "source": [
50 | "import platform\n",
51 | "print(platform.python_version())"
52 | ]
53 | },
54 | {
55 | "cell_type": "code",
56 | "execution_count": 3,
57 | "metadata": {},
58 | "outputs": [],
59 | "source": [
60 | "# Obtain the API credentials from an external hidden file\n",
61 | "\n",
62 | "from passwords import api_key"
63 | ]
64 | },
65 | {
66 | "cell_type": "code",
67 | "execution_count": 4,
68 | "metadata": {},
69 | "outputs": [],
70 | "source": [
71 | "# A function to obtain price history\n",
72 | "\n",
73 | "#Utilizing \"UniBit API\" by Vincent Jiang\n",
74 | "#Site: https://unibit.ai/product\n",
75 | "\n",
76 | "#Errors may occur if credits run out, add an error code check to this function\n",
77 | "\n",
78 | "def retrieve_ticker_price_info(ticker, start_date, end_date = False):\n",
79 | " \n",
80 | " # Obtain today's date\n",
81 | " today = date.today()\n",
82 | " \n",
83 | " # A condition to set the end date to today if there is no end date given\n",
84 | " if not end_date:\n",
85 | " end_date = today\n",
86 | " \n",
87 | " \n",
88 | " url = 'https://api.unibit.ai/v2/stock/historical/?tickers={}&interval=1&startDate={}&endDate={}&selectedFields=all&dataType=json&accessKey={}'.format(ticker, start_date, end_date, api_key)\n",
89 | " \n",
90 | " response = requests.get(url)\n",
91 | " \n",
92 | " if response.status_code != 200:\n",
93 | " print(\"The response status code is: \" + str(response.status_code))\n",
94 | " return None\n",
95 | " \n",
96 | " return response.json()\n",
97 | " "
98 | ]
99 | },
100 | {
101 | "cell_type": "code",
102 | "execution_count": 5,
103 | "metadata": {},
104 | "outputs": [],
105 | "source": [
106 | "def retrieve_price_history_dataframe(ticker, ticker_price_history):\n",
107 | " \n",
108 | " data_frame = pd.DataFrame(ticker_price_history['result_data'][ticker])\n",
109 | " \n",
110 | " # Set the index to the 'date' column\n",
111 | " data_frame.set_index('date', inplace = True)\n",
112 | " \n",
113 | " data_frame.sort_index(inplace=True)\n",
114 | " \n",
115 | " return data_frame"
116 | ]
117 | },
118 | {
119 | "cell_type": "code",
120 | "execution_count": 6,
121 | "metadata": {},
122 | "outputs": [],
123 | "source": [
124 | "today = date.today()\n",
125 | "a_year_ago = str(date.today() - timedelta(days=1*365))\n",
126 | "some_five_years_ago = str(date.today() - timedelta(days=5*365))"
127 | ]
128 | },
129 | {
130 | "cell_type": "markdown",
131 | "metadata": {},
132 | "source": [
133 | "## Obtain Original Data from the API\n",
134 | "\n",
135 | "**NOTE: Skip this section if you already have a data set**"
136 | ]
137 | },
138 | {
139 | "cell_type": "code",
140 | "execution_count": 7,
141 | "metadata": {
142 | "scrolled": true
143 | },
144 | "outputs": [
145 | {
146 | "data": {
147 | "text/html": [
148 | "
\n",
149 | "\n",
162 | "
\n",
163 | " \n",
164 | " \n",
165 | " | \n",
166 | " volume | \n",
167 | " high | \n",
168 | " low | \n",
169 | " adj_close | \n",
170 | " close | \n",
171 | " open | \n",
172 | "
\n",
173 | " \n",
174 | " date | \n",
175 | " | \n",
176 | " | \n",
177 | " | \n",
178 | " | \n",
179 | " | \n",
180 | " | \n",
181 | "
\n",
182 | " \n",
183 | " \n",
184 | " \n",
185 | " 2015-08-31 | \n",
186 | " 3915100000 | \n",
187 | " 1986.73 | \n",
188 | " 1965.98 | \n",
189 | " 1972.18 | \n",
190 | " 1972.18 | \n",
191 | " 1986.73 | \n",
192 | "
\n",
193 | " \n",
194 | " 2015-09-01 | \n",
195 | " 4371850000 | \n",
196 | " 1970.09 | \n",
197 | " 1903.07 | \n",
198 | " 1913.85 | \n",
199 | " 1913.85 | \n",
200 | " 1970.09 | \n",
201 | "
\n",
202 | " \n",
203 | " 2015-09-02 | \n",
204 | " 3742620000 | \n",
205 | " 1948.91 | \n",
206 | " 1916.52 | \n",
207 | " 1948.86 | \n",
208 | " 1948.86 | \n",
209 | " 1916.52 | \n",
210 | "
\n",
211 | " \n",
212 | " 2015-09-03 | \n",
213 | " 3520700000 | \n",
214 | " 1975.01 | \n",
215 | " 1944.72 | \n",
216 | " 1951.13 | \n",
217 | " 1951.13 | \n",
218 | " 1950.79 | \n",
219 | "
\n",
220 | " \n",
221 | " 2015-09-04 | \n",
222 | " 3167090000 | \n",
223 | " 1947.76 | \n",
224 | " 1911.21 | \n",
225 | " 1921.22 | \n",
226 | " 1921.22 | \n",
227 | " 1947.76 | \n",
228 | "
\n",
229 | " \n",
230 | "
\n",
231 | "
"
232 | ],
233 | "text/plain": [
234 | " volume high low adj_close close open\n",
235 | "date \n",
236 | "2015-08-31 3915100000 1986.73 1965.98 1972.18 1972.18 1986.73\n",
237 | "2015-09-01 4371850000 1970.09 1903.07 1913.85 1913.85 1970.09\n",
238 | "2015-09-02 3742620000 1948.91 1916.52 1948.86 1948.86 1916.52\n",
239 | "2015-09-03 3520700000 1975.01 1944.72 1951.13 1951.13 1950.79\n",
240 | "2015-09-04 3167090000 1947.76 1911.21 1921.22 1921.22 1947.76"
241 | ]
242 | },
243 | "execution_count": 7,
244 | "metadata": {},
245 | "output_type": "execute_result"
246 | }
247 | ],
248 | "source": [
249 | "# The S&P 500 company ticker is ^GSPC\n",
250 | "\n",
251 | "# Obtain the price info\n",
252 | "inx_info = retrieve_ticker_price_info('^GSPC', some_five_years_ago)\n",
253 | "\n",
254 | "# Create and view the dataframe\n",
255 | "inx_df = retrieve_price_history_dataframe('^GSPC', inx_info)\n",
256 | "inx_df.head()"
257 | ]
258 | },
259 | {
260 | "cell_type": "code",
261 | "execution_count": 8,
262 | "metadata": {},
263 | "outputs": [],
264 | "source": [
265 | "# Save the data as a csv\n",
266 | "# Keep the index as it contains the dates\n",
267 | "#inx_df.to_csv('data_files/financial_data/GSPC.csv')\n",
268 | "# five years\n",
269 | "inx_df.to_csv('data_files/financial_data/august_31_2015_to_now_GSPC.csv')"
270 | ]
271 | },
272 | {
273 | "cell_type": "markdown",
274 | "metadata": {},
275 | "source": [
276 | "## Import a CSV of Time Series Data\n",
277 | "\n",
278 | "This code assumes the data is in ascending order, if this is not the case then make the relevant adjustments. "
279 | ]
280 | },
281 | {
282 | "cell_type": "code",
283 | "execution_count": 7,
284 | "metadata": {
285 | "scrolled": true
286 | },
287 | "outputs": [
288 | {
289 | "data": {
290 | "text/html": [
291 | "\n",
292 | "\n",
305 | "
\n",
306 | " \n",
307 | " \n",
308 | " | \n",
309 | " volume | \n",
310 | " high | \n",
311 | " low | \n",
312 | " adj_close | \n",
313 | " close | \n",
314 | " open | \n",
315 | "
\n",
316 | " \n",
317 | " \n",
318 | " \n",
319 | " 2015-08-31 | \n",
320 | " 3915100000 | \n",
321 | " 1986.73 | \n",
322 | " 1965.98 | \n",
323 | " 1972.18 | \n",
324 | " 1972.18 | \n",
325 | " 1986.73 | \n",
326 | "
\n",
327 | " \n",
328 | " 2015-09-01 | \n",
329 | " 4371850000 | \n",
330 | " 1970.09 | \n",
331 | " 1903.07 | \n",
332 | " 1913.85 | \n",
333 | " 1913.85 | \n",
334 | " 1970.09 | \n",
335 | "
\n",
336 | " \n",
337 | " 2015-09-02 | \n",
338 | " 3742620000 | \n",
339 | " 1948.91 | \n",
340 | " 1916.52 | \n",
341 | " 1948.86 | \n",
342 | " 1948.86 | \n",
343 | " 1916.52 | \n",
344 | "
\n",
345 | " \n",
346 | " 2015-09-03 | \n",
347 | " 3520700000 | \n",
348 | " 1975.01 | \n",
349 | " 1944.72 | \n",
350 | " 1951.13 | \n",
351 | " 1951.13 | \n",
352 | " 1950.79 | \n",
353 | "
\n",
354 | " \n",
355 | " 2015-09-04 | \n",
356 | " 3167090000 | \n",
357 | " 1947.76 | \n",
358 | " 1911.21 | \n",
359 | " 1921.22 | \n",
360 | " 1921.22 | \n",
361 | " 1947.76 | \n",
362 | "
\n",
363 | " \n",
364 | "
\n",
365 | "
"
366 | ],
367 | "text/plain": [
368 | " volume high low adj_close close open\n",
369 | "2015-08-31 3915100000 1986.73 1965.98 1972.18 1972.18 1986.73\n",
370 | "2015-09-01 4371850000 1970.09 1903.07 1913.85 1913.85 1970.09\n",
371 | "2015-09-02 3742620000 1948.91 1916.52 1948.86 1948.86 1916.52\n",
372 | "2015-09-03 3520700000 1975.01 1944.72 1951.13 1951.13 1950.79\n",
373 | "2015-09-04 3167090000 1947.76 1911.21 1921.22 1921.22 1947.76"
374 | ]
375 | },
376 | "execution_count": 7,
377 | "metadata": {},
378 | "output_type": "execute_result"
379 | }
380 | ],
381 | "source": [
382 | "inx_df = pd.read_csv('data_files/financial_data/august_31_2015_to_now_GSPC.csv', index_col = 'date')\n",
383 | "\n",
384 | "# Convert index to date\n",
385 | "# Comment this out if the index is already date type\n",
386 | "inx_df.index = pd.to_datetime(inx_df.index).date\n",
387 | "\n",
388 | "inx_df.head()"
389 | ]
390 | },
391 | {
392 | "cell_type": "code",
393 | "execution_count": 8,
394 | "metadata": {
395 | "scrolled": true
396 | },
397 | "outputs": [
398 | {
399 | "data": {
400 | "text/plain": [
401 | "datetime.date(2020, 10, 9)"
402 | ]
403 | },
404 | "execution_count": 8,
405 | "metadata": {},
406 | "output_type": "execute_result"
407 | }
408 | ],
409 | "source": [
410 | "# Obtain the most recent date\n",
411 | "inx_df.index.max()"
412 | ]
413 | },
414 | {
415 | "cell_type": "markdown",
416 | "metadata": {},
417 | "source": [
418 | "## Obtain Most Recent Data From The API"
419 | ]
420 | },
421 | {
422 | "cell_type": "code",
423 | "execution_count": 9,
424 | "metadata": {},
425 | "outputs": [
426 | {
427 | "data": {
428 | "text/plain": [
429 | "'2020-10-10'"
430 | ]
431 | },
432 | "execution_count": 9,
433 | "metadata": {},
434 | "output_type": "execute_result"
435 | }
436 | ],
437 | "source": [
438 | "# Obtain the next day after the series ends, as a string\n",
439 | "next_day_series_ends = str(inx_df.index.max() + timedelta(days=1))\n",
440 | "next_day_series_ends"
441 | ]
442 | },
443 | {
444 | "cell_type": "code",
445 | "execution_count": 10,
446 | "metadata": {
447 | "scrolled": true
448 | },
449 | "outputs": [
450 | {
451 | "data": {
452 | "text/html": [
453 | "\n",
454 | "\n",
467 | "
\n",
468 | " \n",
469 | " \n",
470 | " | \n",
471 | " volume | \n",
472 | " high | \n",
473 | " low | \n",
474 | " adj_close | \n",
475 | " close | \n",
476 | " open | \n",
477 | "
\n",
478 | " \n",
479 | " date | \n",
480 | " | \n",
481 | " | \n",
482 | " | \n",
483 | " | \n",
484 | " | \n",
485 | " | \n",
486 | "
\n",
487 | " \n",
488 | " \n",
489 | " \n",
490 | " 2020-10-12 | \n",
491 | " 2243800302 | \n",
492 | " 3549.85 | \n",
493 | " 3499.61 | \n",
494 | " 3534.22 | \n",
495 | " 3534.22 | \n",
496 | " 3500.02 | \n",
497 | "
\n",
498 | " \n",
499 | " 2020-10-13 | \n",
500 | " 2357875709 | \n",
501 | " 3534.01 | \n",
502 | " 3500.86 | \n",
503 | " 3511.93 | \n",
504 | " 3511.93 | \n",
505 | " 3534.01 | \n",
506 | "
\n",
507 | " \n",
508 | " 2020-10-14 | \n",
509 | " 2183733760 | \n",
510 | " 3527.94 | \n",
511 | " 3480.55 | \n",
512 | " 3488.67 | \n",
513 | " 3488.67 | \n",
514 | " 3515.47 | \n",
515 | "
\n",
516 | " \n",
517 | " 2020-10-15 | \n",
518 | " 2009665085 | \n",
519 | " 3489.08 | \n",
520 | " 3440.89 | \n",
521 | " 3483.34 | \n",
522 | " 3483.34 | \n",
523 | " 3453.72 | \n",
524 | "
\n",
525 | " \n",
526 | " 2020-10-16 | \n",
527 | " 2221194565 | \n",
528 | " 3515.76 | \n",
529 | " 3480.45 | \n",
530 | " 3483.81 | \n",
531 | " 3483.81 | \n",
532 | " 3493.50 | \n",
533 | "
\n",
534 | " \n",
535 | "
\n",
536 | "
"
537 | ],
538 | "text/plain": [
539 | " volume high low adj_close close open\n",
540 | "date \n",
541 | "2020-10-12 2243800302 3549.85 3499.61 3534.22 3534.22 3500.02\n",
542 | "2020-10-13 2357875709 3534.01 3500.86 3511.93 3511.93 3534.01\n",
543 | "2020-10-14 2183733760 3527.94 3480.55 3488.67 3488.67 3515.47\n",
544 | "2020-10-15 2009665085 3489.08 3440.89 3483.34 3483.34 3453.72\n",
545 | "2020-10-16 2221194565 3515.76 3480.45 3483.81 3483.81 3493.50"
546 | ]
547 | },
548 | "execution_count": 10,
549 | "metadata": {},
550 | "output_type": "execute_result"
551 | }
552 | ],
553 | "source": [
554 | "# The S&P 500 company ticker is ^GSPC\n",
555 | "\n",
556 | "# Obtain the price info\n",
557 | "additional_info = retrieve_ticker_price_info('^GSPC', next_day_series_ends)\n",
558 | "\n",
559 | "# Create and view the dataframe\n",
560 | "additional_info_df = retrieve_price_history_dataframe('^GSPC', additional_info)\n",
561 | "additional_info_df.head()"
562 | ]
563 | },
564 | {
565 | "cell_type": "code",
566 | "execution_count": 11,
567 | "metadata": {},
568 | "outputs": [
569 | {
570 | "data": {
571 | "text/html": [
572 | "\n",
573 | "\n",
586 | "
\n",
587 | " \n",
588 | " \n",
589 | " | \n",
590 | " volume | \n",
591 | " high | \n",
592 | " low | \n",
593 | " adj_close | \n",
594 | " close | \n",
595 | " open | \n",
596 | "
\n",
597 | " \n",
598 | " date | \n",
599 | " | \n",
600 | " | \n",
601 | " | \n",
602 | " | \n",
603 | " | \n",
604 | " | \n",
605 | "
\n",
606 | " \n",
607 | " \n",
608 | " \n",
609 | " 2021-03-01 | \n",
610 | " 2396462084 | \n",
611 | " 3914.50 | \n",
612 | " 3842.51 | \n",
613 | " 3901.82 | \n",
614 | " 3901.82 | \n",
615 | " 3842.51 | \n",
616 | "
\n",
617 | " \n",
618 | " 2021-03-02 | \n",
619 | " 2260692760 | \n",
620 | " 3906.41 | \n",
621 | " 3868.57 | \n",
622 | " 3870.29 | \n",
623 | " 3870.29 | \n",
624 | " 3903.64 | \n",
625 | "
\n",
626 | " \n",
627 | " 2021-03-03 | \n",
628 | " 2707411093 | \n",
629 | " 3874.47 | \n",
630 | " 3818.86 | \n",
631 | " 3819.72 | \n",
632 | " 3819.72 | \n",
633 | " 3863.99 | \n",
634 | "
\n",
635 | " \n",
636 | " 2021-03-04 | \n",
637 | " 3406529250 | \n",
638 | " 3843.67 | \n",
639 | " 3723.34 | \n",
640 | " 3768.47 | \n",
641 | " 3768.47 | \n",
642 | " 3818.53 | \n",
643 | "
\n",
644 | " \n",
645 | " 2021-03-05 | \n",
646 | " 3289749172 | \n",
647 | " 3851.69 | \n",
648 | " 3730.19 | \n",
649 | " 3841.94 | \n",
650 | " 3841.94 | \n",
651 | " 3793.58 | \n",
652 | "
\n",
653 | " \n",
654 | "
\n",
655 | "
"
656 | ],
657 | "text/plain": [
658 | " volume high low adj_close close open\n",
659 | "date \n",
660 | "2021-03-01 2396462084 3914.50 3842.51 3901.82 3901.82 3842.51\n",
661 | "2021-03-02 2260692760 3906.41 3868.57 3870.29 3870.29 3903.64\n",
662 | "2021-03-03 2707411093 3874.47 3818.86 3819.72 3819.72 3863.99\n",
663 | "2021-03-04 3406529250 3843.67 3723.34 3768.47 3768.47 3818.53\n",
664 | "2021-03-05 3289749172 3851.69 3730.19 3841.94 3841.94 3793.58"
665 | ]
666 | },
667 | "execution_count": 11,
668 | "metadata": {},
669 | "output_type": "execute_result"
670 | }
671 | ],
672 | "source": [
673 | "additional_info_df.tail()"
674 | ]
675 | },
676 | {
677 | "cell_type": "markdown",
678 | "metadata": {},
679 | "source": [
680 | "## Append The Original Dataframe\n",
681 | "\n",
682 | "You can either add to the old file or create a new one"
683 | ]
684 | },
685 | {
686 | "cell_type": "code",
687 | "execution_count": 12,
688 | "metadata": {},
689 | "outputs": [],
690 | "source": [
691 | "result = pd.concat([inx_df, additional_info_df])"
692 | ]
693 | },
694 | {
695 | "cell_type": "code",
696 | "execution_count": 13,
697 | "metadata": {
698 | "scrolled": false
699 | },
700 | "outputs": [
701 | {
702 | "data": {
703 | "text/html": [
704 | "\n",
705 | "\n",
718 | "
\n",
719 | " \n",
720 | " \n",
721 | " | \n",
722 | " volume | \n",
723 | " high | \n",
724 | " low | \n",
725 | " adj_close | \n",
726 | " close | \n",
727 | " open | \n",
728 | "
\n",
729 | " \n",
730 | " \n",
731 | " \n",
732 | " 2021-02-12 | \n",
733 | " 1800378488 | \n",
734 | " 3937.23 | \n",
735 | " 3905.78 | \n",
736 | " 3934.83 | \n",
737 | " 3934.83 | \n",
738 | " 3911.65 | \n",
739 | "
\n",
740 | " \n",
741 | " 2021-02-16 | \n",
742 | " 2255757920 | \n",
743 | " 3950.43 | \n",
744 | " 3923.85 | \n",
745 | " 3932.59 | \n",
746 | " 3932.59 | \n",
747 | " 3939.61 | \n",
748 | "
\n",
749 | " \n",
750 | " 2021-02-17 | \n",
751 | " 2125158209 | \n",
752 | " 3933.61 | \n",
753 | " 3900.43 | \n",
754 | " 3931.33 | \n",
755 | " 3931.33 | \n",
756 | " 3918.50 | \n",
757 | "
\n",
758 | " \n",
759 | " 2021-02-18 | \n",
760 | " 2006038034 | \n",
761 | " 3921.98 | \n",
762 | " 3885.03 | \n",
763 | " 3913.97 | \n",
764 | " 3913.97 | \n",
765 | " 3915.86 | \n",
766 | "
\n",
767 | " \n",
768 | " 2021-02-19 | \n",
769 | " 2302434831 | \n",
770 | " 3930.41 | \n",
771 | " 3903.07 | \n",
772 | " 3906.71 | \n",
773 | " 3906.71 | \n",
774 | " 3921.16 | \n",
775 | "
\n",
776 | " \n",
777 | " 2021-02-22 | \n",
778 | " 2727910851 | \n",
779 | " 3902.92 | \n",
780 | " 3874.71 | \n",
781 | " 3876.50 | \n",
782 | " 3876.50 | \n",
783 | " 3885.55 | \n",
784 | "
\n",
785 | " \n",
786 | " 2021-02-23 | \n",
787 | " 2935239035 | \n",
788 | " 3895.98 | \n",
789 | " 3805.59 | \n",
790 | " 3881.37 | \n",
791 | " 3881.37 | \n",
792 | " 3857.07 | \n",
793 | "
\n",
794 | " \n",
795 | " 2021-02-24 | \n",
796 | " 2769841207 | \n",
797 | " 3928.65 | \n",
798 | " 3859.60 | \n",
799 | " 3925.43 | \n",
800 | " 3925.43 | \n",
801 | " 3873.71 | \n",
802 | "
\n",
803 | " \n",
804 | " 2021-02-25 | \n",
805 | " 2900718392 | \n",
806 | " 3925.02 | \n",
807 | " 3814.04 | \n",
808 | " 3829.34 | \n",
809 | " 3829.34 | \n",
810 | " 3915.80 | \n",
811 | "
\n",
812 | " \n",
813 | " 2021-02-26 | \n",
814 | " 3090399078 | \n",
815 | " 3861.08 | \n",
816 | " 3789.54 | \n",
817 | " 3811.15 | \n",
818 | " 3811.15 | \n",
819 | " 3839.66 | \n",
820 | "
\n",
821 | " \n",
822 | " 2021-03-01 | \n",
823 | " 2396462084 | \n",
824 | " 3914.50 | \n",
825 | " 3842.51 | \n",
826 | " 3901.82 | \n",
827 | " 3901.82 | \n",
828 | " 3842.51 | \n",
829 | "
\n",
830 | " \n",
831 | " 2021-03-02 | \n",
832 | " 2260692760 | \n",
833 | " 3906.41 | \n",
834 | " 3868.57 | \n",
835 | " 3870.29 | \n",
836 | " 3870.29 | \n",
837 | " 3903.64 | \n",
838 | "
\n",
839 | " \n",
840 | " 2021-03-03 | \n",
841 | " 2707411093 | \n",
842 | " 3874.47 | \n",
843 | " 3818.86 | \n",
844 | " 3819.72 | \n",
845 | " 3819.72 | \n",
846 | " 3863.99 | \n",
847 | "
\n",
848 | " \n",
849 | " 2021-03-04 | \n",
850 | " 3406529250 | \n",
851 | " 3843.67 | \n",
852 | " 3723.34 | \n",
853 | " 3768.47 | \n",
854 | " 3768.47 | \n",
855 | " 3818.53 | \n",
856 | "
\n",
857 | " \n",
858 | " 2021-03-05 | \n",
859 | " 3289749172 | \n",
860 | " 3851.69 | \n",
861 | " 3730.19 | \n",
862 | " 3841.94 | \n",
863 | " 3841.94 | \n",
864 | " 3793.58 | \n",
865 | "
\n",
866 | " \n",
867 | "
\n",
868 | "
"
869 | ],
870 | "text/plain": [
871 | " volume high low adj_close close open\n",
872 | "2021-02-12 1800378488 3937.23 3905.78 3934.83 3934.83 3911.65\n",
873 | "2021-02-16 2255757920 3950.43 3923.85 3932.59 3932.59 3939.61\n",
874 | "2021-02-17 2125158209 3933.61 3900.43 3931.33 3931.33 3918.50\n",
875 | "2021-02-18 2006038034 3921.98 3885.03 3913.97 3913.97 3915.86\n",
876 | "2021-02-19 2302434831 3930.41 3903.07 3906.71 3906.71 3921.16\n",
877 | "2021-02-22 2727910851 3902.92 3874.71 3876.50 3876.50 3885.55\n",
878 | "2021-02-23 2935239035 3895.98 3805.59 3881.37 3881.37 3857.07\n",
879 | "2021-02-24 2769841207 3928.65 3859.60 3925.43 3925.43 3873.71\n",
880 | "2021-02-25 2900718392 3925.02 3814.04 3829.34 3829.34 3915.80\n",
881 | "2021-02-26 3090399078 3861.08 3789.54 3811.15 3811.15 3839.66\n",
882 | "2021-03-01 2396462084 3914.50 3842.51 3901.82 3901.82 3842.51\n",
883 | "2021-03-02 2260692760 3906.41 3868.57 3870.29 3870.29 3903.64\n",
884 | "2021-03-03 2707411093 3874.47 3818.86 3819.72 3819.72 3863.99\n",
885 | "2021-03-04 3406529250 3843.67 3723.34 3768.47 3768.47 3818.53\n",
886 | "2021-03-05 3289749172 3851.69 3730.19 3841.94 3841.94 3793.58"
887 | ]
888 | },
889 | "execution_count": 13,
890 | "metadata": {},
891 | "output_type": "execute_result"
892 | }
893 | ],
894 | "source": [
895 | "result.tail(15)"
896 | ]
897 | },
898 | {
899 | "cell_type": "markdown",
900 | "metadata": {},
901 | "source": [
902 | "## Check The Dataframe for Duplicates"
903 | ]
904 | },
905 | {
906 | "cell_type": "code",
907 | "execution_count": 14,
908 | "metadata": {},
909 | "outputs": [
910 | {
911 | "data": {
912 | "text/html": [
913 | "\n",
914 | "\n",
927 | "
\n",
928 | " \n",
929 | " \n",
930 | " | \n",
931 | " volume | \n",
932 | " high | \n",
933 | " low | \n",
934 | " adj_close | \n",
935 | " close | \n",
936 | " open | \n",
937 | "
\n",
938 | " \n",
939 | " \n",
940 | " \n",
941 | "
\n",
942 | "
"
943 | ],
944 | "text/plain": [
945 | "Empty DataFrame\n",
946 | "Columns: [volume, high, low, adj_close, close, open]\n",
947 | "Index: []"
948 | ]
949 | },
950 | "execution_count": 14,
951 | "metadata": {},
952 | "output_type": "execute_result"
953 | }
954 | ],
955 | "source": [
956 | "result[result.index.duplicated()]"
957 | ]
958 | },
959 | {
960 | "cell_type": "markdown",
961 | "metadata": {},
962 | "source": [
963 | "## Save The New Dataframe\n",
964 | "\n",
965 | "You can overwrite the old file as well"
966 | ]
967 | },
968 | {
969 | "cell_type": "code",
970 | "execution_count": 15,
971 | "metadata": {},
972 | "outputs": [],
973 | "source": [
974 | "# Save the data as a csv\n",
975 | "result.to_csv('data_files/financial_data/GSPC_newdata.csv', index_label = 'date')"
976 | ]
977 | },
978 | {
979 | "cell_type": "code",
980 | "execution_count": 16,
981 | "metadata": {
982 | "scrolled": true
983 | },
984 | "outputs": [
985 | {
986 | "data": {
987 | "text/html": [
988 | "\n",
989 | "\n",
1002 | "
\n",
1003 | " \n",
1004 | " \n",
1005 | " | \n",
1006 | " volume | \n",
1007 | " high | \n",
1008 | " low | \n",
1009 | " adj_close | \n",
1010 | " close | \n",
1011 | " open | \n",
1012 | "
\n",
1013 | " \n",
1014 | " date | \n",
1015 | " | \n",
1016 | " | \n",
1017 | " | \n",
1018 | " | \n",
1019 | " | \n",
1020 | " | \n",
1021 | "
\n",
1022 | " \n",
1023 | " \n",
1024 | " \n",
1025 | " 2021-02-12 | \n",
1026 | " 1800378488 | \n",
1027 | " 3937.23 | \n",
1028 | " 3905.78 | \n",
1029 | " 3934.83 | \n",
1030 | " 3934.83 | \n",
1031 | " 3911.65 | \n",
1032 | "
\n",
1033 | " \n",
1034 | " 2021-02-16 | \n",
1035 | " 2255757920 | \n",
1036 | " 3950.43 | \n",
1037 | " 3923.85 | \n",
1038 | " 3932.59 | \n",
1039 | " 3932.59 | \n",
1040 | " 3939.61 | \n",
1041 | "
\n",
1042 | " \n",
1043 | " 2021-02-17 | \n",
1044 | " 2125158209 | \n",
1045 | " 3933.61 | \n",
1046 | " 3900.43 | \n",
1047 | " 3931.33 | \n",
1048 | " 3931.33 | \n",
1049 | " 3918.50 | \n",
1050 | "
\n",
1051 | " \n",
1052 | " 2021-02-18 | \n",
1053 | " 2006038034 | \n",
1054 | " 3921.98 | \n",
1055 | " 3885.03 | \n",
1056 | " 3913.97 | \n",
1057 | " 3913.97 | \n",
1058 | " 3915.86 | \n",
1059 | "
\n",
1060 | " \n",
1061 | " 2021-02-19 | \n",
1062 | " 2302434831 | \n",
1063 | " 3930.41 | \n",
1064 | " 3903.07 | \n",
1065 | " 3906.71 | \n",
1066 | " 3906.71 | \n",
1067 | " 3921.16 | \n",
1068 | "
\n",
1069 | " \n",
1070 | " 2021-02-22 | \n",
1071 | " 2727910851 | \n",
1072 | " 3902.92 | \n",
1073 | " 3874.71 | \n",
1074 | " 3876.50 | \n",
1075 | " 3876.50 | \n",
1076 | " 3885.55 | \n",
1077 | "
\n",
1078 | " \n",
1079 | " 2021-02-23 | \n",
1080 | " 2935239035 | \n",
1081 | " 3895.98 | \n",
1082 | " 3805.59 | \n",
1083 | " 3881.37 | \n",
1084 | " 3881.37 | \n",
1085 | " 3857.07 | \n",
1086 | "
\n",
1087 | " \n",
1088 | " 2021-02-24 | \n",
1089 | " 2769841207 | \n",
1090 | " 3928.65 | \n",
1091 | " 3859.60 | \n",
1092 | " 3925.43 | \n",
1093 | " 3925.43 | \n",
1094 | " 3873.71 | \n",
1095 | "
\n",
1096 | " \n",
1097 | " 2021-02-25 | \n",
1098 | " 2900718392 | \n",
1099 | " 3925.02 | \n",
1100 | " 3814.04 | \n",
1101 | " 3829.34 | \n",
1102 | " 3829.34 | \n",
1103 | " 3915.80 | \n",
1104 | "
\n",
1105 | " \n",
1106 | " 2021-02-26 | \n",
1107 | " 3090399078 | \n",
1108 | " 3861.08 | \n",
1109 | " 3789.54 | \n",
1110 | " 3811.15 | \n",
1111 | " 3811.15 | \n",
1112 | " 3839.66 | \n",
1113 | "
\n",
1114 | " \n",
1115 | " 2021-03-01 | \n",
1116 | " 2396462084 | \n",
1117 | " 3914.50 | \n",
1118 | " 3842.51 | \n",
1119 | " 3901.82 | \n",
1120 | " 3901.82 | \n",
1121 | " 3842.51 | \n",
1122 | "
\n",
1123 | " \n",
1124 | " 2021-03-02 | \n",
1125 | " 2260692760 | \n",
1126 | " 3906.41 | \n",
1127 | " 3868.57 | \n",
1128 | " 3870.29 | \n",
1129 | " 3870.29 | \n",
1130 | " 3903.64 | \n",
1131 | "
\n",
1132 | " \n",
1133 | " 2021-03-03 | \n",
1134 | " 2707411093 | \n",
1135 | " 3874.47 | \n",
1136 | " 3818.86 | \n",
1137 | " 3819.72 | \n",
1138 | " 3819.72 | \n",
1139 | " 3863.99 | \n",
1140 | "
\n",
1141 | " \n",
1142 | " 2021-03-04 | \n",
1143 | " 3406529250 | \n",
1144 | " 3843.67 | \n",
1145 | " 3723.34 | \n",
1146 | " 3768.47 | \n",
1147 | " 3768.47 | \n",
1148 | " 3818.53 | \n",
1149 | "
\n",
1150 | " \n",
1151 | " 2021-03-05 | \n",
1152 | " 3289749172 | \n",
1153 | " 3851.69 | \n",
1154 | " 3730.19 | \n",
1155 | " 3841.94 | \n",
1156 | " 3841.94 | \n",
1157 | " 3793.58 | \n",
1158 | "
\n",
1159 | " \n",
1160 | "
\n",
1161 | "
"
1162 | ],
1163 | "text/plain": [
1164 | " volume high low adj_close close open\n",
1165 | "date \n",
1166 | "2021-02-12 1800378488 3937.23 3905.78 3934.83 3934.83 3911.65\n",
1167 | "2021-02-16 2255757920 3950.43 3923.85 3932.59 3932.59 3939.61\n",
1168 | "2021-02-17 2125158209 3933.61 3900.43 3931.33 3931.33 3918.50\n",
1169 | "2021-02-18 2006038034 3921.98 3885.03 3913.97 3913.97 3915.86\n",
1170 | "2021-02-19 2302434831 3930.41 3903.07 3906.71 3906.71 3921.16\n",
1171 | "2021-02-22 2727910851 3902.92 3874.71 3876.50 3876.50 3885.55\n",
1172 | "2021-02-23 2935239035 3895.98 3805.59 3881.37 3881.37 3857.07\n",
1173 | "2021-02-24 2769841207 3928.65 3859.60 3925.43 3925.43 3873.71\n",
1174 | "2021-02-25 2900718392 3925.02 3814.04 3829.34 3829.34 3915.80\n",
1175 | "2021-02-26 3090399078 3861.08 3789.54 3811.15 3811.15 3839.66\n",
1176 | "2021-03-01 2396462084 3914.50 3842.51 3901.82 3901.82 3842.51\n",
1177 | "2021-03-02 2260692760 3906.41 3868.57 3870.29 3870.29 3903.64\n",
1178 | "2021-03-03 2707411093 3874.47 3818.86 3819.72 3819.72 3863.99\n",
1179 | "2021-03-04 3406529250 3843.67 3723.34 3768.47 3768.47 3818.53\n",
1180 | "2021-03-05 3289749172 3851.69 3730.19 3841.94 3841.94 3793.58"
1181 | ]
1182 | },
1183 | "execution_count": 16,
1184 | "metadata": {},
1185 | "output_type": "execute_result"
1186 | }
1187 | ],
1188 | "source": [
1189 | "# Read in the file\n",
1190 | "pd.read_csv('data_files/financial_data/GSPC_newdata.csv', index_col = 'date').tail(15)"
1191 | ]
1192 | },
1193 | {
1194 | "cell_type": "code",
1195 | "execution_count": null,
1196 | "metadata": {},
1197 | "outputs": [],
1198 | "source": []
1199 | }
1200 | ],
1201 | "metadata": {
1202 | "kernelspec": {
1203 | "display_name": "Python 3",
1204 | "language": "python",
1205 | "name": "python3"
1206 | },
1207 | "language_info": {
1208 | "codemirror_mode": {
1209 | "name": "ipython",
1210 | "version": 3
1211 | },
1212 | "file_extension": ".py",
1213 | "mimetype": "text/x-python",
1214 | "name": "python",
1215 | "nbconvert_exporter": "python",
1216 | "pygments_lexer": "ipython3",
1217 | "version": "3.8.3"
1218 | }
1219 | },
1220 | "nbformat": 4,
1221 | "nbformat_minor": 4
1222 | }
1223 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Time Series Examples
2 | This repository contains examples of time series analysis.
3 |
4 | This repository contains twelve files and one folder:
5 |
6 | 1) `data_files` - A folder containing subfolders of `.csv` files for this repository. The subfolders are titled by subject, i.e. `financial_data` contains fundamental data, `price_data` contains stock prices, and `supporting_data` contains general time series data for analysis
7 |
8 | 2) **gitignore** - Contains the files excluded from this repository
9 |
10 | 3) **Obtain_and_Append_Data.ipynb** - A notebook which contains code that appends time series data from an API, to avoid request limitations
11 |
12 | 4) **README.md** - This document
13 |
14 | 5) **Time Series Stock Sample Data.ipynb** - A Jupyter Notebook containing examples of preparing time series data for analysis
15 |
16 | 6) **Time_Series_Models_Examples.ipynb** - A Jupyter Notebook containing multiple time series models
17 |
18 | 7) **Weather_data.ipynb** - A Jupyter Notebook containing a visualization of weather data
19 |
20 | 8) **fundamental_trend_analysis.ipynb** - A Jupyter Notebook containing analysis of fundamental financial data
21 |
22 | 9) **requirements.txt** - The requirements file for running the files of this repository
23 |
24 | 10) **stationarity_check_funtion.py** - Contains a funtion that neatly displays the results of a Dickey-Fuller test
25 |
26 | 11) **time_series.yml** - A file for replicating the environment required to run the files within this repository
27 |
28 | 12) **time_series_removing_trends_and_decomposition.ipynb** - A Jupyter Notebook containing the removal of trends for time series analysis
29 |
30 | 13) **trend_analysis.ipynb** - A Jupyter Notebook containing examples of stationarity
31 |
32 |
33 | # Relevant Articles Written About This Repository:
34 |
35 | 1) ["Working With Time Series Data"](https://towardsdatascience.com/working-with-time-series-data-a8872ebcac3) (Towards Data Science) - An article about time series data visualizations with matplotlib and Plotly, based on **Time Series Stock Sample Data.ipynb** - *Published December 19, 2019*
36 |
37 | 2) ["Time Series and Trend Analysis"](https://medium.com/datadriveninvestor/time-series-and-trend-analysis-6a4f255f3d6e) (Data Driven Investor) - An article about time series trend analysis using matplotlib, its mpl component, and statsmodels based on **trend_analysis.ipynb** - *Published December 26, 2019*
38 |
39 | 3) ["Achieving Stationarity With Time Series Data"](https://towardsdatascience.com/achieving-stationarity-with-time-series-data-abd59fd8d5a0) (Towards Data Science) - An article about stationarity in time series data based on **time_series_removing_trends_and_decomposition.ipynb** - *Published January 9, 2020*
40 |
41 | 4) ["Time Series Decomposition and Statsmodels Parameters"](https://medium.com/@amitrani/time-series-decomposition-and-statsmodels-parameters-69e54d035453) (Towards Data Science) - An article about time series decomposition models using the statsmodels module based on **time_series_removing_trends_and_decomposition.ipynb** - *Published January 16, 2020, Updated July 11, 2020*
42 |
--------------------------------------------------------------------------------
/Weather_data.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "code",
5 | "execution_count": 9,
6 | "metadata": {},
7 | "outputs": [],
8 | "source": [
9 | "import pandas as pd\n",
10 | "import numpy as np\n",
11 | "\n",
12 | "import matplotlib.pyplot as plt"
13 | ]
14 | },
15 | {
16 | "cell_type": "code",
17 | "execution_count": 18,
18 | "metadata": {},
19 | "outputs": [
20 | {
21 | "data": {
22 | "text/html": [
23 | "\n",
24 | "\n",
37 | "
\n",
38 | " \n",
39 | " \n",
40 | " | \n",
41 | " Date | \n",
42 | " Temp_Max | \n",
43 | " Temp_Avg | \n",
44 | " Temp_Min | \n",
45 | " Humidity_Max | \n",
46 | " Humidity_Avg | \n",
47 | " Humidity_Min | \n",
48 | " Precipitation (in)_Total | \n",
49 | " Rain | \n",
50 | "
\n",
51 | " \n",
52 | " \n",
53 | " \n",
54 | " 36 | \n",
55 | " 12/7/19 | \n",
56 | " 38 | \n",
57 | " 35.7 | \n",
58 | " 32 | \n",
59 | " 57 | \n",
60 | " 48.5 | \n",
61 | " 38 | \n",
62 | " 0.00 | \n",
63 | " 0 | \n",
64 | "
\n",
65 | " \n",
66 | " 37 | \n",
67 | " 12/8/19 | \n",
68 | " 44 | \n",
69 | " 36.7 | \n",
70 | " 28 | \n",
71 | " 68 | \n",
72 | " 56.2 | \n",
73 | " 43 | \n",
74 | " 0.00 | \n",
75 | " 0 | \n",
76 | "
\n",
77 | " \n",
78 | " 38 | \n",
79 | " 12/9/19 | \n",
80 | " 56 | \n",
81 | " 47.8 | \n",
82 | " 41 | \n",
83 | " 93 | \n",
84 | " 88.2 | \n",
85 | " 73 | \n",
86 | " 0.17 | \n",
87 | " 1 | \n",
88 | "
\n",
89 | " \n",
90 | " 39 | \n",
91 | " 12/10/19 | \n",
92 | " 58 | \n",
93 | " 54.2 | \n",
94 | " 40 | \n",
95 | " 88 | \n",
96 | " 77.5 | \n",
97 | " 57 | \n",
98 | " 1.63 | \n",
99 | " 1 | \n",
100 | "
\n",
101 | " \n",
102 | " 40 | \n",
103 | " 12/11/19 | \n",
104 | " 40 | \n",
105 | " 35.3 | \n",
106 | " 32 | \n",
107 | " 92 | \n",
108 | " 76.5 | \n",
109 | " 42 | \n",
110 | " 0.43 | \n",
111 | " 1 | \n",
112 | "
\n",
113 | " \n",
114 | "
\n",
115 | "
"
116 | ],
117 | "text/plain": [
118 | " Date Temp_Max Temp_Avg Temp_Min Humidity_Max Humidity_Avg \\\n",
119 | "36 12/7/19 38 35.7 32 57 48.5 \n",
120 | "37 12/8/19 44 36.7 28 68 56.2 \n",
121 | "38 12/9/19 56 47.8 41 93 88.2 \n",
122 | "39 12/10/19 58 54.2 40 88 77.5 \n",
123 | "40 12/11/19 40 35.3 32 92 76.5 \n",
124 | "\n",
125 | " Humidity_Min Precipitation (in)_Total Rain \n",
126 | "36 38 0.00 0 \n",
127 | "37 43 0.00 0 \n",
128 | "38 73 0.17 1 \n",
129 | "39 57 1.63 1 \n",
130 | "40 42 0.43 1 "
131 | ]
132 | },
133 | "execution_count": 18,
134 | "metadata": {},
135 | "output_type": "execute_result"
136 | }
137 | ],
138 | "source": [
139 | "weather = pd.read_csv('data_files/supporting_data/nyc weather observances.csv')\n",
140 | "weather.tail()"
141 | ]
142 | },
143 | {
144 | "cell_type": "code",
145 | "execution_count": 3,
146 | "metadata": {},
147 | "outputs": [],
148 | "source": [
149 | "weather_avg_temp = weather.copy()"
150 | ]
151 | },
152 | {
153 | "cell_type": "code",
154 | "execution_count": 4,
155 | "metadata": {},
156 | "outputs": [],
157 | "source": [
158 | "#weather_avg_temp.at[1,'Temp_Avg']= np.NaN"
159 | ]
160 | },
161 | {
162 | "cell_type": "code",
163 | "execution_count": 5,
164 | "metadata": {},
165 | "outputs": [],
166 | "source": [
167 | "# Convert 'Date' column values to datetime data type\n",
168 | "weather_avg_temp.Date = pd.to_datetime(weather_avg_temp.Date)"
169 | ]
170 | },
171 | {
172 | "cell_type": "code",
173 | "execution_count": 6,
174 | "metadata": {},
175 | "outputs": [],
176 | "source": [
177 | "weather_avg_temp.set_index('Date', inplace = True)"
178 | ]
179 | },
180 | {
181 | "cell_type": "code",
182 | "execution_count": 7,
183 | "metadata": {},
184 | "outputs": [
185 | {
186 | "data": {
187 | "text/html": [
188 | "\n",
189 | "\n",
202 | "
\n",
203 | " \n",
204 | " \n",
205 | " | \n",
206 | " Temp_Max | \n",
207 | " Temp_Avg | \n",
208 | " Temp_Min | \n",
209 | " Humidity_Max | \n",
210 | " Humidity_Avg | \n",
211 | " Humidity_Min | \n",
212 | " Precipitation (in)_Total | \n",
213 | " Rain | \n",
214 | "
\n",
215 | " \n",
216 | " Date | \n",
217 | " | \n",
218 | " | \n",
219 | " | \n",
220 | " | \n",
221 | " | \n",
222 | " | \n",
223 | " | \n",
224 | " | \n",
225 | "
\n",
226 | " \n",
227 | " \n",
228 | " \n",
229 | " 2019-11-01 | \n",
230 | " 66 | \n",
231 | " 52.1 | \n",
232 | " 44 | \n",
233 | " 96 | \n",
234 | " 58.0 | \n",
235 | " 38 | \n",
236 | " 0.2 | \n",
237 | " 1 | \n",
238 | "
\n",
239 | " \n",
240 | " 2019-11-02 | \n",
241 | " 50 | \n",
242 | " 45.5 | \n",
243 | " 40 | \n",
244 | " 71 | \n",
245 | " 58.8 | \n",
246 | " 46 | \n",
247 | " 0.0 | \n",
248 | " 0 | \n",
249 | "
\n",
250 | " \n",
251 | " 2019-11-03 | \n",
252 | " 52 | \n",
253 | " 47.7 | \n",
254 | " 44 | \n",
255 | " 56 | \n",
256 | " 47.7 | \n",
257 | " 38 | \n",
258 | " 0.0 | \n",
259 | " 0 | \n",
260 | "
\n",
261 | " \n",
262 | " 2019-11-04 | \n",
263 | " 55 | \n",
264 | " 50.3 | \n",
265 | " 43 | \n",
266 | " 61 | \n",
267 | " 48.4 | \n",
268 | " 35 | \n",
269 | " 0.0 | \n",
270 | " 0 | \n",
271 | "
\n",
272 | " \n",
273 | " 2019-11-05 | \n",
274 | " 61 | \n",
275 | " 56.7 | \n",
276 | " 51 | \n",
277 | " 80 | \n",
278 | " 63.9 | \n",
279 | " 42 | \n",
280 | " 0.0 | \n",
281 | " 0 | \n",
282 | "
\n",
283 | " \n",
284 | "
\n",
285 | "
"
286 | ],
287 | "text/plain": [
288 | " Temp_Max Temp_Avg Temp_Min Humidity_Max Humidity_Avg \\\n",
289 | "Date \n",
290 | "2019-11-01 66 52.1 44 96 58.0 \n",
291 | "2019-11-02 50 45.5 40 71 58.8 \n",
292 | "2019-11-03 52 47.7 44 56 47.7 \n",
293 | "2019-11-04 55 50.3 43 61 48.4 \n",
294 | "2019-11-05 61 56.7 51 80 63.9 \n",
295 | "\n",
296 | " Humidity_Min Precipitation (in)_Total Rain \n",
297 | "Date \n",
298 | "2019-11-01 38 0.2 1 \n",
299 | "2019-11-02 46 0.0 0 \n",
300 | "2019-11-03 38 0.0 0 \n",
301 | "2019-11-04 35 0.0 0 \n",
302 | "2019-11-05 42 0.0 0 "
303 | ]
304 | },
305 | "execution_count": 7,
306 | "metadata": {},
307 | "output_type": "execute_result"
308 | }
309 | ],
310 | "source": [
311 | "weather_avg_temp.head()"
312 | ]
313 | },
314 | {
315 | "cell_type": "code",
316 | "execution_count": 17,
317 | "metadata": {},
318 | "outputs": [
319 | {
320 | "data": {
321 | "image/png": "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\n",
322 | "text/plain": [
323 | ""
324 | ]
325 | },
326 | "metadata": {
327 | "needs_background": "light"
328 | },
329 | "output_type": "display_data"
330 | }
331 | ],
332 | "source": [
333 | "weather_avg_temp['Temp_Avg'].plot(figsize = (20,6), style = \".b\")\n",
334 | "font = {'family' : 'normal',\n",
335 | " 'weight' : 'bold',\n",
336 | " 'size' : 22}\n",
337 | "\n",
338 | "plt.rcParams.update({'font.size': 22})\n",
339 | "\n",
340 | "plt.title(\"NYC DAILY TEMPERATURE\", fontdict=None, loc='center', pad=None)\n",
341 | "plt.show()"
342 | ]
343 | },
344 | {
345 | "cell_type": "code",
346 | "execution_count": null,
347 | "metadata": {},
348 | "outputs": [],
349 | "source": []
350 | }
351 | ],
352 | "metadata": {
353 | "kernelspec": {
354 | "display_name": "Python 3",
355 | "language": "python",
356 | "name": "python3"
357 | },
358 | "language_info": {
359 | "codemirror_mode": {
360 | "name": "ipython",
361 | "version": 3
362 | },
363 | "file_extension": ".py",
364 | "mimetype": "text/x-python",
365 | "name": "python",
366 | "nbconvert_exporter": "python",
367 | "pygments_lexer": "ipython3",
368 | "version": "3.8.3"
369 | }
370 | },
371 | "nbformat": 4,
372 | "nbformat_minor": 2
373 | }
374 |
--------------------------------------------------------------------------------
/data_files/additional_data/low_revenue.csv:
--------------------------------------------------------------------------------
1 | date,low_revenue
2 | 11/2/07,11565
3 | 2/1/08,10379
4 | 5/1/08,12009
5 | 8/1/08,14509
6 | 11/1/08,11728
7 | 1/20/09,9984
8 | 4/30/09,11832
9 | 7/30/09,13844
10 | 10/30/09,11375
11 | 1/29/10,10168
12 | 4/29/10,12388
13 | 7/29/10,14361
14 | 10/29/10,11587
15 | 1/28/11,10480
16 | 4/29/11,12185
17 | 7/29/11,14543
18 | 10/28/11,11852
19 | 2/3/12,11629
20 | 5/4/12,13153
21 | 8/3/12,14249
22 | 11/2/12,12073
23 | 2/1/13,11046
24 | 5/3/13,13088
25 | 8/2/13,15711
26 | 11/1/13,12957
27 | 1/31/14,11660
28 | 5/2/14,13403
29 | 8/1/14,16599
30 | 10/31/14,13681
31 | 1/30/15,12540
32 | 5/1/15,14129
33 | 7/31/15,17348
34 | 10/30/15,14360
35 | 1/29/16,13236
36 | 4/29/16,15234
37 | 7/29/16,18260
38 | 10/28/16,15739
39 | 2/3/17,15784
40 | 5/2/17,16860
41 | 8/2/17,19495
42 | 11/2/17,16770
43 | 2/2/18,15494
44 | 5/2/18,17360
45 | 8/2/18,20888
46 | 11/2/18,17415
47 | 2/1/19,15647
48 | 5/1/19,17741
49 | 8/1/19,20992
50 | 11/1/19,17388
51 | 1/31/20,16027
52 | 4/30/20,19675
53 | 7/30/20,27302
--------------------------------------------------------------------------------
/data_files/additional_data/low_revenue.xlsx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/amitrani6/time-series-examples/d8ec56f513fe6d7233b8c81869bd429858ae9541/data_files/additional_data/low_revenue.xlsx
--------------------------------------------------------------------------------
/data_files/financial_data/GSPC.csv:
--------------------------------------------------------------------------------
1 | date,volume,high,low,adj_close,close,open
2 | 2019-08-05,4513730000,2898.07,2822.12,2844.74,2844.74,2898.07
3 | 2019-08-06,4154240000,2884.4,2847.42,2881.77,2881.77,2861.18
4 | 2019-08-07,4491750000,2892.17,2825.71,2883.98,2883.98,2858.65
5 | 2019-08-08,4106370000,2938.72,2894.47,2938.09,2938.09,2896.21
6 | 2019-08-09,3350640000,2935.75,2900.15,2918.65,2918.65,2930.51
7 | 2019-08-12,2851630000,2907.58,2873.14,2882.7,2882.7,2907.07
8 | 2019-08-13,3853600000,2943.31,2877.05,2926.32,2926.32,2880.72
9 | 2019-08-14,4312530000,2894.15,2839.64,2840.6,2840.6,2894.15
10 | 2019-08-15,4038000000,2856.67,2825.51,2847.6,2847.6,2846.2
11 | 2019-08-16,3498150000,2893.63,2864.74,2888.68,2888.68,2864.74
12 | 2019-08-19,3212880000,2931.0,2913.48,2923.65,2923.65,2913.48
13 | 2019-08-20,3066300000,2923.63,2899.6,2900.51,2900.51,2919.01
14 | 2019-08-21,3011190000,2928.73,2917.91,2924.43,2924.43,2922.04
15 | 2019-08-22,2890880000,2939.08,2904.51,2922.95,2922.95,2930.94
16 | 2019-08-23,3937300000,2927.01,2834.97,2847.11,2847.11,2911.07
17 | 2019-08-26,2857600000,2879.27,2856.0,2878.38,2878.38,2866.7
18 | 2019-08-27,3533630000,2898.79,2860.59,2869.16,2869.16,2893.14
19 | 2019-08-28,3097420000,2890.03,2853.05,2887.94,2887.94,2861.28
20 | 2019-08-29,3176190000,2930.5,2905.67,2924.58,2924.58,2910.37
21 | 2019-08-30,3008450000,2940.43,2913.32,2926.46,2926.46,2937.09
22 | 2019-09-03,3426790000,2914.39,2891.85,2906.27,2906.27,2909.01
23 | 2019-09-04,3163260000,2938.84,2921.86,2937.78,2937.78,2924.67
24 | 2019-09-05,1985626103,2985.86,2960.6,2976.0,2976.0,2960.6
25 | 2019-09-06,3208280000,2985.03,2972.51,2978.71,2978.71,2980.33
26 | 2019-09-09,4002890000,2989.43,2969.39,2978.43,2978.43,2988.43
27 | 2019-09-10,4390770000,2979.39,2957.01,2979.39,2979.39,2971.01
28 | 2019-09-11,3927550000,3000.93,2975.31,3000.93,3000.93,2981.41
29 | 2019-09-12,3791860000,3020.74,3000.92,3009.57,3009.57,3009.08
30 | 2019-09-13,3520060000,3017.33,3002.9,3007.39,3007.39,3012.21
31 | 2019-09-16,4274640000,3002.19,2990.67,2997.96,2997.96,2996.41
32 | 2019-09-17,3671840000,3006.21,2993.73,3005.7,3005.7,2995.67
33 | 2019-09-18,3435540000,3007.83,2978.57,3006.73,3006.73,3001.5
34 | 2019-09-19,3251290000,3021.99,3003.16,3006.79,3006.79,3010.36
35 | 2019-09-20,6094740000,3016.37,2984.68,2992.07,2992.07,3008.42
36 | 2019-09-23,3186590000,2999.15,2982.23,2991.78,2991.78,2983.5
37 | 2019-09-24,3868160000,3007.98,2957.73,2966.6,2966.6,3002.43
38 | 2019-09-25,3318870000,2989.82,2952.86,2984.87,2984.87,2968.35
39 | 2019-09-26,3077240000,2987.28,2963.71,2977.62,2977.62,2985.73
40 | 2019-09-27,3243650000,2987.31,2945.53,2961.79,2961.79,2985.47
41 | 2019-09-30,3247610000,2983.85,2967.07,2976.74,2976.74,2967.07
42 | 2019-10-01,3558040000,2992.53,2938.7,2940.25,2940.25,2983.69
43 | 2019-10-02,3912520000,2924.78,2874.93,2887.61,2887.61,2924.78
44 | 2019-10-03,3503640000,2911.13,2855.94,2910.63,2910.63,2885.38
45 | 2019-10-04,2990830000,2953.74,2918.56,2952.01,2952.01,2918.56
46 | 2019-10-07,2940140000,2959.75,2935.68,2938.79,2938.79,2944.23
47 | 2019-10-08,3356450000,2925.47,2892.66,2893.06,2893.06,2920.4
48 | 2019-10-09,2726820000,2929.32,2907.41,2919.4,2919.4,2911.1
49 | 2019-10-10,3217250000,2948.46,2917.12,2938.13,2938.13,2918.55
50 | 2019-10-11,3580460000,2993.28,2963.07,2970.27,2970.27,2963.07
51 | 2019-10-14,2557020000,2972.84,2962.94,2966.15,2966.15,2965.81
52 | 2019-10-15,3340740000,3003.28,2973.61,2995.68,2995.68,2973.61
53 | 2019-10-16,3222570000,2997.54,2985.2,2989.69,2989.69,2989.68
54 | 2019-10-17,3115960000,3008.29,2991.79,2997.95,2997.95,3000.77
55 | 2019-10-18,3264290000,3000.0,2976.31,2986.2,2986.2,2996.84
56 | 2019-10-21,3271620000,3007.33,2995.35,3006.72,3006.72,2996.48
57 | 2019-10-22,3523890000,3014.57,2995.04,2995.99,2995.99,3010.73
58 | 2019-10-23,3392870000,3004.78,2991.21,3004.52,3004.52,2994.01
59 | 2019-10-24,3692600000,3016.07,3000.42,3010.29,3010.29,3014.78
60 | 2019-10-25,3370370000,3027.39,3001.94,3022.55,3022.55,3003.32
61 | 2019-10-28,3521230000,3044.08,3032.12,3039.42,3039.42,3032.12
62 | 2019-10-29,3589930000,3047.87,3034.81,3036.89,3036.89,3035.39
63 | 2019-10-30,3776030000,3050.1,3025.96,3046.77,3046.77,3039.74
64 | 2019-10-31,4139280000,3046.9,3023.19,3037.56,3037.56,3046.9
65 | 2019-11-01,3930200000,3066.95,3050.72,3066.91,3066.91,3050.72
66 | 2019-11-04,4146850000,3085.2,3074.87,3078.27,3078.27,3078.96
67 | 2019-11-05,4486130000,3083.95,3072.15,3074.62,3074.62,3080.8
68 | 2019-11-06,4458190000,3078.34,3065.89,3076.78,3076.78,3075.1
69 | 2019-11-07,4144640000,3097.77,3080.23,3085.18,3085.18,3087.02
70 | 2019-11-08,3499150000,3093.09,3073.58,3093.08,3093.08,3081.25
71 | 2019-11-11,3035530000,3088.33,3075.82,3087.01,3087.01,3080.33
72 | 2019-11-12,3466010000,3102.61,3084.73,3091.84,3091.84,3089.28
73 | 2019-11-13,3509280000,3098.06,3078.8,3094.04,3094.04,3084.18
74 | 2019-11-14,3276070000,3098.2,3083.26,3096.63,3096.63,3090.75
75 | 2019-11-15,3335650000,3120.46,3104.6,3120.46,3120.46,3107.92
76 | 2019-11-18,3436690000,3124.17,3112.06,3122.03,3122.03,3117.91
77 | 2019-11-19,3590070000,3127.64,3113.47,3120.18,3120.18,3127.45
78 | 2019-11-20,2347345205,3118.97,3091.41,3108.46,3108.46,3114.66
79 | 2019-11-21,1862138394,3110.11,3094.55,3103.54,3103.54,3108.49
80 | 2019-11-22,1598304145,3112.87,3099.26,3110.29,3110.29,3111.41
81 | 2019-11-25,1904704053,3133.83,3117.44,3133.64,3133.64,3117.44
82 | 2019-11-26,2454169908,3142.69,3131.0,3140.52,3140.52,3134.85
83 | 2019-11-27,1493045171,3154.26,3143.41,3153.63,3153.63,3145.49
84 | 2019-11-29,836642225,3150.3,3139.34,3140.98,3140.98,3147.18
85 | 2019-12-02,1742453940,3144.31,3110.78,3113.87,3113.87,3143.85
86 | 2019-12-03,1991484979,3094.97,3070.33,3093.2,3093.2,3087.41
87 | 2019-12-04,1770489070,3119.38,3102.53,3112.76,3112.76,3103.5
88 | 2019-12-05,1582614614,3119.45,3103.76,3117.43,3117.43,3119.21
89 | 2019-12-06,1688196494,3150.6,3134.62,3145.91,3145.91,3134.62
90 | 2019-12-09,1572519451,3148.87,3135.46,3135.96,3135.96,3141.86
91 | 2019-12-10,1641661702,3142.12,3126.09,3132.52,3132.52,3135.36
92 | 2019-12-11,1663261842,3143.98,3133.21,3141.63,3141.63,3135.75
93 | 2019-12-12,2217305086,3176.28,3138.47,3168.57,3168.57,3141.23
94 | 2019-12-13,1934682971,3182.68,3156.51,3168.8,3168.8,3166.65
95 | 2019-12-16,2114772905,3197.71,3183.63,3191.45,3191.45,3183.63
96 | 2019-12-17,1971590974,3198.22,3191.03,3192.52,3192.52,3195.4
97 | 2019-12-18,2109637089,3198.48,3191.14,3191.14,3191.14,3195.21
98 | 2019-12-19,1923928144,3205.48,3192.32,3205.37,3205.37,3192.32
99 | 2019-12-20,3697537000,3225.65,3216.03,3221.22,3221.22,3223.33
100 | 2019-12-23,1526843199,3227.78,3222.3,3224.01,3224.01,3226.05
101 | 2019-12-24,604560645,3226.43,3220.51,3223.38,3223.38,3225.45
102 | 2019-12-26,1047945052,3240.08,3227.2,3239.91,3239.91,3227.2
103 | 2019-12-27,1101102056,3247.93,3234.37,3240.02,3240.02,3247.23
104 | 2019-12-30,1181640579,3240.92,3216.57,3221.29,3221.29,3240.09
105 | 2019-12-31,1285724433,3231.72,3212.03,3230.78,3230.78,3215.18
106 | 2020-01-02,1813749343,3258.14,3235.53,3257.85,3257.85,3244.67
107 | 2020-01-03,1733947876,3246.15,3222.34,3234.85,3234.85,3226.36
108 | 2020-01-06,1833999145,3246.84,3214.64,3246.28,3246.28,3217.55
109 | 2020-01-07,1849578843,3244.91,3232.43,3237.18,3237.18,3241.86
110 | 2020-01-08,1921189956,3267.07,3236.67,3253.05,3253.05,3238.59
111 | 2020-01-09,1806379088,3275.58,3263.67,3274.7,3274.7,3266.03
112 | 2020-01-10,1623629246,3282.99,3260.86,3265.35,3265.35,3281.81
113 | 2020-01-13,1730551341,3288.13,3268.43,3288.13,3288.13,3271.13
114 | 2020-01-14,1924882221,3294.25,3277.19,3283.15,3283.15,3285.35
115 | 2020-01-15,1781972412,3298.66,3280.69,3289.29,3289.29,3282.27
116 | 2020-01-16,1780804696,3317.11,3302.82,3316.81,3316.81,3302.97
117 | 2020-01-17,2097343426,3329.88,3318.86,3329.62,3329.62,3323.66
118 | 2020-01-21,2190847523,3329.79,3316.61,3320.79,3320.79,3321.03
119 | 2020-01-22,1852031183,3337.77,3320.04,3321.75,3321.75,3330.02
120 | 2020-01-23,2034159847,3326.88,3301.87,3325.54,3325.54,3315.77
121 | 2020-01-24,2098084732,3333.18,3281.53,3295.47,3295.47,3333.1
122 | 2020-01-27,2136117899,3258.85,3234.5,3243.63,3243.63,3247.16
123 | 2020-01-28,1927261468,3285.78,3253.22,3276.24,3276.24,3255.35
124 | 2020-01-29,2084087513,3293.47,3271.89,3273.4,3273.4,3289.46
125 | 2020-01-30,2253788999,3285.91,3242.8,3283.66,3283.66,3256.45
126 | 2020-01-31,2678835839,3282.33,3214.68,3225.52,3225.52,3282.33
127 | 2020-02-03,2080767120,3268.44,3235.66,3248.92,3248.92,3235.66
128 | 2020-02-04,2140871720,3306.92,3280.61,3297.59,3297.59,3280.61
129 | 2020-02-05,2252878600,3337.58,3313.75,3334.69,3334.69,3324.91
130 | 2020-02-06,1953737177,3347.96,3334.39,3345.78,3345.78,3344.92
131 | 2020-02-07,1846439738,3341.42,3322.12,3327.71,3327.71,3335.54
132 | 2020-02-10,1699054266,3352.26,3317.77,3352.09,3352.09,3318.28
133 | 2020-02-11,1863190856,3375.63,3352.72,3357.75,3357.75,3365.87
134 | 2020-02-12,1988016252,3381.47,3369.72,3379.45,3379.45,3370.5
135 | 2020-02-13,1886207698,3385.09,3360.52,3373.94,3373.94,3365.9
136 | 2020-02-14,1648157072,3380.69,3366.15,3380.16,3380.16,3378.08
137 | 2020-02-18,1865392416,3375.01,3355.61,3370.29,3370.29,3369.04
138 | 2020-02-19,1711946279,3393.52,3378.83,3386.15,3386.15,3380.39
139 | 2020-02-20,2016548341,3389.15,3341.02,3373.23,3373.23,3380.45
140 | 2020-02-21,2104700857,3360.76,3328.45,3337.75,3337.75,3360.5
141 | 2020-02-24,2717348399,3259.81,3214.65,3225.89,3225.89,3257.61
142 | 2020-02-25,3132889940,3246.99,3118.77,3128.21,3128.21,3238.94
143 | 2020-02-26,2968588783,3182.51,3108.99,3116.39,3116.39,3139.9
144 | 2020-02-27,3907715268,3097.07,2977.39,2978.76,2978.76,3062.54
145 | 2020-02-28,810394856,2959.72,2855.84,2954.22,2954.22,2916.9
146 | 2020-03-02,3790004908,3090.96,2945.19,3090.23,3090.23,2974.28
147 | 2020-03-03,3871212179,3136.72,2976.63,3003.37,3003.37,3096.46
148 | 2020-03-04,3035495588,3130.97,3034.38,3130.12,3130.12,3045.75
149 | 2020-03-05,3220527880,3083.04,2999.83,3023.94,3023.94,3075.7
150 | 2020-03-06,3900143283,2985.93,2901.54,2972.37,2972.37,2954.2
151 | 2020-03-09,411096782,2863.89,2734.43,2746.56,2746.56,2863.89
152 | 2020-03-10,51045026,2882.59,2734.0,2882.23,2882.23,2813.48
153 | 2020-03-11,4241642899,2825.6,2732.28,2741.38,2741.38,2825.6
154 | 2020-03-12,923666485,2660.95,2478.86,2480.64,2480.64,2630.86
155 | 2020-03-13,600445640,2711.33,2492.37,2711.02,2711.02,2569.99
156 | 2020-03-16,356016088,2562.98,2380.94,2386.13,2386.13,2508.59
157 | 2020-03-17,531383889,2553.93,2367.04,2529.19,2529.19,2425.66
158 | 2020-03-18,901816472,2453.57,2280.52,2398.1,2398.1,2436.5
159 | 2020-03-19,262777088,2466.97,2319.78,2409.39,2409.39,2393.48
160 | 2020-03-20,969130335,2453.01,2295.56,2304.92,2304.92,2431.94
161 | 2020-03-23,322111135,2300.73,2191.86,2237.4,2237.4,2290.71
162 | 2020-03-24,423902811,2449.71,2344.44,2447.33,2447.33,2344.44
163 | 2020-03-25,586234103,2571.42,2407.53,2475.56,2475.56,2457.77
164 | 2020-03-26,45919738,2637.01,2500.72,2630.07,2630.07,2501.29
165 | 2020-03-27,3590712059,2615.91,2520.02,2541.47,2541.47,2555.87
166 | 2020-03-30,3370871942,2631.8,2545.28,2626.65,2626.65,2558.98
167 | 2020-03-31,3991878975,2641.39,2571.15,2584.59,2584.59,2614.69
168 | 2020-04-01,3666502398,2522.75,2447.49,2470.5,2470.5,2498.08
169 | 2020-04-02,3870184448,2533.22,2455.79,2526.9,2526.9,2458.54
170 | 2020-04-03,3593003494,2538.18,2459.96,2488.65,2488.65,2514.92
171 | 2020-04-06,4022970312,2676.85,2574.57,2663.68,2663.68,2578.28
172 | 2020-04-07,4218972836,2756.89,2657.67,2659.41,2659.41,2738.65
173 | 2020-04-08,3343867617,2760.75,2663.3,2749.98,2749.98,2685.0
174 | 2020-04-09,64335301,2818.57,2762.36,2789.82,2789.82,2776.99
175 | 2020-04-13,2900380791,2782.46,2721.17,2761.63,2761.63,2782.46
176 | 2020-04-14,3113388741,2851.85,2805.1,2846.06,2846.06,2805.1
177 | 2020-04-15,3123468178,2801.88,2761.54,2783.36,2783.36,2795.64
178 | 2020-04-16,3185793737,2806.51,2764.32,2799.55,2799.55,2799.34
179 | 2020-04-17,3554592893,2879.22,2830.88,2874.56,2874.56,2842.43
180 | 2020-04-20,2935031893,2868.98,2820.43,2823.16,2823.16,2845.62
181 | 2020-04-21,3096009723,2785.54,2727.1,2736.56,2736.56,2784.81
182 | 2020-04-22,2779868449,2815.1,2775.95,2799.31,2799.31,2787.89
183 | 2020-04-23,2919383742,2844.9,2794.26,2797.8,2797.8,2810.42
184 | 2020-04-24,2882793416,2842.71,2791.76,2836.74,2836.74,2812.64
185 | 2020-04-27,2795944244,2887.72,2852.89,2878.48,2878.48,2854.65
186 | 2020-04-28,3237748798,2921.15,2860.71,2863.39,2863.39,2909.96
187 | 2020-04-29,3862944848,2954.86,2912.16,2939.51,2939.51,2918.46
188 | 2020-04-30,3721235517,2930.91,2892.47,2912.43,2912.43,2930.91
189 | 2020-05-01,2914265069,2869.09,2821.9,2830.71,2830.71,2869.09
190 | 2020-05-04,2877617866,2844.24,2797.85,2842.74,2842.74,2815.01
191 | 2020-05-05,2974283010,2898.23,2863.55,2868.44,2868.44,2868.88
192 | 2020-05-06,2855444097,2891.11,2847.65,2848.42,2848.42,2883.14
193 | 2020-05-07,2831489254,2901.92,2876.48,2881.19,2881.19,2878.26
194 | 2020-05-08,2617877855,2932.16,2902.88,2929.8,2929.8,2908.83
195 | 2020-05-11,2609806690,2944.25,2903.44,2930.32,2930.32,2915.46
196 | 2020-05-12,2668655086,2945.82,2869.59,2870.12,2870.12,2939.5
197 | 2020-05-13,3551451164,2874.14,2793.15,2820.0,2820.0,2865.86
198 | 2020-05-14,3348510295,2852.8,2766.64,2852.5,2852.5,2794.54
199 | 2020-05-15,3306748591,2865.01,2816.78,2863.7,2863.7,2829.95
200 | 2020-05-18,3642081510,2968.09,2913.86,2953.91,2953.91,2913.86
201 | 2020-05-19,2858250798,2964.21,2922.35,2922.94,2922.94,2948.59
202 | 2020-05-20,2849677238,2980.29,2953.63,2971.61,2971.61,2953.63
203 | 2020-05-21,2780244068,2978.5,2938.57,2948.51,2948.51,2969.95
204 | 2020-05-22,2185305113,2956.76,2933.59,2955.45,2955.45,2948.05
205 | 2020-05-26,3355998857,3021.72,2988.17,2991.77,2991.77,3004.08
206 | 2020-05-27,3661742868,3036.25,2969.75,3036.13,3036.13,3015.65
207 | 2020-05-28,3140297035,3068.67,3023.41,3029.73,3029.73,3046.61
208 | 2020-05-29,86861591,3049.14,2998.61,3044.31,3044.31,3025.17
209 | 2020-06-01,2501351434,3062.18,3031.54,3055.73,3055.73,3038.78
210 | 2020-06-02,2807173294,3081.07,3051.64,3080.82,3080.82,3064.78
211 | 2020-06-03,3160241158,3130.94,3098.9,3122.87,3122.87,3098.9
212 | 2020-06-04,3738795746,3128.91,3090.41,3112.35,3112.35,3111.56
213 | 2020-06-05,500491405,3211.72,3163.84,3193.93,3193.93,3163.84
214 | 2020-06-08,3698462911,3233.13,3196.0,3232.39,3232.39,3199.92
215 | 2020-06-09,3156921516,3222.71,3193.11,3207.18,3207.18,3213.32
216 | 2020-06-10,3568860875,3223.27,3181.49,3190.14,3190.14,3213.42
217 | 2020-06-11,4123277874,3123.53,2999.49,3002.1,3002.1,3123.53
218 | 2020-06-12,3385763024,3088.42,2984.47,3041.31,3041.31,3071.04
219 | 2020-06-15,3208913333,3079.76,2965.66,3066.59,3066.59,2993.76
220 | 2020-06-16,3286788794,3153.45,3076.06,3124.74,3124.74,3131.0
221 | 2020-06-17,2483191141,3141.16,3108.03,3113.49,3113.49,3136.13
222 | 2020-06-18,2399667782,3120.0,3093.51,3115.34,3115.34,3101.64
223 | 2020-06-19,697809668,3155.53,3083.11,3097.74,3097.74,3140.29
224 | 2020-06-22,2559744788,3120.92,3079.39,3117.86,3117.86,3094.42
225 | 2020-06-23,2719245393,3154.9,3127.12,3131.29,3131.29,3138.7
226 | 2020-06-24,3203219699,3115.01,3032.13,3050.33,3050.33,3114.4
227 | 2020-06-25,2707762288,3086.25,3024.01,3083.76,3083.76,3046.6
228 | 2020-06-26,90290800,3073.73,3004.63,3009.05,3009.05,3073.2
229 | 2020-06-29,2633408640,3053.89,2999.74,3053.24,3053.24,3018.59
230 | 2020-06-30,2757387711,3111.51,3047.83,3100.29,3100.29,3050.2
231 | 2020-07-01,2697727407,3128.44,3101.17,3115.86,3115.86,3105.92
232 | 2020-07-02,2326767585,3165.81,3124.52,3130.01,3130.01,3143.64
233 | 2020-07-06,2380431984,3182.59,3155.29,3179.72,3179.72,3155.29
234 | 2020-07-07,2287837089,3184.15,3142.93,3145.32,3145.32,3166.44
235 | 2020-07-08,2390189825,3171.8,3136.53,3169.94,3169.94,3153.07
236 | 2020-07-09,2597178292,3179.78,3115.7,3152.05,3152.05,3176.17
237 | 2020-07-10,2407407212,3186.82,3136.22,3185.04,3185.04,3152.47
238 | 2020-07-13,2695331634,3235.32,3149.43,3155.22,3155.22,3205.08
239 | 2020-07-14,2628539056,3200.95,3127.66,3197.52,3197.52,3141.11
240 | 2020-07-15,2841976156,3238.28,3200.76,3226.56,3226.56,3225.98
241 | 2020-07-16,1718211640,3217.51,3198.59,3215.57,3217.5,3208.36
242 | 2020-07-17,2219971191,3233.52,3205.65,3224.73,3224.73,3224.21
243 | 2020-07-20,2171757450,3258.61,3215.16,3251.84,3251.84,3224.29
244 | 2020-07-21,2472394555,3277.29,3247.77,3257.3,3257.3,3268.52
245 | 2020-07-22,2412594515,3279.32,3253.1,3276.02,3276.02,3254.86
246 | 2020-07-23,2737810512,3279.99,3222.66,3235.66,3235.66,3271.64
247 | 2020-07-24,2460013758,3227.26,3200.05,3215.63,3215.63,3218.58
248 | 2020-07-27,2355910999,3241.43,3214.25,3239.41,3239.41,3219.84
249 | 2020-07-28,2235534686,3243.72,3216.17,3218.44,3218.44,3234.27
250 | 2020-07-29,2467083167,3264.74,3227.22,3258.44,3258.44,3227.22
251 | 2020-07-30,2425538883,3250.92,3204.13,3246.22,3246.22,3231.76
252 | 2020-07-31,3065634931,3272.17,3220.26,3271.12,3271.12,3270.45
253 | 2020-08-03,2378355795,3302.73,3284.53,3294.61,3294.61,3288.26
254 | 2020-08-04,2404966031,3306.84,3286.37,3306.51,3306.51,3289.92
255 | 2020-08-05,2446007003,3330.77,3317.37,3327.77,3327.77,3317.37
256 | 2020-08-06,2414278723,3351.03,3318.14,3349.16,3349.16,3323.17
257 | 2020-08-07,2282910037,3352.54,3328.72,3351.28,3351.28,3340.05
258 | 2020-08-10,2566548632,3363.29,3335.44,3360.47,3360.47,3356.04
259 | 2020-08-11,2900493747,3381.01,3326.44,3333.69,3333.69,3370.34
260 | 2020-08-12,2245003448,3387.89,3355.46,3380.35,3380.35,3355.46
261 | 2020-08-13,1964512010,3387.24,3363.35,3373.43,3373.43,3372.95
262 | 2020-08-14,1711020614,3378.51,3361.64,3372.85,3372.85,3368.66
263 | 2020-08-17,1951691959,3387.59,3379.22,3381.99,3381.99,3380.86
264 | 2020-08-18,1794617543,3395.06,3370.15,3389.78,3389.78,3387.04
265 | 2020-08-19,2018139580,3399.54,3369.66,3374.85,3374.85,3392.51
266 | 2020-08-20,1832094273,3390.8,3354.69,3385.51,3385.51,3360.48
267 | 2020-08-21,1994452682,3399.96,3379.31,3397.16,3397.16,3386.01
268 | 2020-08-24,2271749784,3432.09,3413.13,3431.28,3431.28,3418.09
269 | 2020-08-25,2040869584,3444.21,3425.84,3443.62,3443.62,3435.95
270 | 2020-08-26,2003087362,3481.07,3444.15,3478.73,3478.73,3449.97
271 | 2020-08-27,2317902466,3501.38,3468.35,3484.55,3484.55,3485.14
272 |
--------------------------------------------------------------------------------
/data_files/supporting_data/nyc weather observances.csv:
--------------------------------------------------------------------------------
1 | Date,Temp_Max,Temp_Avg,Temp_Min,Humidity_Max,Humidity_Avg,Humidity_Min,Precipitation (in)_Total,Rain
11/1/19,66,52.1,44,96,58,38,0.2,1
11/2/19,50,45.5,40,71,58.8,46,0,0
11/3/19,52,47.7,44,56,47.7,38,0,0
11/4/19,55,50.3,43,61,48.4,35,0,0
11/5/19,61,56.7,51,80,63.9,42,0,0
11/6/19,55,51.4,48,61,41.7,28,0,0
11/7/19,58,50.6,42,83,60.8,43,0,0
11/8/19,41,36.9,32,65,50,34,0.08,1
11/9/19,41,36.3,30,59,46.6,29,0,0
11/10/19,52,46.8,40,54,44.7,32,0,0
11/11/19,61,54.8,49,84,62.7,44,0,0
11/12/19,57,42.6,27,80,61,40,0,0
11/13/19,34,29.7,25,56,43.1,27,0.02,0
11/14/19,45,38.3,29,52,44,37,0,0
11/15/19,51,45.4,38,56,40.9,31,0,0
11/16/19,42,38,33,58,33.2,18,0,0
11/17/19,44,38.8,31,65,57.6,38,0,0
11/18/19,43,40.6,38,93,85.4,68,0.01,1
11/19/19,48,44.4,41,93,74.6,56,0.62,1
11/20/19,48,43.7,41,74,61.3,41,0,0
11/21/19,53,47.1,40,68,52.7,40,0,0
11/22/19,54,48.3,39,82,57.7,42,0,0
11/23/19,45,41.2,36,70,46.3,36,0.07,1
11/24/19,48,43.9,40,93,82.3,60,0.55,1
11/25/19,53,47.3,41,67,59,48,0.19,1
11/26/19,59,51.9,44,76,61.7,42,0,0
11/27/19,58,53.5,46,89,75.3,40,0,0
11/28/19,53,46.5,39,62,52,40,0.02,1
11/29/19,42,36.6,32,64,56.6,47,0,0
11/30/19,44,37.4,32,61,44.7,27,0,0
12/1/19,40,35.2,30,93,75.7,42,0,0
12/2/19,39,35.7,32,89,86.1,82,0.62,1
12/3/19,38,33.9,32,85,69.7,54,0.34,1
12/4/19,40,38.1,34,76,68.4,63,0,0
12/5/19,43,39.9,38,76,57.5,40,0,0
12/6/19,50,42.5,36,53,48.1,38,0,0
12/7/19,38,35.7,32,57,48.5,38,0,0
12/8/19,44,36.7,28,68,56.2,43,0,0
12/9/19,56,47.8,41,93,88.2,73,0.17,1
12/10/19,58,54.2,40,88,77.5,57,1.63,1
12/11/19,40,35.3,32,92,76.5,42,0.43,1
--------------------------------------------------------------------------------
/fundamental_trend_analysis.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "# Fundamental Trend Analysis\n",
8 | "This notebook contains code for extracting fundamental data from an API and decomposing the series using the statsmodels library."
9 | ]
10 | },
11 | {
12 | "cell_type": "code",
13 | "execution_count": 2,
14 | "metadata": {},
15 | "outputs": [],
16 | "source": [
17 | "import pandas as pd\n",
18 | "from datetime import date\n",
19 | "from datetime import timedelta\n",
20 | "import plotly.graph_objects as go\n",
21 | "\n",
22 | "import requests\n",
23 | "import json\n",
24 | "import matplotlib.pyplot as plt\n",
25 | "import matplotlib.dates as mdates\n",
26 | "import matplotlib.ticker as ticker\n",
27 | "\n",
28 | "import numpy as np\n",
29 | "from IPython.display import clear_output\n",
30 | "import time\n",
31 | "# Set plot space as inline for inline plots and qt for external plots\n",
32 | "%matplotlib inline"
33 | ]
34 | },
35 | {
36 | "cell_type": "code",
37 | "execution_count": 5,
38 | "metadata": {},
39 | "outputs": [],
40 | "source": [
41 | "# Obtain today's date\n",
42 | "today = date.today()"
43 | ]
44 | },
45 | {
46 | "cell_type": "markdown",
47 | "metadata": {},
48 | "source": [
49 | "## 1. Load Data\n",
50 | "\n",
51 | "Neither the UniBit nor the Financial Modeling Prep API have enough historical company financial data for time series analysis. This quarterly revenue data was manually obtained from the annual statements released by Lowe's as directed in their Form 10-Ks."
52 | ]
53 | },
54 | {
55 | "cell_type": "code",
56 | "execution_count": 15,
57 | "metadata": {},
58 | "outputs": [
59 | {
60 | "data": {
61 | "text/html": [
62 | "\n",
63 | "\n",
76 | "
\n",
77 | " \n",
78 | " \n",
79 | " | \n",
80 | " low_revenue | \n",
81 | "
\n",
82 | " \n",
83 | " date | \n",
84 | " | \n",
85 | "
\n",
86 | " \n",
87 | " \n",
88 | " \n",
89 | " 2019-08-01 | \n",
90 | " 20992 | \n",
91 | "
\n",
92 | " \n",
93 | " 2019-11-01 | \n",
94 | " 17388 | \n",
95 | "
\n",
96 | " \n",
97 | " 2020-01-31 | \n",
98 | " 16027 | \n",
99 | "
\n",
100 | " \n",
101 | " 2020-04-30 | \n",
102 | " 19675 | \n",
103 | "
\n",
104 | " \n",
105 | " 2020-07-30 | \n",
106 | " 27307 | \n",
107 | "
\n",
108 | " \n",
109 | "
\n",
110 | "
"
111 | ],
112 | "text/plain": [
113 | " low_revenue\n",
114 | "date \n",
115 | "2019-08-01 20992\n",
116 | "2019-11-01 17388\n",
117 | "2020-01-31 16027\n",
118 | "2020-04-30 19675\n",
119 | "2020-07-30 27307"
120 | ]
121 | },
122 | "execution_count": 15,
123 | "metadata": {},
124 | "output_type": "execute_result"
125 | }
126 | ],
127 | "source": [
128 | "low_revenue = pd.read_csv('data_files/additional_data/low_revenue.csv')\n",
129 | "low_revenue['date'] = pd.to_datetime(low_revenue['date'])\n",
130 | "low_revenue.set_index('date', inplace = True)\n",
131 | "low_revenue.sort_index(inplace=True)\n",
132 | "low_revenue.tail()"
133 | ]
134 | },
135 | {
136 | "cell_type": "markdown",
137 | "metadata": {},
138 | "source": [
139 | "# 2. Apply Statsmodels Time Series Decompose To Both Periods of Data"
140 | ]
141 | },
142 | {
143 | "cell_type": "code",
144 | "execution_count": 27,
145 | "metadata": {},
146 | "outputs": [],
147 | "source": [
148 | "from statsmodels.tsa.seasonal import seasonal_decompose\n",
149 | "from stationarity_check_funtion import *"
150 | ]
151 | },
152 | {
153 | "cell_type": "code",
154 | "execution_count": 22,
155 | "metadata": {},
156 | "outputs": [],
157 | "source": [
158 | "low_revenue_after_financial_crisis = low_revenue[low_revenue.index <='2011-01-28'].copy()\n",
159 | "low_revenue_before_coronavirus = low_revenue[low_revenue.index >'2011-01-28'].copy()"
160 | ]
161 | },
162 | {
163 | "cell_type": "code",
164 | "execution_count": 38,
165 | "metadata": {},
166 | "outputs": [],
167 | "source": [
168 | "# Obtain the three series\n",
169 | "\n",
170 | "# frequency detection error: https://github.com/statsmodels/statsmodels/issues/3503\n",
171 | "decomposition = seasonal_decompose(low_revenue_after_financial_crisis['low_revenue'], model='multiplicative', period = 4)\n",
172 | "\n",
173 | "trend = decomposition.trend\n",
174 | "seasonal = decomposition.seasonal\n",
175 | "residual = decomposition.resid"
176 | ]
177 | },
178 | {
179 | "cell_type": "code",
180 | "execution_count": 39,
181 | "metadata": {},
182 | "outputs": [
183 | {
184 | "data": {
185 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1gAAAI4CAYAAAB3HEhGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdd3xUVfrH8c+hRlGQpiBFUCK9B0GxUKSIqNhBXXFVECu6umvd37q66lpWsSC7Koi4iNgLYgUrAhKQ3hGU0HuRlnJ+fzwzO5MQSGHCnUm+79drXpmcKTkzN3fmPvc85znOe4+IiIiIiIgculJBd0BERERERKS4UIAlIiIiIiISIwqwREREREREYkQBloiIiIiISIwowBIREREREYmRMkF3oLCqVavm69WrF3Q3RERERESkBJo+ffpG7331nO0JG2DVq1eP1NTUoLshIiIiIiIlkHPu19zalSIoIiIiIiISIwqwREREREREYkQBloiIiIiIxK05c+Cnn4LuRf4l7Bys3KSnp5OWlsaePXuC7kpcS0pKonbt2pQtWzboroiIiIiIHNDmzXDBBXZ90SJIhMPXYhVgpaWlcfTRR1OvXj2cc0F3Jy5579m0aRNpaWnUr18/6O6IiIiIiOQqMxP69YNVq+DbbxMjuIJiliK4Z88eqlatquDqIJxzVK1aVaN8IiIiIhLX7rsPvvgChg6FDh2C7k3+FasAC1BwlQ96j0REREQkno0dC088ATfeCNdfH3RvCqbYBVgiIiIiIpK4Zs2Ca6+F00+HIUOC7k3BKcAqAmlpaVxwwQUkJydz0kknMXjwYPbt27ff/VavXs0ll1yS5/P16tWLrVu3FqovDz74IE899VShHisiIiIicjht2gQXXgiVK8Pbb0O5ckH3qOAUYMWY956LLrqIPn36sGTJEhYvXszOnTu5//77s90vIyOD448/nnfeeSfP5xw/fjzHHHNMUXVZRERERCRwGRmRohbvvgs1agTdo8JRgBVjEydOJCkpiT/+8Y8AlC5dmmeeeYYRI0bw4osvcumll3LeeefRvXt3VqxYQbNmzQDYtWsXl112GS1atODyyy+nffv2pKamAlCvXj02btzIihUraNy4MQMGDKBp06Z0796d3bt3A/Dyyy/Trl07WrZsycUXX8yuXbuCeQNERERERArh3nvhyy9h2DBo3z7o3hResSrTHu3222HmzNg+Z6tWeeeBzps3j7Zt22Zrq1ixInXr1iUjI4PJkycze/ZsqlSpwooVK/53nxdffJHKlSsze/Zs5s6dS6tWrXJ9/iVLljBmzBhefvllLrvsMt59912uuuoqLrroIgYMGADAAw88wPDhw7n11lsP6fWKiIiIiBwOY8bAU0/BTTfZ/KtEphGsGPPe51qlL9zerVs3qlSpst/tP/zwA3379gWgWbNmtGjRItfnr1+//v+Cr7Zt2/4vSJs7dy5nnHEGzZs3Z/To0cybNy9Gr0hEREREpOjMnAnXXWdFLZ55JujeHLpiO4IVVMWRpk2b8u6772Zr2759OytXrqR06dJUqFAh18d57/P1/OXLl//f9dKlS/8vRfCaa67hgw8+oGXLlowcOZJvvvmmcC9AREREROQwCRe1qFIF3nknMYta5KQRrBjr2rUru3btYtSoUQBkZmZy5513cs0113DkkUce8HGnn346b731FgDz589nzpw5Bfq7O3bsoGbNmqSnpzN69OjCvwARERERkcMgIwMuvxzWrIH334fjjgu6R7GhACvGnHO8//77vP322yQnJ3PyySeTlJTEo48+etDH3XTTTWzYsIEWLVrw+OOP06JFCypVqpTvv/vwww/Tvn17unXrRqNGjQ71ZYiIiIiIFKl77oEJE+Df/4Z27YLuTey4/KamxZuUlBQfrrIXtmDBAho3bhxQjw5NZmYm6enpJCUlsWzZMrp27crixYspV0TjpIn8XomIiIhIYnvjDbjySrjlFnj++aB7UzjOuene+5Sc7cV2Dlai2bVrF507dyY9PR3vPcOGDSuy4EpEREREJCg//2xFLc48E55+OujexJ4CrDhx9NFHk3NETkRERESkONm40YpaVKsGb78NZcsG3aPYK3YB1oHKpEtEoqaFioiIiEjiChe1WLsWfvgBjj026B4VjTyLXDjn6jjnvnbOLXDOzXPODQ61P+icW+Wcmxm69Ip6zL3OuaXOuUXOuR5R7W2dc3NCtz3nQpGQc668c25sqH2qc65eYV5MUlISmzZtUgBxEN57Nm3aRFJSUtBdEREREZES5C9/gYkT4T//gZT9Zi4VH/kZwcoA7vTez3DOHQ1Md859GbrtGe/9U9F3ds41AfoCTYHjga+ccyd77zOBYcBAYAowHugJfApc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\n",
186 | "text/plain": [
187 | ""
188 | ]
189 | },
190 | "metadata": {
191 | "needs_background": "light"
192 | },
193 | "output_type": "display_data"
194 | }
195 | ],
196 | "source": [
197 | "# Plot gathered statistics\n",
198 | "plt.figure(figsize=(12,8))\n",
199 | "plt.subplot(411)\n",
200 | "plt.plot(low_revenue_before_coronavirus['low_revenue'], label='Original', color=\"blue\")\n",
201 | "plt.legend(loc='best')\n",
202 | "plt.subplot(412)\n",
203 | "plt.plot(trend, label='Trend', color=\"blue\")\n",
204 | "plt.legend(loc='best')\n",
205 | "plt.subplot(413)\n",
206 | "plt.plot(seasonal,label='Seasonality', color=\"blue\")\n",
207 | "plt.legend(loc='best')\n",
208 | "plt.subplot(414)\n",
209 | "plt.plot(residual, label='Residuals', color=\"blue\")\n",
210 | "plt.legend(loc='best')\n",
211 | "plt.tight_layout()"
212 | ]
213 | },
214 | {
215 | "cell_type": "code",
216 | "execution_count": 40,
217 | "metadata": {},
218 | "outputs": [
219 | {
220 | "name": "stdout",
221 | "output_type": "stream",
222 | "text": [
223 | "Results of Dickey-Fuller Test:\n",
224 | "Test Statistic -2.793260\n",
225 | "p-value 0.059243\n",
226 | "#Lags Used 3.000000\n",
227 | "Number of Observations Used 6.000000\n",
228 | "Critical Value (1%) -5.354256\n",
229 | "Critical Value (5%) -3.646238\n",
230 | "Critical Value (10%) -2.901198\n",
231 | "dtype: float64\n"
232 | ]
233 | }
234 | ],
235 | "source": [
236 | "residual.dropna(inplace=True)\n",
237 | "stationarity_check(residual)"
238 | ]
239 | },
240 | {
241 | "cell_type": "code",
242 | "execution_count": null,
243 | "metadata": {},
244 | "outputs": [],
245 | "source": []
246 | }
247 | ],
248 | "metadata": {
249 | "kernelspec": {
250 | "display_name": "Python 3",
251 | "language": "python",
252 | "name": "python3"
253 | },
254 | "language_info": {
255 | "codemirror_mode": {
256 | "name": "ipython",
257 | "version": 3
258 | },
259 | "file_extension": ".py",
260 | "mimetype": "text/x-python",
261 | "name": "python",
262 | "nbconvert_exporter": "python",
263 | "pygments_lexer": "ipython3",
264 | "version": "3.8.3"
265 | }
266 | },
267 | "nbformat": 4,
268 | "nbformat_minor": 4
269 | }
270 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | appnope==0.1.0
2 | attrs==19.3.0
3 | backcall @ file:///home/conda/feedstock_root/build_artifacts/backcall_1592338393461/work
4 | bleach @ file:///home/conda/feedstock_root/build_artifacts/bleach_1588608214987/work
5 | brotlipy==0.7.0
6 | certifi==2020.6.20
7 | cffi==1.14.0
8 | chardet==3.0.4
9 | cryptography==2.9.2
10 | cycler==0.10.0
11 | decorator==4.4.2
12 | defusedxml==0.6.0
13 | entrypoints==0.3
14 | idna==2.9
15 | importlib-metadata @ file:///Users/runner/miniforge3/conda-bld/importlib-metadata_1591451759268/work
16 | ipykernel @ file:///Users/runner/miniforge3/conda-bld/ipykernel_1590020220914/work/dist/ipykernel-5.3.0-py3-none-any.whl
17 | ipython @ file:///Users/runner/miniforge3/conda-bld/ipython_1590796925971/work
18 | ipython-genutils==0.2.0
19 | jedi @ file:///Users/runner/miniforge3/conda-bld/jedi_1592619347183/work
20 | Jinja2==2.11.2
21 | jsonschema==3.2.0
22 | jupyter-client==6.1.3
23 | jupyter-core==4.6.3
24 | kiwisolver==1.2.0
25 | MarkupSafe==1.1.1
26 | matplotlib @ file:///Users/runner/miniforge3/conda-bld/matplotlib-base_1592576109111/work
27 | mistune==0.8.4
28 | nbconvert==5.6.1
29 | nbformat==5.0.6
30 | notebook @ file:///Users/runner/miniforge3/conda-bld/notebook_1588887231072/work
31 | numpy @ file:///Users/runner/miniforge3/conda-bld/numpy_1591485228204/work
32 | packaging @ file:///home/conda/feedstock_root/build_artifacts/packaging_1589925210001/work
33 | pandas @ file:///Users/runner/miniforge3/conda-bld/pandas_1592422011735/work
34 | pandocfilters==1.4.2
35 | parso==0.7.0
36 | patsy==0.5.1
37 | pexpect==4.8.0
38 | pickleshare==0.7.5
39 | plotly @ file:///home/conda/feedstock_root/build_artifacts/plotly_1590724681830/work
40 | prometheus-client @ file:///home/conda/feedstock_root/build_artifacts/prometheus_client_1590412252446/work
41 | prompt-toolkit @ file:///home/conda/feedstock_root/build_artifacts/prompt-toolkit_1592500439797/work
42 | ptyprocess==0.6.0
43 | pycparser==2.20
44 | Pygments==2.6.1
45 | pyOpenSSL==19.1.0
46 | pyparsing==2.4.7
47 | pyrsistent==0.16.0
48 | PySocks==1.7.1
49 | python-dateutil==2.8.1
50 | pytz==2020.1
51 | pyzmq==19.0.1
52 | requests @ file:///home/conda/feedstock_root/build_artifacts/requests_1592425495151/work
53 | retrying==1.3.3
54 | scipy==1.5.0
55 | Send2Trash==1.5.0
56 | six @ file:///home/conda/feedstock_root/build_artifacts/six_1590081179328/work
57 | statsmodels @ git+https://github.com/statsmodels/statsmodels.git@2a5a6ec3baf901f52008aee10f166ff6085d3ba5
58 | terminado==0.8.3
59 | testpath==0.4.4
60 | tornado==6.0.4
61 | traitlets==4.3.3
62 | urllib3==1.25.9
63 | wcwidth @ file:///home/conda/feedstock_root/build_artifacts/wcwidth_1592931742287/work
64 | webencodings==0.5.1
65 | zipp==3.1.0
66 |
--------------------------------------------------------------------------------
/stationarity_check_funtion.py:
--------------------------------------------------------------------------------
1 | # Import necessary libraries
2 | import pandas as pd
3 | #from pandas import Series
4 | #import numpy as np
5 |
6 | #import matplotlib.pylab as plt
7 | #matplotlib inline
8 |
9 | # Import passengers.csv and set it as a time-series object. Plot the TS
10 | #data = pd.read_csv('passengers.csv')
11 | #ts = data.set_index('Month')
12 | #ts.index = pd.to_datetime(ts.index)
13 | #ts.plot(figsize=(12,6), color="blue");
14 |
15 | # Create a function to check for the stationarity of a given timeseries using rolling stats and DF test
16 | # Collect and package the code from previous lab
17 |
18 | def stationarity_check(TS):
19 |
20 | # Import adfuller
21 | from statsmodels.tsa.stattools import adfuller
22 |
23 | # Calculate rolling statistics
24 | rolmean = TS.rolling(window = 8, center = False).mean()
25 | rolstd = TS.rolling(window = 8, center = False).std()
26 |
27 | # Perform the Dickey Fuller Test
28 | dftest = adfuller(TS) # change the passengers column as required
29 |
30 | #Plot rolling statistics:
31 | #fig = plt.figure(figsize=(12,6))
32 | #orig = plt.plot(TS, color='blue',label='Original')
33 | #mean = plt.plot(rolmean, color='red', label='Rolling Mean')
34 | #std = plt.plot(rolstd, color='black', label = 'Rolling Std')
35 | #plt.legend(loc='best')
36 | #plt.title('Rolling Mean & Standard Deviation')
37 | #plt.show(block=False)
38 |
39 | # Print Dickey-Fuller test results
40 | print ('Results of Dickey-Fuller Test:')
41 |
42 | dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])
43 | for key,value in dftest[4].items():
44 | dfoutput['Critical Value (%s)'%key] = value
45 | print (dfoutput)
46 |
47 | return None
48 |
49 | # Code here
50 | #stationarity_check(ts)
--------------------------------------------------------------------------------
/time_series.yml:
--------------------------------------------------------------------------------
1 | name: time_series
2 | channels:
3 | - conda-forge
4 | - defaults
5 | dependencies:
6 | - appnope=0.1.0=py38h32f6830_1001
7 | - attrs=19.3.0=py_0
8 | - backcall=0.2.0=pyh9f0ad1d_0
9 | - bleach=3.1.5=pyh9f0ad1d_0
10 | - brotlipy=0.7.0=py38h64e0658_1000
11 | - ca-certificates=2020.6.20=hecda079_0
12 | - certifi=2020.6.20=py38h32f6830_0
13 | - cffi=1.14.0=py38hc512035_1
14 | - chardet=3.0.4=py38h32f6830_1006
15 | - cryptography=2.9.2=py38hb761dab_0
16 | - cycler=0.10.0=py_2
17 | - decorator=4.4.2=py_0
18 | - defusedxml=0.6.0=py_0
19 | - entrypoints=0.3=py38h32f6830_1001
20 | - freetype=2.10.2=h8da9a1a_0
21 | - idna=2.9=py_1
22 | - importlib-metadata=1.6.1=py38h32f6830_0
23 | - importlib_metadata=1.6.1=0
24 | - ipykernel=5.3.0=py38h23f93f0_0
25 | - ipython=7.15.0=py38h32f6830_0
26 | - ipython_genutils=0.2.0=py_1
27 | - jedi=0.17.1=py38h32f6830_0
28 | - jinja2=2.11.2=pyh9f0ad1d_0
29 | - jsonschema=3.2.0=py38h32f6830_1
30 | - jupyter_client=6.1.3=py_0
31 | - jupyter_core=4.6.3=py38h32f6830_1
32 | - kiwisolver=1.2.0=py38ha0d09dd_0
33 | - libblas=3.8.0=16_openblas
34 | - libcblas=3.8.0=16_openblas
35 | - libcxx=10.0.0=1
36 | - libedit=3.1.20191231=haf1e3a3_0
37 | - libffi=3.3=h0a44026_1
38 | - libgfortran=4.0.0=2
39 | - liblapack=3.8.0=16_openblas
40 | - libopenblas=0.3.9=h3d69b6c_0
41 | - libpng=1.6.37=hbbe82c9_1
42 | - libsodium=1.0.17=h01d97ff_0
43 | - llvm-openmp=10.0.0=h28b9765_0
44 | - markupsafe=1.1.1=py38h64e0658_1
45 | - matplotlib=3.2.2=0
46 | - matplotlib-base=3.2.2=py38h1300a51_0
47 | - mistune=0.8.4=py38h64e0658_1001
48 | - nbconvert=5.6.1=py38h32f6830_1
49 | - nbformat=5.0.6=py_0
50 | - ncurses=6.2=h0a44026_1
51 | - notebook=6.0.3=py38h32f6830_0
52 | - numpy=1.18.5=py38h1f821a2_0
53 | - openssl=1.1.1g=h0b31af3_0
54 | - packaging=20.4=pyh9f0ad1d_0
55 | - pandas=1.0.5=py38h5fc983b_0
56 | - pandoc=2.9.2.1=0
57 | - pandocfilters=1.4.2=py_1
58 | - parso=0.7.0=pyh9f0ad1d_0
59 | - pexpect=4.8.0=py38h32f6830_1
60 | - pickleshare=0.7.5=py38h32f6830_1001
61 | - pip=20.1.1=py38_1
62 | - plotly=4.8.1=pyh9f0ad1d_0
63 | - prometheus_client=0.8.0=pyh9f0ad1d_0
64 | - prompt-toolkit=3.0.5=py_1
65 | - ptyprocess=0.6.0=py_1001
66 | - pycparser=2.20=py_0
67 | - pygments=2.6.1=py_0
68 | - pyopenssl=19.1.0=py_1
69 | - pyparsing=2.4.7=pyh9f0ad1d_0
70 | - pyrsistent=0.16.0=py38h64e0658_0
71 | - pysocks=1.7.1=py38h32f6830_1
72 | - python=3.8.3=h26836e1_1
73 | - python-dateutil=2.8.1=py_0
74 | - python_abi=3.8=1_cp38
75 | - pytz=2020.1=pyh9f0ad1d_0
76 | - pyzmq=19.0.1=py38h1fcdcd6_0
77 | - readline=8.0=h1de35cc_0
78 | - requests=2.24.0=pyh9f0ad1d_0
79 | - retrying=1.3.3=py_2
80 | - send2trash=1.5.0=py_0
81 | - setuptools=47.3.1=py38_0
82 | - six=1.15.0=pyh9f0ad1d_0
83 | - sqlite=3.32.3=hffcf06c_0
84 | - terminado=0.8.3=py38h32f6830_1
85 | - testpath=0.4.4=py_0
86 | - tk=8.6.10=hb0a8c7a_0
87 | - tornado=6.0.4=py38h64e0658_1
88 | - traitlets=4.3.3=py38h32f6830_1
89 | - urllib3=1.25.9=py_0
90 | - wcwidth=0.2.5=pyh9f0ad1d_0
91 | - webencodings=0.5.1=py_1
92 | - wheel=0.34.2=py38_0
93 | - xz=5.2.5=h1de35cc_0
94 | - zeromq=4.3.2=h6de7cb9_2
95 | - zipp=3.1.0=py_0
96 | - zlib=1.2.11=h1de35cc_3
97 | - pip:
98 | - patsy==0.5.1
99 | - scipy==1.5.0
100 | - statsmodels==0.12.0.dev0+437.g2a5a6ec3b
101 | prefix: /Users/Alex/miniconda3/envs/time_series
102 |
103 |
--------------------------------------------------------------------------------