├── .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 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \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 | " \n", 230 | "
volumehighlowadj_closecloseopen
date
2015-08-3139151000001986.731965.981972.181972.181986.73
2015-09-0143718500001970.091903.071913.851913.851970.09
2015-09-0237426200001948.911916.521948.861948.861916.52
2015-09-0335207000001975.011944.721951.131951.131950.79
2015-09-0431670900001947.761911.211921.221921.221947.76
\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 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | "
volumehighlowadj_closecloseopen
2015-08-3139151000001986.731965.981972.181972.181986.73
2015-09-0143718500001970.091903.071913.851913.851970.09
2015-09-0237426200001948.911916.521948.861948.861916.52
2015-09-0335207000001975.011944.721951.131951.131950.79
2015-09-0431670900001947.761911.211921.221921.221947.76
\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 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | "
volumehighlowadj_closecloseopen
date
2020-10-1222438003023549.853499.613534.223534.223500.02
2020-10-1323578757093534.013500.863511.933511.933534.01
2020-10-1421837337603527.943480.553488.673488.673515.47
2020-10-1520096650853489.083440.893483.343483.343453.72
2020-10-1622211945653515.763480.453483.813483.813493.50
\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 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | "
volumehighlowadj_closecloseopen
date
2021-03-0123964620843914.503842.513901.823901.823842.51
2021-03-0222606927603906.413868.573870.293870.293903.64
2021-03-0327074110933874.473818.863819.723819.723863.99
2021-03-0434065292503843.673723.343768.473768.473818.53
2021-03-0532897491723851.693730.193841.943841.943793.58
\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 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | " \n", 736 | " \n", 737 | " \n", 738 | " \n", 739 | " \n", 740 | " \n", 741 | " \n", 742 | " \n", 743 | " \n", 744 | " \n", 745 | " \n", 746 | " \n", 747 | " \n", 748 | " \n", 749 | " \n", 750 | " \n", 751 | " \n", 752 | " \n", 753 | " \n", 754 | " \n", 755 | " \n", 756 | " \n", 757 | " \n", 758 | " \n", 759 | " \n", 760 | " \n", 761 | " \n", 762 | " \n", 763 | " \n", 764 | " \n", 765 | " \n", 766 | " \n", 767 | " \n", 768 | " \n", 769 | " \n", 770 | " \n", 771 | " \n", 772 | " \n", 773 | " \n", 774 | " \n", 775 | " \n", 776 | " \n", 777 | " \n", 778 | " \n", 779 | " \n", 780 | " \n", 781 | " \n", 782 | " \n", 783 | " \n", 784 | " \n", 785 | " \n", 786 | " \n", 787 | " \n", 788 | " \n", 789 | " \n", 790 | " \n", 791 | " \n", 792 | " \n", 793 | " \n", 794 | " \n", 795 | " \n", 796 | " \n", 797 | " \n", 798 | " \n", 799 | " \n", 800 | " \n", 801 | " \n", 802 | " \n", 803 | " \n", 804 | " \n", 805 | " \n", 806 | " \n", 807 | " \n", 808 | " \n", 809 | " \n", 810 | " \n", 811 | " \n", 812 | " \n", 813 | " \n", 814 | " \n", 815 | " \n", 816 | " \n", 817 | " \n", 818 | " \n", 819 | " \n", 820 | " \n", 821 | " \n", 822 | " \n", 823 | " \n", 824 | " \n", 825 | " \n", 826 | " \n", 827 | " \n", 828 | " \n", 829 | " \n", 830 | " \n", 831 | " \n", 832 | " \n", 833 | " \n", 834 | " \n", 835 | " \n", 836 | " \n", 837 | " \n", 838 | " \n", 839 | " \n", 840 | " \n", 841 | " \n", 842 | " \n", 843 | " \n", 844 | " \n", 845 | " \n", 846 | " \n", 847 | " \n", 848 | " \n", 849 | " \n", 850 | " \n", 851 | " \n", 852 | " \n", 853 | " \n", 854 | " \n", 855 | " \n", 856 | " \n", 857 | " \n", 858 | " \n", 859 | " \n", 860 | " \n", 861 | " \n", 862 | " \n", 863 | " \n", 864 | " \n", 865 | " \n", 866 | " \n", 867 | "
volumehighlowadj_closecloseopen
2021-02-1218003784883937.233905.783934.833934.833911.65
2021-02-1622557579203950.433923.853932.593932.593939.61
2021-02-1721251582093933.613900.433931.333931.333918.50
2021-02-1820060380343921.983885.033913.973913.973915.86
2021-02-1923024348313930.413903.073906.713906.713921.16
2021-02-2227279108513902.923874.713876.503876.503885.55
2021-02-2329352390353895.983805.593881.373881.373857.07
2021-02-2427698412073928.653859.603925.433925.433873.71
2021-02-2529007183923925.023814.043829.343829.343915.80
2021-02-2630903990783861.083789.543811.153811.153839.66
2021-03-0123964620843914.503842.513901.823901.823842.51
2021-03-0222606927603906.413868.573870.293870.293903.64
2021-03-0327074110933874.473818.863819.723819.723863.99
2021-03-0434065292503843.673723.343768.473768.473818.53
2021-03-0532897491723851.693730.193841.943841.943793.58
\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 | " \n", 932 | " \n", 933 | " \n", 934 | " \n", 935 | " \n", 936 | " \n", 937 | " \n", 938 | " \n", 939 | " \n", 940 | " \n", 941 | "
volumehighlowadj_closecloseopen
\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 | " \n", 1007 | " \n", 1008 | " \n", 1009 | " \n", 1010 | " \n", 1011 | " \n", 1012 | " \n", 1013 | " \n", 1014 | " \n", 1015 | " \n", 1016 | " \n", 1017 | " \n", 1018 | " \n", 1019 | " \n", 1020 | " \n", 1021 | " \n", 1022 | " \n", 1023 | " \n", 1024 | " \n", 1025 | " \n", 1026 | " \n", 1027 | " \n", 1028 | " \n", 1029 | " \n", 1030 | " \n", 1031 | " \n", 1032 | " \n", 1033 | " \n", 1034 | " \n", 1035 | " \n", 1036 | " \n", 1037 | " \n", 1038 | " \n", 1039 | " \n", 1040 | " \n", 1041 | " \n", 1042 | " \n", 1043 | " \n", 1044 | " \n", 1045 | " \n", 1046 | " \n", 1047 | " \n", 1048 | " \n", 1049 | " \n", 1050 | " \n", 1051 | " \n", 1052 | " \n", 1053 | " \n", 1054 | " \n", 1055 | " \n", 1056 | " \n", 1057 | " \n", 1058 | " \n", 1059 | " \n", 1060 | " \n", 1061 | " \n", 1062 | " \n", 1063 | " \n", 1064 | " \n", 1065 | " \n", 1066 | " \n", 1067 | " \n", 1068 | " \n", 1069 | " \n", 1070 | " \n", 1071 | " \n", 1072 | " \n", 1073 | " \n", 1074 | " \n", 1075 | " \n", 1076 | " \n", 1077 | " \n", 1078 | " \n", 1079 | " \n", 1080 | " \n", 1081 | " \n", 1082 | " \n", 1083 | " \n", 1084 | " \n", 1085 | " \n", 1086 | " \n", 1087 | " \n", 1088 | " \n", 1089 | " \n", 1090 | " \n", 1091 | " \n", 1092 | " \n", 1093 | " \n", 1094 | " \n", 1095 | " \n", 1096 | " \n", 1097 | " \n", 1098 | " \n", 1099 | " \n", 1100 | " \n", 1101 | " \n", 1102 | " \n", 1103 | " \n", 1104 | " \n", 1105 | " \n", 1106 | " \n", 1107 | " \n", 1108 | " \n", 1109 | " \n", 1110 | " \n", 1111 | " \n", 1112 | " \n", 1113 | " \n", 1114 | " \n", 1115 | " \n", 1116 | " \n", 1117 | " \n", 1118 | " \n", 1119 | " \n", 1120 | " \n", 1121 | " \n", 1122 | " \n", 1123 | " \n", 1124 | " \n", 1125 | " \n", 1126 | " \n", 1127 | " \n", 1128 | " \n", 1129 | " \n", 1130 | " \n", 1131 | " \n", 1132 | " \n", 1133 | " \n", 1134 | " \n", 1135 | " \n", 1136 | " \n", 1137 | " \n", 1138 | " \n", 1139 | " \n", 1140 | " \n", 1141 | " \n", 1142 | " \n", 1143 | " \n", 1144 | " \n", 1145 | " \n", 1146 | " \n", 1147 | " \n", 1148 | " \n", 1149 | " \n", 1150 | " \n", 1151 | " \n", 1152 | " \n", 1153 | " \n", 1154 | " \n", 1155 | " \n", 1156 | " \n", 1157 | " \n", 1158 | " \n", 1159 | " \n", 1160 | "
volumehighlowadj_closecloseopen
date
2021-02-1218003784883937.233905.783934.833934.833911.65
2021-02-1622557579203950.433923.853932.593932.593939.61
2021-02-1721251582093933.613900.433931.333931.333918.50
2021-02-1820060380343921.983885.033913.973913.973915.86
2021-02-1923024348313930.413903.073906.713906.713921.16
2021-02-2227279108513902.923874.713876.503876.503885.55
2021-02-2329352390353895.983805.593881.373881.373857.07
2021-02-2427698412073928.653859.603925.433925.433873.71
2021-02-2529007183923925.023814.043829.343829.343915.80
2021-02-2630903990783861.083789.543811.153811.153839.66
2021-03-0123964620843914.503842.513901.823901.823842.51
2021-03-0222606927603906.413868.573870.293870.293903.64
2021-03-0327074110933874.473818.863819.723819.723863.99
2021-03-0434065292503843.673723.343768.473768.473818.53
2021-03-0532897491723851.693730.193841.943841.943793.58
\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 | " \n", 42 | " \n", 43 | " \n", 44 | " \n", 45 | " \n", 46 | " \n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | "
DateTemp_MaxTemp_AvgTemp_MinHumidity_MaxHumidity_AvgHumidity_MinPrecipitation (in)_TotalRain
3612/7/193835.7325748.5380.000
3712/8/194436.7286856.2430.000
3812/9/195647.8419388.2730.171
3912/10/195854.2408877.5571.631
4012/11/194035.3329276.5420.431
\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 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \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 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | "
Temp_MaxTemp_AvgTemp_MinHumidity_MaxHumidity_AvgHumidity_MinPrecipitation (in)_TotalRain
Date
2019-11-016652.1449658.0380.21
2019-11-025045.5407158.8460.00
2019-11-035247.7445647.7380.00
2019-11-045550.3436148.4350.00
2019-11-056156.7518063.9420.00
\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 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | "
low_revenue
date
2019-08-0120992
2019-11-0117388
2020-01-3116027
2020-04-3019675
2020-07-3027307
\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 | --------------------------------------------------------------------------------