├── README.md ├── Time Series operations with Pandas ├── 1. Time-Series Basic Operations.ipynb ├── 2. Financial Data Analysis with Pandas.ipynb ├── 3. Advanced Financial Data Analysis.ipynb ├── 4. Datetime Index Methods, Timezones and NA values.ipynb └── README.md └── Trading_Strategies ├── Machine_Learning └── README.md ├── Mean-Reversion ├── Mean-Reversion (Bollinger Bands) Backtester class with OOP.ipynb ├── Mean-Reversion (Bollinger Bands) Strategy - Design and Backtest.ipynb └── README.md ├── Momentum ├── Momentum (Contrarian) Backtester Class with OOP.ipynb ├── Momentum aka Contrarian Strategies - Design and Backtest.ipynb └── README.md ├── Moving_Average_Crossover ├── README.md ├── SMA Backtester Class with OOP.ipynb └── SMA Strategies - Design and Backtest.ipynb └── OOP - Designing a Financial Instrument Class.ipynb /README.md: -------------------------------------------------------------------------------- 1 | # Algorithmic_Trading 2 | Python code for fully automated ML and statistical trading strategies 3 | -------------------------------------------------------------------------------- /Time Series operations with Pandas/1. Time-Series Basic Operations.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "id": "a532fdc9-76db-4e42-941c-7202fbedb180", 7 | "metadata": {}, 8 | "outputs": [], 9 | "source": [ 10 | "# Importing Time Series data from csv files" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "id": "69c808c3-aba0-41ad-897a-31146a16da27", 17 | "metadata": {}, 18 | "outputs": [], 19 | "source": [ 20 | "import pandas as pd" 21 | ] 22 | }, 23 | { 24 | "cell_type": "code", 25 | "execution_count": 3, 26 | "id": "9d9a261a-04f1-4ec6-a27e-dfb5d71eca07", 27 | "metadata": {}, 28 | "outputs": [], 29 | "source": [ 30 | "temp = pd.read_csv('temp.csv')" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 4, 36 | "id": "65778b42-2820-4dfa-a687-1ea634610303", 37 | "metadata": {}, 38 | "outputs": [ 39 | { 40 | "data": { 41 | "text/html": [ 42 | "
\n", 43 | "\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 | "
datetimeLANY
02013-01-01 00:00:0011.7-1.1
12013-01-01 01:00:0010.7-1.7
22013-01-01 02:00:009.9-2.0
32013-01-01 03:00:009.3-2.1
42013-01-01 04:00:008.8-2.3
\n", 98 | "
" 99 | ], 100 | "text/plain": [ 101 | " datetime LA NY\n", 102 | "0 2013-01-01 00:00:00 11.7 -1.1\n", 103 | "1 2013-01-01 01:00:00 10.7 -1.7\n", 104 | "2 2013-01-01 02:00:00 9.9 -2.0\n", 105 | "3 2013-01-01 03:00:00 9.3 -2.1\n", 106 | "4 2013-01-01 04:00:00 8.8 -2.3" 107 | ] 108 | }, 109 | "execution_count": 4, 110 | "metadata": {}, 111 | "output_type": "execute_result" 112 | } 113 | ], 114 | "source": [ 115 | "# using head() to get top 5 entires\n", 116 | "temp.head()" 117 | ] 118 | }, 119 | { 120 | "cell_type": "code", 121 | "execution_count": 5, 122 | "id": "3fba2ca2-f24b-4f62-823b-6f1d9725e6ca", 123 | "metadata": {}, 124 | "outputs": [], 125 | "source": [ 126 | "# Parsing datetime into separate columns to make the data more meaningful. Click Shift+Tab for options on any Signature.\n", 127 | "# read_csv has parse_dates parameter" 128 | ] 129 | }, 130 | { 131 | "cell_type": "code", 132 | "execution_count": 6, 133 | "id": "b993b64c-4d7e-471c-afb4-764f9783c6e4", 134 | "metadata": {}, 135 | "outputs": [], 136 | "source": [ 137 | "# This step can be done when data is imported from csv. It makes sense to have datetime information as index of dataframe" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": 7, 143 | "id": "c09439bc-a9d6-479e-b395-1ee9411a0531", 144 | "metadata": {}, 145 | "outputs": [], 146 | "source": [ 147 | "temp = pd.read_csv('temp.csv',parse_dates=['datetime'], index_col = 'datetime')" 148 | ] 149 | }, 150 | { 151 | "cell_type": "code", 152 | "execution_count": 8, 153 | "id": "ebca83bb-bdcd-46ee-9d34-f75715eab46b", 154 | "metadata": {}, 155 | "outputs": [ 156 | { 157 | "data": { 158 | "text/html": [ 159 | "
\n", 160 | "\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 | "
LANY
datetime
2013-01-01 00:00:0011.7-1.1
2013-01-01 01:00:0010.7-1.7
2013-01-01 02:00:009.9-2.0
2013-01-01 03:00:009.3-2.1
2013-01-01 04:00:008.8-2.3
\n", 214 | "
" 215 | ], 216 | "text/plain": [ 217 | " LA NY\n", 218 | "datetime \n", 219 | "2013-01-01 00:00:00 11.7 -1.1\n", 220 | "2013-01-01 01:00:00 10.7 -1.7\n", 221 | "2013-01-01 02:00:00 9.9 -2.0\n", 222 | "2013-01-01 03:00:00 9.3 -2.1\n", 223 | "2013-01-01 04:00:00 8.8 -2.3" 224 | ] 225 | }, 226 | "execution_count": 8, 227 | "metadata": {}, 228 | "output_type": "execute_result" 229 | } 230 | ], 231 | "source": [ 232 | "temp.head()" 233 | ] 234 | }, 235 | { 236 | "cell_type": "code", 237 | "execution_count": 9, 238 | "id": "55bdacbc-c5d8-45af-99b4-195f05fa0c5e", 239 | "metadata": {}, 240 | "outputs": [ 241 | { 242 | "name": "stdout", 243 | "output_type": "stream", 244 | "text": [ 245 | "\n", 246 | "DatetimeIndex: 35064 entries, 2013-01-01 00:00:00 to 2016-12-31 23:00:00\n", 247 | "Data columns (total 2 columns):\n", 248 | " # Column Non-Null Count Dtype \n", 249 | "--- ------ -------------- ----- \n", 250 | " 0 LA 35062 non-null float64\n", 251 | " 1 NY 35064 non-null float64\n", 252 | "dtypes: float64(2)\n", 253 | "memory usage: 821.8 KB\n" 254 | ] 255 | } 256 | ], 257 | "source": [ 258 | "# Using info to get information about the dataframe\n", 259 | "temp.info()" 260 | ] 261 | }, 262 | { 263 | "cell_type": "code", 264 | "execution_count": 10, 265 | "id": "a66a8100-47cd-4f21-8e44-838b5bbc33a7", 266 | "metadata": {}, 267 | "outputs": [], 268 | "source": [ 269 | "# as can be seen datetime datatype changed from object to datetime64" 270 | ] 271 | }, 272 | { 273 | "cell_type": "code", 274 | "execution_count": 11, 275 | "id": "af5fc299-50a3-405b-9a0b-5b13cea02447", 276 | "metadata": {}, 277 | "outputs": [ 278 | { 279 | "data": { 280 | "text/plain": [ 281 | "11.7" 282 | ] 283 | }, 284 | "execution_count": 11, 285 | "metadata": {}, 286 | "output_type": "execute_result" 287 | } 288 | ], 289 | "source": [ 290 | "# finding a particular object at a location\n", 291 | "temp.iloc[0,0]" 292 | ] 293 | }, 294 | { 295 | "cell_type": "code", 296 | "execution_count": 12, 297 | "id": "3e5516e1-fc00-424a-84f6-2fb8bb003a24", 298 | "metadata": {}, 299 | "outputs": [ 300 | { 301 | "data": { 302 | "text/plain": [ 303 | "numpy.float64" 304 | ] 305 | }, 306 | "execution_count": 12, 307 | "metadata": {}, 308 | "output_type": "execute_result" 309 | } 310 | ], 311 | "source": [ 312 | "# Checking datatype \n", 313 | "type(temp.iloc[0,0])" 314 | ] 315 | }, 316 | { 317 | "cell_type": "markdown", 318 | "id": "57a7a975-7e15-4885-8427-61528a8b2ee0", 319 | "metadata": {}, 320 | "source": [ 321 | "# Converting strings to datetime objects with pd.to_datetime" 322 | ] 323 | }, 324 | { 325 | "cell_type": "code", 326 | "execution_count": 13, 327 | "id": "35321537-1e77-424c-a7a3-0e6771d93bb8", 328 | "metadata": {}, 329 | "outputs": [], 330 | "source": [ 331 | "import pandas as pd" 332 | ] 333 | }, 334 | { 335 | "cell_type": "code", 336 | "execution_count": 14, 337 | "id": "d6ecbbcf-243d-40cb-928a-951d13dac61d", 338 | "metadata": {}, 339 | "outputs": [], 340 | "source": [ 341 | "temp = pd.read_csv('temp.csv')" 342 | ] 343 | }, 344 | { 345 | "cell_type": "code", 346 | "execution_count": 15, 347 | "id": "bac93204-2b23-48d6-9772-f836ccbfa791", 348 | "metadata": {}, 349 | "outputs": [ 350 | { 351 | "data": { 352 | "text/html": [ 353 | "
\n", 354 | "\n", 367 | "\n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | "
datetimeLANY
02013-01-01 00:00:0011.7-1.1
12013-01-01 01:00:0010.7-1.7
22013-01-01 02:00:009.9-2.0
32013-01-01 03:00:009.3-2.1
42013-01-01 04:00:008.8-2.3
\n", 409 | "
" 410 | ], 411 | "text/plain": [ 412 | " datetime LA NY\n", 413 | "0 2013-01-01 00:00:00 11.7 -1.1\n", 414 | "1 2013-01-01 01:00:00 10.7 -1.7\n", 415 | "2 2013-01-01 02:00:00 9.9 -2.0\n", 416 | "3 2013-01-01 03:00:00 9.3 -2.1\n", 417 | "4 2013-01-01 04:00:00 8.8 -2.3" 418 | ] 419 | }, 420 | "execution_count": 15, 421 | "metadata": {}, 422 | "output_type": "execute_result" 423 | } 424 | ], 425 | "source": [ 426 | "temp.head()" 427 | ] 428 | }, 429 | { 430 | "cell_type": "code", 431 | "execution_count": 16, 432 | "id": "f54e45f0-581b-4b2a-8fd6-d7cca23af31a", 433 | "metadata": {}, 434 | "outputs": [ 435 | { 436 | "name": "stdout", 437 | "output_type": "stream", 438 | "text": [ 439 | "\n", 440 | "RangeIndex: 35064 entries, 0 to 35063\n", 441 | "Data columns (total 3 columns):\n", 442 | " # Column Non-Null Count Dtype \n", 443 | "--- ------ -------------- ----- \n", 444 | " 0 datetime 35064 non-null object \n", 445 | " 1 LA 35062 non-null float64\n", 446 | " 2 NY 35064 non-null float64\n", 447 | "dtypes: float64(2), object(1)\n", 448 | "memory usage: 821.9+ KB\n" 449 | ] 450 | } 451 | ], 452 | "source": [ 453 | "temp.info()" 454 | ] 455 | }, 456 | { 457 | "cell_type": "code", 458 | "execution_count": 17, 459 | "id": "88bdfdd0-4c78-4d50-b87d-d05f4b5efbee", 460 | "metadata": {}, 461 | "outputs": [ 462 | { 463 | "data": { 464 | "text/plain": [ 465 | "0 2013-01-01 00:00:00\n", 466 | "1 2013-01-01 01:00:00\n", 467 | "2 2013-01-01 02:00:00\n", 468 | "3 2013-01-01 03:00:00\n", 469 | "4 2013-01-01 04:00:00\n", 470 | " ... \n", 471 | "35059 2016-12-31 19:00:00\n", 472 | "35060 2016-12-31 20:00:00\n", 473 | "35061 2016-12-31 21:00:00\n", 474 | "35062 2016-12-31 22:00:00\n", 475 | "35063 2016-12-31 23:00:00\n", 476 | "Name: datetime, Length: 35064, dtype: object" 477 | ] 478 | }, 479 | "execution_count": 17, 480 | "metadata": {}, 481 | "output_type": "execute_result" 482 | } 483 | ], 484 | "source": [ 485 | "# Selecting one column from dataframe\n", 486 | "temp.datetime" 487 | ] 488 | }, 489 | { 490 | "cell_type": "code", 491 | "execution_count": 18, 492 | "id": "934d0c54-f354-4f1a-bb85-d408b8f1e436", 493 | "metadata": {}, 494 | "outputs": [ 495 | { 496 | "data": { 497 | "text/plain": [ 498 | "'2013-01-01 00:00:00'" 499 | ] 500 | }, 501 | "execution_count": 18, 502 | "metadata": {}, 503 | "output_type": "execute_result" 504 | } 505 | ], 506 | "source": [ 507 | "temp.datetime[0]" 508 | ] 509 | }, 510 | { 511 | "cell_type": "code", 512 | "execution_count": 19, 513 | "id": "5c1ad261-a3f9-4acc-9f5d-d44dbc74f3d4", 514 | "metadata": {}, 515 | "outputs": [ 516 | { 517 | "data": { 518 | "text/plain": [ 519 | "0 2013-01-01 00:00:00\n", 520 | "1 2013-01-01 01:00:00\n", 521 | "2 2013-01-01 02:00:00\n", 522 | "3 2013-01-01 03:00:00\n", 523 | "4 2013-01-01 04:00:00\n", 524 | " ... \n", 525 | "35059 2016-12-31 19:00:00\n", 526 | "35060 2016-12-31 20:00:00\n", 527 | "35061 2016-12-31 21:00:00\n", 528 | "35062 2016-12-31 22:00:00\n", 529 | "35063 2016-12-31 23:00:00\n", 530 | "Name: datetime, Length: 35064, dtype: datetime64[ns]" 531 | ] 532 | }, 533 | "execution_count": 19, 534 | "metadata": {}, 535 | "output_type": "execute_result" 536 | } 537 | ], 538 | "source": [ 539 | "# using pd.to_datetime to transform datetime column from strings to datetime object\n", 540 | "pd.to_datetime(temp.datetime)" 541 | ] 542 | }, 543 | { 544 | "cell_type": "code", 545 | "execution_count": 20, 546 | "id": "391826fc-57fc-4a4b-8795-01d943069125", 547 | "metadata": {}, 548 | "outputs": [], 549 | "source": [ 550 | "# Setting datetime column as index using set_index. We need to first apply the pd.to_datetime \n", 551 | "# and pass it through df.set_index. Also drop the datetime column\n", 552 | "# In this same step can overwrite our temp dataframe using temp =\n", 553 | "temp = temp.set_index(pd.to_datetime(temp.datetime)).drop('datetime', axis = 1)" 554 | ] 555 | }, 556 | { 557 | "cell_type": "code", 558 | "execution_count": 21, 559 | "id": "40ce2924-b58f-4c8f-a00c-830b6671cc89", 560 | "metadata": {}, 561 | "outputs": [ 562 | { 563 | "data": { 564 | "text/html": [ 565 | "
\n", 566 | "\n", 579 | "\n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \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 | "
LANY
datetime
2013-01-01 00:00:0011.7-1.1
2013-01-01 01:00:0010.7-1.7
2013-01-01 02:00:009.9-2.0
2013-01-01 03:00:009.3-2.1
2013-01-01 04:00:008.8-2.3
\n", 620 | "
" 621 | ], 622 | "text/plain": [ 623 | " LA NY\n", 624 | "datetime \n", 625 | "2013-01-01 00:00:00 11.7 -1.1\n", 626 | "2013-01-01 01:00:00 10.7 -1.7\n", 627 | "2013-01-01 02:00:00 9.9 -2.0\n", 628 | "2013-01-01 03:00:00 9.3 -2.1\n", 629 | "2013-01-01 04:00:00 8.8 -2.3" 630 | ] 631 | }, 632 | "execution_count": 21, 633 | "metadata": {}, 634 | "output_type": "execute_result" 635 | } 636 | ], 637 | "source": [ 638 | "temp.head()" 639 | ] 640 | }, 641 | { 642 | "cell_type": "code", 643 | "execution_count": 22, 644 | "id": "0fb36332-a107-43ae-ad4b-fc43f1d4fbac", 645 | "metadata": {}, 646 | "outputs": [ 647 | { 648 | "name": "stdout", 649 | "output_type": "stream", 650 | "text": [ 651 | "\n", 652 | "DatetimeIndex: 35064 entries, 2013-01-01 00:00:00 to 2016-12-31 23:00:00\n", 653 | "Data columns (total 2 columns):\n", 654 | " # Column Non-Null Count Dtype \n", 655 | "--- ------ -------------- ----- \n", 656 | " 0 LA 35062 non-null float64\n", 657 | " 1 NY 35064 non-null float64\n", 658 | "dtypes: float64(2)\n", 659 | "memory usage: 821.8 KB\n" 660 | ] 661 | } 662 | ], 663 | "source": [ 664 | "temp.info()" 665 | ] 666 | }, 667 | { 668 | "cell_type": "code", 669 | "execution_count": 23, 670 | "id": "90ab4711-e01b-4571-95d4-1de56603a2da", 671 | "metadata": {}, 672 | "outputs": [ 673 | { 674 | "data": { 675 | "text/plain": [ 676 | "DatetimeIndex(['2013-01-01 00:00:00', '2013-01-01 01:00:00',\n", 677 | " '2013-01-01 02:00:00', '2013-01-01 03:00:00',\n", 678 | " '2013-01-01 04:00:00', '2013-01-01 05:00:00',\n", 679 | " '2013-01-01 06:00:00', '2013-01-01 07:00:00',\n", 680 | " '2013-01-01 08:00:00', '2013-01-01 09:00:00',\n", 681 | " ...\n", 682 | " '2016-12-31 14:00:00', '2016-12-31 15:00:00',\n", 683 | " '2016-12-31 16:00:00', '2016-12-31 17:00:00',\n", 684 | " '2016-12-31 18:00:00', '2016-12-31 19:00:00',\n", 685 | " '2016-12-31 20:00:00', '2016-12-31 21:00:00',\n", 686 | " '2016-12-31 22:00:00', '2016-12-31 23:00:00'],\n", 687 | " dtype='datetime64[ns]', name='datetime', length=35064, freq=None)" 688 | ] 689 | }, 690 | "execution_count": 23, 691 | "metadata": {}, 692 | "output_type": "execute_result" 693 | } 694 | ], 695 | "source": [ 696 | "temp.index # now we will get datetime as index" 697 | ] 698 | }, 699 | { 700 | "cell_type": "code", 701 | "execution_count": 24, 702 | "id": "cd54c9d3-73f0-47e9-98d5-a697d0df2b7d", 703 | "metadata": {}, 704 | "outputs": [ 705 | { 706 | "data": { 707 | "text/plain": [ 708 | "Timestamp('2013-01-01 00:00:00')" 709 | ] 710 | }, 711 | "execution_count": 24, 712 | "metadata": {}, 713 | "output_type": "execute_result" 714 | } 715 | ], 716 | "source": [ 717 | "# we can check for a single element as well\n", 718 | "temp.index[0]" 719 | ] 720 | }, 721 | { 722 | "cell_type": "code", 723 | "execution_count": 25, 724 | "id": "a7290e6e-ce1b-4e86-89ca-8c86481638bf", 725 | "metadata": {}, 726 | "outputs": [], 727 | "source": [ 728 | "# Pandas is very versatile in handling datetime objects. It can handle yyyy-mm-dd, yyyymdd, yyyy/mm/dd, yyyy mm dd, \n", 729 | "# yyyy-dd-mm, yyyy dd mm, 2015 May 20, May 2015 20, May 20 2015 formats\n", 730 | "# uppercase or lowercase letters do not make a difference\n", 731 | "# by default pandas assumes time to be midnight. time formats can be hh, hh:mm, hh:mm:ss" 732 | ] 733 | }, 734 | { 735 | "cell_type": "code", 736 | "execution_count": 26, 737 | "id": "cfef6073-f0f7-4448-b46f-6675cb8b6642", 738 | "metadata": {}, 739 | "outputs": [ 740 | { 741 | "data": { 742 | "text/plain": [ 743 | "Timestamp('2015-06-25 10:30:00')" 744 | ] 745 | }, 746 | "execution_count": 26, 747 | "metadata": {}, 748 | "output_type": "execute_result" 749 | } 750 | ], 751 | "source": [ 752 | "pd.to_datetime('2015-06-25 10:30')" 753 | ] 754 | }, 755 | { 756 | "cell_type": "code", 757 | "execution_count": 27, 758 | "id": "093847b7-8446-47a1-b29b-7d6bb029af2e", 759 | "metadata": {}, 760 | "outputs": [ 761 | { 762 | "data": { 763 | "text/plain": [ 764 | "DatetimeIndex(['2015-05-30', '2016-02-16'], dtype='datetime64[ns]', freq=None)" 765 | ] 766 | }, 767 | "execution_count": 27, 768 | "metadata": {}, 769 | "output_type": "execute_result" 770 | } 771 | ], 772 | "source": [ 773 | "pd.to_datetime(['may 30 2015', '02-16-2016'])" 774 | ] 775 | }, 776 | { 777 | "cell_type": "code", 778 | "execution_count": 28, 779 | "id": "3d818ef0-4af9-4547-a301-5e1757c3920b", 780 | "metadata": {}, 781 | "outputs": [ 782 | { 783 | "data": { 784 | "text/plain": [ 785 | "DatetimeIndex(['2015-05-30', '2016-02-16', 'NaT'], dtype='datetime64[ns]', freq=None)" 786 | ] 787 | }, 788 | "execution_count": 28, 789 | "metadata": {}, 790 | "output_type": "execute_result" 791 | } 792 | ], 793 | "source": [ 794 | "pd.to_datetime(['may 30 2015', '02-16-2016', 'Apple'], errors = 'coerce')" 795 | ] 796 | }, 797 | { 798 | "cell_type": "code", 799 | "execution_count": 29, 800 | "id": "cdcefe8b-7c3d-445d-93e0-56adb7a5c497", 801 | "metadata": {}, 802 | "outputs": [], 803 | "source": [ 804 | "# We see that apple was changed to NaT which means Not a Time" 805 | ] 806 | } 807 | ], 808 | "metadata": { 809 | "kernelspec": { 810 | "display_name": "Python 3 (ipykernel)", 811 | "language": "python", 812 | "name": "python3" 813 | }, 814 | "language_info": { 815 | "codemirror_mode": { 816 | "name": "ipython", 817 | "version": 3 818 | }, 819 | "file_extension": ".py", 820 | "mimetype": "text/x-python", 821 | "name": "python", 822 | "nbconvert_exporter": "python", 823 | "pygments_lexer": "ipython3", 824 | "version": "3.8.5" 825 | } 826 | }, 827 | "nbformat": 4, 828 | "nbformat_minor": 5 829 | } 830 | -------------------------------------------------------------------------------- /Time Series operations with Pandas/4. Datetime Index Methods, Timezones and NA values.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "9e102804", 6 | "metadata": {}, 7 | "source": [ 8 | "# Datetime Index attributes and Methods\n", 9 | "Helps in creating customised features for dates and times" 10 | ] 11 | }, 12 | { 13 | "cell_type": "code", 14 | "execution_count": 1, 15 | "id": "083408cf", 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "import pandas as pd" 20 | ] 21 | }, 22 | { 23 | "cell_type": "code", 24 | "execution_count": 2, 25 | "id": "a5074038", 26 | "metadata": {}, 27 | "outputs": [], 28 | "source": [ 29 | "# Importing data from csv files\n", 30 | "stocks = pd.read_csv('stocks.csv', header = [0,1], index_col = [0], parse_dates = [0])" 31 | ] 32 | }, 33 | { 34 | "cell_type": "code", 35 | "execution_count": 3, 36 | "id": "406f8048", 37 | "metadata": {}, 38 | "outputs": [ 39 | { 40 | "data": { 41 | "text/html": [ 42 | "
\n", 43 | "\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 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \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 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | "
Adj CloseClose...OpenVolume
AAPLBADISIBMKOMSFTAAPLBADISIBM...DISIBMKOMSFTAAPLBADISIBMKOMSFT
Date
2009-12-316.50357441.85678928.09070692.40611318.95175723.8014567.52607254.13000132.25130.899994...32.27132.41000428.79000130.98000035241080021894001965170042234001084880031929700
2010-01-046.60480143.44197527.93392493.50031318.96506124.1684727.64321456.18000032.07132.449997...32.50131.17999328.58000030.62000149372960061867001370040061553001387040038409100
2010-01-056.61621944.86477327.86423792.37083418.73564324.1762797.65642858.02000031.99130.850006...32.07131.67999328.42499930.85000060190480088678001030770068414002317240049749600
2010-01-066.51098046.22572727.71616691.77079018.72898924.0279067.53464359.77999931.82130.000000...31.90130.67999328.17499930.87999955216000088365001070950056053001926460058182400
2010-01-076.49894548.09703127.72487891.45310218.68244023.7780257.52071462.20000131.83129.550003...31.77129.86999528.16500130.62999947713120014379100820210058406001323460050559700
\n", 242 | "

5 rows × 36 columns

\n", 243 | "
" 244 | ], 245 | "text/plain": [ 246 | " Adj Close \\\n", 247 | " AAPL BA DIS IBM KO MSFT \n", 248 | "Date \n", 249 | "2009-12-31 6.503574 41.856789 28.090706 92.406113 18.951757 23.801456 \n", 250 | "2010-01-04 6.604801 43.441975 27.933924 93.500313 18.965061 24.168472 \n", 251 | "2010-01-05 6.616219 44.864773 27.864237 92.370834 18.735643 24.176279 \n", 252 | "2010-01-06 6.510980 46.225727 27.716166 91.770790 18.728989 24.027906 \n", 253 | "2010-01-07 6.498945 48.097031 27.724878 91.453102 18.682440 23.778025 \n", 254 | "\n", 255 | " Close ... Open \\\n", 256 | " AAPL BA DIS IBM ... DIS IBM \n", 257 | "Date ... \n", 258 | "2009-12-31 7.526072 54.130001 32.25 130.899994 ... 32.27 132.410004 \n", 259 | "2010-01-04 7.643214 56.180000 32.07 132.449997 ... 32.50 131.179993 \n", 260 | "2010-01-05 7.656428 58.020000 31.99 130.850006 ... 32.07 131.679993 \n", 261 | "2010-01-06 7.534643 59.779999 31.82 130.000000 ... 31.90 130.679993 \n", 262 | "2010-01-07 7.520714 62.200001 31.83 129.550003 ... 31.77 129.869995 \n", 263 | "\n", 264 | " Volume \\\n", 265 | " KO MSFT AAPL BA DIS IBM \n", 266 | "Date \n", 267 | "2009-12-31 28.790001 30.980000 352410800 2189400 19651700 4223400 \n", 268 | "2010-01-04 28.580000 30.620001 493729600 6186700 13700400 6155300 \n", 269 | "2010-01-05 28.424999 30.850000 601904800 8867800 10307700 6841400 \n", 270 | "2010-01-06 28.174999 30.879999 552160000 8836500 10709500 5605300 \n", 271 | "2010-01-07 28.165001 30.629999 477131200 14379100 8202100 5840600 \n", 272 | "\n", 273 | " \n", 274 | " KO MSFT \n", 275 | "Date \n", 276 | "2009-12-31 10848800 31929700 \n", 277 | "2010-01-04 13870400 38409100 \n", 278 | "2010-01-05 23172400 49749600 \n", 279 | "2010-01-06 19264600 58182400 \n", 280 | "2010-01-07 13234600 50559700 \n", 281 | "\n", 282 | "[5 rows x 36 columns]" 283 | ] 284 | }, 285 | "execution_count": 3, 286 | "metadata": {}, 287 | "output_type": "execute_result" 288 | } 289 | ], 290 | "source": [ 291 | "stocks.head()" 292 | ] 293 | }, 294 | { 295 | "cell_type": "code", 296 | "execution_count": 4, 297 | "id": "7c28e981", 298 | "metadata": {}, 299 | "outputs": [], 300 | "source": [ 301 | "# Creating a new dataframe containing only closing prices by copying the close columns\n", 302 | "close = stocks.loc[:, 'Close'].copy()" 303 | ] 304 | }, 305 | { 306 | "cell_type": "code", 307 | "execution_count": 5, 308 | "id": "032279cb", 309 | "metadata": {}, 310 | "outputs": [ 311 | { 312 | "data": { 313 | "text/html": [ 314 | "
\n", 315 | "\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 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | "
AAPLBADISIBMKOMSFT
Date
2009-12-317.52607254.13000132.25130.89999428.50000030.480000
2010-01-047.64321456.18000032.07132.44999728.52000030.950001
2010-01-057.65642858.02000031.99130.85000628.17499930.959999
2010-01-067.53464359.77999931.82130.00000028.16500130.770000
2010-01-077.52071462.20000131.83129.55000328.09499930.450001
\n", 397 | "
" 398 | ], 399 | "text/plain": [ 400 | " AAPL BA DIS IBM KO MSFT\n", 401 | "Date \n", 402 | "2009-12-31 7.526072 54.130001 32.25 130.899994 28.500000 30.480000\n", 403 | "2010-01-04 7.643214 56.180000 32.07 132.449997 28.520000 30.950001\n", 404 | "2010-01-05 7.656428 58.020000 31.99 130.850006 28.174999 30.959999\n", 405 | "2010-01-06 7.534643 59.779999 31.82 130.000000 28.165001 30.770000\n", 406 | "2010-01-07 7.520714 62.200001 31.83 129.550003 28.094999 30.450001" 407 | ] 408 | }, 409 | "execution_count": 5, 410 | "metadata": {}, 411 | "output_type": "execute_result" 412 | } 413 | ], 414 | "source": [ 415 | "close.head()" 416 | ] 417 | }, 418 | { 419 | "cell_type": "code", 420 | "execution_count": 6, 421 | "id": "95a5a441", 422 | "metadata": {}, 423 | "outputs": [ 424 | { 425 | "name": "stdout", 426 | "output_type": "stream", 427 | "text": [ 428 | "\n", 429 | "DatetimeIndex: 2289 entries, 2009-12-31 to 2019-02-05\n", 430 | "Data columns (total 6 columns):\n", 431 | " # Column Non-Null Count Dtype \n", 432 | "--- ------ -------------- ----- \n", 433 | " 0 AAPL 2289 non-null float64\n", 434 | " 1 BA 2289 non-null float64\n", 435 | " 2 DIS 2289 non-null float64\n", 436 | " 3 IBM 2289 non-null float64\n", 437 | " 4 KO 2289 non-null float64\n", 438 | " 5 MSFT 2289 non-null float64\n", 439 | "dtypes: float64(6)\n", 440 | "memory usage: 125.2 KB\n" 441 | ] 442 | } 443 | ], 444 | "source": [ 445 | "close.info()" 446 | ] 447 | }, 448 | { 449 | "cell_type": "code", 450 | "execution_count": 8, 451 | "id": "4ddc9c22", 452 | "metadata": {}, 453 | "outputs": [ 454 | { 455 | "data": { 456 | "text/plain": [ 457 | "DatetimeIndex(['2009-12-31', '2010-01-04', '2010-01-05', '2010-01-06',\n", 458 | " '2010-01-07', '2010-01-08', '2010-01-11', '2010-01-12',\n", 459 | " '2010-01-13', '2010-01-14',\n", 460 | " ...\n", 461 | " '2019-01-23', '2019-01-24', '2019-01-25', '2019-01-28',\n", 462 | " '2019-01-29', '2019-01-30', '2019-01-31', '2019-02-01',\n", 463 | " '2019-02-04', '2019-02-05'],\n", 464 | " dtype='datetime64[ns]', name='Date', length=2289, freq=None)" 465 | ] 466 | }, 467 | "execution_count": 8, 468 | "metadata": {}, 469 | "output_type": "execute_result" 470 | } 471 | ], 472 | "source": [ 473 | "# Taking a closer look at datetime index\n", 474 | "close.index" 475 | ] 476 | }, 477 | { 478 | "cell_type": "code", 479 | "execution_count": 9, 480 | "id": "c6944cbd", 481 | "metadata": {}, 482 | "outputs": [], 483 | "source": [ 484 | "# Suppose we want to insert additional information regarding day of the week or quarter for more clarity, we can do that" 485 | ] 486 | }, 487 | { 488 | "cell_type": "code", 489 | "execution_count": 10, 490 | "id": "b5ffa149", 491 | "metadata": {}, 492 | "outputs": [ 493 | { 494 | "data": { 495 | "text/plain": [ 496 | "Int64Index([31, 4, 5, 6, 7, 8, 11, 12, 13, 14,\n", 497 | " ...\n", 498 | " 23, 24, 25, 28, 29, 30, 31, 1, 4, 5],\n", 499 | " dtype='int64', name='Date', length=2289)" 500 | ] 501 | }, 502 | "execution_count": 10, 503 | "metadata": {}, 504 | "output_type": "execute_result" 505 | } 506 | ], 507 | "source": [ 508 | "# To get day number of the month in Datetime index\n", 509 | "close.index.day" 510 | ] 511 | }, 512 | { 513 | "cell_type": "code", 514 | "execution_count": 11, 515 | "id": "91c85630", 516 | "metadata": {}, 517 | "outputs": [ 518 | { 519 | "data": { 520 | "text/plain": [ 521 | "Int64Index([12, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", 522 | " ...\n", 523 | " 1, 1, 1, 1, 1, 1, 1, 2, 2, 2],\n", 524 | " dtype='int64', name='Date', length=2289)" 525 | ] 526 | }, 527 | "execution_count": 11, 528 | "metadata": {}, 529 | "output_type": "execute_result" 530 | } 531 | ], 532 | "source": [ 533 | "# To get the month of the year in Datetime index, 1 being January, 12 being December\n", 534 | "close.index.month" 535 | ] 536 | }, 537 | { 538 | "cell_type": "code", 539 | "execution_count": 13, 540 | "id": "e5aae555", 541 | "metadata": {}, 542 | "outputs": [ 543 | { 544 | "data": { 545 | "text/plain": [ 546 | "Int64Index([2009, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010, 2010,\n", 547 | " ...\n", 548 | " 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019],\n", 549 | " dtype='int64', name='Date', length=2289)" 550 | ] 551 | }, 552 | "execution_count": 13, 553 | "metadata": {}, 554 | "output_type": "execute_result" 555 | } 556 | ], 557 | "source": [ 558 | "# To get year in Datetime index\n", 559 | "close.index.year" 560 | ] 561 | }, 562 | { 563 | "cell_type": "code", 564 | "execution_count": 14, 565 | "id": "45ab07eb", 566 | "metadata": {}, 567 | "outputs": [ 568 | { 569 | "data": { 570 | "text/plain": [ 571 | "Index(['Thursday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday',\n", 572 | " 'Monday', 'Tuesday', 'Wednesday', 'Thursday',\n", 573 | " ...\n", 574 | " 'Wednesday', 'Thursday', 'Friday', 'Monday', 'Tuesday', 'Wednesday',\n", 575 | " 'Thursday', 'Friday', 'Monday', 'Tuesday'],\n", 576 | " dtype='object', name='Date', length=2289)" 577 | ] 578 | }, 579 | "execution_count": 14, 580 | "metadata": {}, 581 | "output_type": "execute_result" 582 | } 583 | ], 584 | "source": [ 585 | "# To get name of the day in Datetime index\n", 586 | "close.index.day_name()" 587 | ] 588 | }, 589 | { 590 | "cell_type": "code", 591 | "execution_count": 21, 592 | "id": "0120df4b", 593 | "metadata": {}, 594 | "outputs": [ 595 | { 596 | "data": { 597 | "text/plain": [ 598 | "Index(['December', 'January', 'January', 'January', 'January', 'January',\n", 599 | " 'January', 'January', 'January', 'January',\n", 600 | " ...\n", 601 | " 'January', 'January', 'January', 'January', 'January', 'January',\n", 602 | " 'January', 'February', 'February', 'February'],\n", 603 | " dtype='object', name='Date', length=2289)" 604 | ] 605 | }, 606 | "execution_count": 21, 607 | "metadata": {}, 608 | "output_type": "execute_result" 609 | } 610 | ], 611 | "source": [ 612 | "# To get the month name in Datetime index\n", 613 | "close.index.month_name()" 614 | ] 615 | }, 616 | { 617 | "cell_type": "code", 618 | "execution_count": 22, 619 | "id": "eb1aadb9", 620 | "metadata": {}, 621 | "outputs": [ 622 | { 623 | "data": { 624 | "text/plain": [ 625 | "Int64Index([3, 0, 1, 2, 3, 4, 0, 1, 2, 3,\n", 626 | " ...\n", 627 | " 2, 3, 4, 0, 1, 2, 3, 4, 0, 1],\n", 628 | " dtype='int64', name='Date', length=2289)" 629 | ] 630 | }, 631 | "execution_count": 22, 632 | "metadata": {}, 633 | "output_type": "execute_result" 634 | } 635 | ], 636 | "source": [ 637 | "# To get weekday as integer representation in Datetime index, Monday being 0 and Friday being 4\n", 638 | "close.index.weekday" 639 | ] 640 | }, 641 | { 642 | "cell_type": "code", 643 | "execution_count": 23, 644 | "id": "c90edebe", 645 | "metadata": {}, 646 | "outputs": [ 647 | { 648 | "data": { 649 | "text/plain": [ 650 | "Int64Index([4, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", 651 | " ...\n", 652 | " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n", 653 | " dtype='int64', name='Date', length=2289)" 654 | ] 655 | }, 656 | "execution_count": 23, 657 | "metadata": {}, 658 | "output_type": "execute_result" 659 | } 660 | ], 661 | "source": [ 662 | "# To get quarter information in the Datetime index\n", 663 | "close.index.quarter" 664 | ] 665 | }, 666 | { 667 | "cell_type": "code", 668 | "execution_count": 24, 669 | "id": "df0acc13", 670 | "metadata": {}, 671 | "outputs": [ 672 | { 673 | "data": { 674 | "text/plain": [ 675 | "Int64Index([31, 31, 31, 31, 31, 31, 31, 31, 31, 31,\n", 676 | " ...\n", 677 | " 31, 31, 31, 31, 31, 31, 31, 28, 28, 28],\n", 678 | " dtype='int64', name='Date', length=2289)" 679 | ] 680 | }, 681 | "execution_count": 24, 682 | "metadata": {}, 683 | "output_type": "execute_result" 684 | } 685 | ], 686 | "source": [ 687 | "# To find total days of a month in the Datetime index. This is not very helpful really\n", 688 | "close.index.days_in_month" 689 | ] 690 | }, 691 | { 692 | "cell_type": "code", 693 | "execution_count": 28, 694 | "id": "3122216c", 695 | "metadata": {}, 696 | "outputs": [ 697 | { 698 | "name": "stderr", 699 | "output_type": "stream", 700 | "text": [ 701 | "C:\\Users\\anujk\\AppData\\Local\\Temp/ipykernel_15812/1502405383.py:2: FutureWarning: weekofyear and week have been deprecated, please use DatetimeIndex.isocalendar().week instead, which returns a Series. To exactly reproduce the behavior of week and weekofyear and return an Index, you may call pd.Int64Index(idx.isocalendar().week)\n", 702 | " close.index.week\n" 703 | ] 704 | }, 705 | { 706 | "data": { 707 | "text/plain": [ 708 | "Int64Index([53, 1, 1, 1, 1, 1, 2, 2, 2, 2,\n", 709 | " ...\n", 710 | " 4, 4, 4, 5, 5, 5, 5, 5, 6, 6],\n", 711 | " dtype='int64', name='Date', length=2289)" 712 | ] 713 | }, 714 | "execution_count": 28, 715 | "metadata": {}, 716 | "output_type": "execute_result" 717 | } 718 | ], 719 | "source": [ 720 | "# To find the week number of the year in the Datetime index\n", 721 | "close.index.week" 722 | ] 723 | }, 724 | { 725 | "cell_type": "code", 726 | "execution_count": 29, 727 | "id": "06a2fa6e", 728 | "metadata": {}, 729 | "outputs": [ 730 | { 731 | "name": "stderr", 732 | "output_type": "stream", 733 | "text": [ 734 | "C:\\Users\\anujk\\AppData\\Local\\Temp/ipykernel_15812/3635336598.py:1: FutureWarning: weekofyear and week have been deprecated, please use DatetimeIndex.isocalendar().week instead, which returns a Series. To exactly reproduce the behavior of week and weekofyear and return an Index, you may call pd.Int64Index(idx.isocalendar().week)\n", 735 | " close.index.weekofyear\n" 736 | ] 737 | }, 738 | { 739 | "data": { 740 | "text/plain": [ 741 | "Int64Index([53, 1, 1, 1, 1, 1, 2, 2, 2, 2,\n", 742 | " ...\n", 743 | " 4, 4, 4, 5, 5, 5, 5, 5, 6, 6],\n", 744 | " dtype='int64', name='Date', length=2289)" 745 | ] 746 | }, 747 | "execution_count": 29, 748 | "metadata": {}, 749 | "output_type": "execute_result" 750 | } 751 | ], 752 | "source": [ 753 | "# Week of the year reproduces the same result\n", 754 | "close.index.weekofyear" 755 | ] 756 | }, 757 | { 758 | "cell_type": "code", 759 | "execution_count": 30, 760 | "id": "f068c1a4", 761 | "metadata": {}, 762 | "outputs": [ 763 | { 764 | "data": { 765 | "text/plain": [ 766 | "array([ True, False, False, ..., False, False, False])" 767 | ] 768 | }, 769 | "execution_count": 30, 770 | "metadata": {}, 771 | "output_type": "execute_result" 772 | } 773 | ], 774 | "source": [ 775 | "# To check whether the month has ended\n", 776 | "close.index.is_month_end" 777 | ] 778 | }, 779 | { 780 | "cell_type": "code", 781 | "execution_count": 31, 782 | "id": "381bb5f0", 783 | "metadata": {}, 784 | "outputs": [], 785 | "source": [ 786 | "# Creating new columns containing information about the Day name and the Quarter in the dataframe\n", 787 | "close['Day'] = stocks.index.day_name()\n", 788 | "close['Quarter'] = stocks.index.quarter" 789 | ] 790 | }, 791 | { 792 | "cell_type": "code", 793 | "execution_count": 32, 794 | "id": "25a1b1d4", 795 | "metadata": {}, 796 | "outputs": [ 797 | { 798 | "data": { 799 | "text/html": [ 800 | "
\n", 801 | "\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 | " \n", 868 | " \n", 869 | " \n", 870 | " \n", 871 | " \n", 872 | " \n", 873 | " \n", 874 | " \n", 875 | " \n", 876 | " \n", 877 | " \n", 878 | " \n", 879 | " \n", 880 | " \n", 881 | " \n", 882 | " \n", 883 | " \n", 884 | " \n", 885 | " \n", 886 | " \n", 887 | " \n", 888 | " \n", 889 | " \n", 890 | " \n", 891 | " \n", 892 | " \n", 893 | " \n", 894 | " \n", 895 | " \n", 896 | "
AAPLBADISIBMKOMSFTDayQuarter
Date
2009-12-317.52607254.13000132.25130.89999428.50000030.480000Thursday4
2010-01-047.64321456.18000032.07132.44999728.52000030.950001Monday1
2010-01-057.65642858.02000031.99130.85000628.17499930.959999Tuesday1
2010-01-067.53464359.77999931.82130.00000028.16500130.770000Wednesday1
2010-01-077.52071462.20000131.83129.55000328.09499930.450001Thursday1
\n", 897 | "
" 898 | ], 899 | "text/plain": [ 900 | " AAPL BA DIS IBM KO MSFT \\\n", 901 | "Date \n", 902 | "2009-12-31 7.526072 54.130001 32.25 130.899994 28.500000 30.480000 \n", 903 | "2010-01-04 7.643214 56.180000 32.07 132.449997 28.520000 30.950001 \n", 904 | "2010-01-05 7.656428 58.020000 31.99 130.850006 28.174999 30.959999 \n", 905 | "2010-01-06 7.534643 59.779999 31.82 130.000000 28.165001 30.770000 \n", 906 | "2010-01-07 7.520714 62.200001 31.83 129.550003 28.094999 30.450001 \n", 907 | "\n", 908 | " Day Quarter \n", 909 | "Date \n", 910 | "2009-12-31 Thursday 4 \n", 911 | "2010-01-04 Monday 1 \n", 912 | "2010-01-05 Tuesday 1 \n", 913 | "2010-01-06 Wednesday 1 \n", 914 | "2010-01-07 Thursday 1 " 915 | ] 916 | }, 917 | "execution_count": 32, 918 | "metadata": {}, 919 | "output_type": "execute_result" 920 | } 921 | ], 922 | "source": [ 923 | "close.head()" 924 | ] 925 | }, 926 | { 927 | "cell_type": "markdown", 928 | "id": "33a0087e", 929 | "metadata": {}, 930 | "source": [ 931 | "# Filling NA values with backfill bfill, forwardfill ffill and interpolation\n", 932 | "When we resample, reindex or merge time series, we might end up with NA or empty rows. We can handle such situations using\n", 933 | "these methods" 934 | ] 935 | }, 936 | { 937 | "cell_type": "code", 938 | "execution_count": 33, 939 | "id": "fb9c8419", 940 | "metadata": {}, 941 | "outputs": [ 942 | { 943 | "data": { 944 | "text/html": [ 945 | "
\n", 946 | "\n", 959 | "\n", 960 | " \n", 961 | " \n", 962 | " \n", 963 | " \n", 964 | " \n", 965 | " \n", 966 | " \n", 967 | " \n", 968 | " \n", 969 | " \n", 970 | " \n", 971 | " \n", 972 | " \n", 973 | " \n", 974 | " \n", 975 | " \n", 976 | " \n", 977 | " \n", 978 | " \n", 979 | " \n", 980 | " \n", 981 | " \n", 982 | " \n", 983 | " \n", 984 | " \n", 985 | " \n", 986 | " \n", 987 | " \n", 988 | " \n", 989 | " \n", 990 | " \n", 991 | " \n", 992 | " \n", 993 | " \n", 994 | " \n", 995 | " \n", 996 | " \n", 997 | " \n", 998 | " \n", 999 | " \n", 1000 | " \n", 1001 | " \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 | "
AAPLBADISIBMKOMSFTDayQuarter
Date
2009-12-317.52607254.13000132.25130.89999428.50000030.480000Thursday4
2010-01-047.64321456.18000032.07132.44999728.52000030.950001Monday1
2010-01-057.65642858.02000031.99130.85000628.17499930.959999Tuesday1
2010-01-067.53464359.77999931.82130.00000028.16500130.770000Wednesday1
2010-01-077.52071462.20000131.83129.55000328.09499930.450001Thursday1
\n", 1042 | "
" 1043 | ], 1044 | "text/plain": [ 1045 | " AAPL BA DIS IBM KO MSFT \\\n", 1046 | "Date \n", 1047 | "2009-12-31 7.526072 54.130001 32.25 130.899994 28.500000 30.480000 \n", 1048 | "2010-01-04 7.643214 56.180000 32.07 132.449997 28.520000 30.950001 \n", 1049 | "2010-01-05 7.656428 58.020000 31.99 130.850006 28.174999 30.959999 \n", 1050 | "2010-01-06 7.534643 59.779999 31.82 130.000000 28.165001 30.770000 \n", 1051 | "2010-01-07 7.520714 62.200001 31.83 129.550003 28.094999 30.450001 \n", 1052 | "\n", 1053 | " Day Quarter \n", 1054 | "Date \n", 1055 | "2009-12-31 Thursday 4 \n", 1056 | "2010-01-04 Monday 1 \n", 1057 | "2010-01-05 Tuesday 1 \n", 1058 | "2010-01-06 Wednesday 1 \n", 1059 | "2010-01-07 Thursday 1 " 1060 | ] 1061 | }, 1062 | "execution_count": 33, 1063 | "metadata": {}, 1064 | "output_type": "execute_result" 1065 | } 1066 | ], 1067 | "source": [ 1068 | "close.head()" 1069 | ] 1070 | }, 1071 | { 1072 | "cell_type": "code", 1073 | "execution_count": 34, 1074 | "id": "abda8e90", 1075 | "metadata": {}, 1076 | "outputs": [ 1077 | { 1078 | "data": { 1079 | "text/html": [ 1080 | "
\n", 1081 | "\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 | " \n", 1161 | " \n", 1162 | " \n", 1163 | " \n", 1164 | " \n", 1165 | " \n", 1166 | " \n", 1167 | " \n", 1168 | " \n", 1169 | " \n", 1170 | " \n", 1171 | " \n", 1172 | " \n", 1173 | " \n", 1174 | " \n", 1175 | " \n", 1176 | "
AAPLBADISIBMKOMSFTDayQuarter
Date
2019-01-3041.312500387.720001110.129997134.38000547.860001106.379997Wednesday1
2019-01-3141.610001385.619995111.519997134.41999848.130001104.430000Thursday1
2019-02-0141.630001387.429993111.300003134.10000648.700001102.779999Friday1
2019-02-0442.812500397.000000111.800003135.19000249.250000105.739998Monday1
2019-02-0543.544998410.179993112.660004135.55000349.259998107.220001Tuesday1
\n", 1177 | "
" 1178 | ], 1179 | "text/plain": [ 1180 | " AAPL BA DIS IBM KO \\\n", 1181 | "Date \n", 1182 | "2019-01-30 41.312500 387.720001 110.129997 134.380005 47.860001 \n", 1183 | "2019-01-31 41.610001 385.619995 111.519997 134.419998 48.130001 \n", 1184 | "2019-02-01 41.630001 387.429993 111.300003 134.100006 48.700001 \n", 1185 | "2019-02-04 42.812500 397.000000 111.800003 135.190002 49.250000 \n", 1186 | "2019-02-05 43.544998 410.179993 112.660004 135.550003 49.259998 \n", 1187 | "\n", 1188 | " MSFT Day Quarter \n", 1189 | "Date \n", 1190 | "2019-01-30 106.379997 Wednesday 1 \n", 1191 | "2019-01-31 104.430000 Thursday 1 \n", 1192 | "2019-02-01 102.779999 Friday 1 \n", 1193 | "2019-02-04 105.739998 Monday 1 \n", 1194 | "2019-02-05 107.220001 Tuesday 1 " 1195 | ] 1196 | }, 1197 | "execution_count": 34, 1198 | "metadata": {}, 1199 | "output_type": "execute_result" 1200 | } 1201 | ], 1202 | "source": [ 1203 | "close.tail()" 1204 | ] 1205 | }, 1206 | { 1207 | "cell_type": "code", 1208 | "execution_count": 36, 1209 | "id": "cceeca3f", 1210 | "metadata": {}, 1211 | "outputs": [ 1212 | { 1213 | "data": { 1214 | "text/plain": [ 1215 | "DatetimeIndex(['2009-12-31', '2010-01-01', '2010-01-02', '2010-01-03',\n", 1216 | " '2010-01-04', '2010-01-05', '2010-01-06', '2010-01-07',\n", 1217 | " '2010-01-08', '2010-01-09',\n", 1218 | " ...\n", 1219 | " '2019-01-28', '2019-01-29', '2019-01-30', '2019-01-31',\n", 1220 | " '2019-02-01', '2019-02-02', '2019-02-03', '2019-02-04',\n", 1221 | " '2019-02-05', '2019-02-06'],\n", 1222 | " dtype='datetime64[ns]', length=3325, freq='D')" 1223 | ] 1224 | }, 1225 | "execution_count": 36, 1226 | "metadata": {}, 1227 | "output_type": "execute_result" 1228 | } 1229 | ], 1230 | "source": [ 1231 | "# Creating a new Datetime index with all days\n", 1232 | "all_days = pd.date_range(start = '2009-12-31', end = '2019-02-06', freq = 'D')\n", 1233 | "all_days" 1234 | ] 1235 | }, 1236 | { 1237 | "cell_type": "code", 1238 | "execution_count": 37, 1239 | "id": "c6cc6edb", 1240 | "metadata": {}, 1241 | "outputs": [], 1242 | "source": [ 1243 | "# Reindexing the close dataframe to this new all_days datetime index\n", 1244 | "# NOTE: Missing values can be filled in reindexing step itself using the method parameter and putting ffill\n", 1245 | "close = close.reindex(all_days)" 1246 | ] 1247 | }, 1248 | { 1249 | "cell_type": "code", 1250 | "execution_count": 38, 1251 | "id": "7175d543", 1252 | "metadata": {}, 1253 | "outputs": [ 1254 | { 1255 | "data": { 1256 | "text/html": [ 1257 | "
\n", 1258 | "\n", 1271 | "\n", 1272 | " \n", 1273 | " \n", 1274 | " \n", 1275 | " \n", 1276 | " \n", 1277 | " \n", 1278 | " \n", 1279 | " \n", 1280 | " \n", 1281 | " \n", 1282 | " \n", 1283 | " \n", 1284 | " \n", 1285 | " \n", 1286 | " \n", 1287 | " \n", 1288 | " \n", 1289 | " \n", 1290 | " \n", 1291 | " \n", 1292 | " \n", 1293 | " \n", 1294 | " \n", 1295 | " \n", 1296 | " \n", 1297 | " \n", 1298 | " \n", 1299 | " \n", 1300 | " \n", 1301 | " \n", 1302 | " \n", 1303 | " \n", 1304 | " \n", 1305 | " \n", 1306 | " \n", 1307 | " \n", 1308 | " \n", 1309 | " \n", 1310 | " \n", 1311 | " \n", 1312 | " \n", 1313 | " \n", 1314 | " \n", 1315 | " \n", 1316 | " \n", 1317 | " \n", 1318 | " \n", 1319 | " \n", 1320 | " \n", 1321 | " \n", 1322 | " \n", 1323 | " \n", 1324 | " \n", 1325 | " \n", 1326 | " \n", 1327 | " \n", 1328 | " \n", 1329 | " \n", 1330 | " \n", 1331 | " \n", 1332 | " \n", 1333 | " \n", 1334 | " \n", 1335 | " \n", 1336 | " \n", 1337 | " \n", 1338 | " \n", 1339 | " \n", 1340 | " \n", 1341 | " \n", 1342 | " \n", 1343 | " \n", 1344 | " \n", 1345 | " \n", 1346 | " \n", 1347 | " \n", 1348 | " \n", 1349 | " \n", 1350 | " \n", 1351 | " \n", 1352 | " \n", 1353 | " \n", 1354 | " \n", 1355 | " \n", 1356 | " \n", 1357 | " \n", 1358 | " \n", 1359 | " \n", 1360 | " \n", 1361 | " \n", 1362 | " \n", 1363 | " \n", 1364 | " \n", 1365 | " \n", 1366 | " \n", 1367 | " \n", 1368 | " \n", 1369 | " \n", 1370 | " \n", 1371 | " \n", 1372 | " \n", 1373 | " \n", 1374 | " \n", 1375 | " \n", 1376 | " \n", 1377 | " \n", 1378 | " \n", 1379 | " \n", 1380 | " \n", 1381 | " \n", 1382 | " \n", 1383 | " \n", 1384 | " \n", 1385 | " \n", 1386 | " \n", 1387 | " \n", 1388 | " \n", 1389 | " \n", 1390 | " \n", 1391 | " \n", 1392 | " \n", 1393 | " \n", 1394 | " \n", 1395 | " \n", 1396 | " \n", 1397 | " \n", 1398 | " \n", 1399 | " \n", 1400 | " \n", 1401 | " \n", 1402 | " \n", 1403 | " \n", 1404 | " \n", 1405 | " \n", 1406 | " \n", 1407 | " \n", 1408 | " \n", 1409 | " \n", 1410 | " \n", 1411 | " \n", 1412 | " \n", 1413 | " \n", 1414 | " \n", 1415 | " \n", 1416 | " \n", 1417 | " \n", 1418 | " \n", 1419 | " \n", 1420 | " \n", 1421 | " \n", 1422 | " \n", 1423 | " \n", 1424 | " \n", 1425 | " \n", 1426 | " \n", 1427 | " \n", 1428 | " \n", 1429 | " \n", 1430 | " \n", 1431 | " \n", 1432 | " \n", 1433 | " \n", 1434 | " \n", 1435 | " \n", 1436 | " \n", 1437 | " \n", 1438 | " \n", 1439 | " \n", 1440 | " \n", 1441 | " \n", 1442 | " \n", 1443 | " \n", 1444 | " \n", 1445 | " \n", 1446 | " \n", 1447 | " \n", 1448 | " \n", 1449 | " \n", 1450 | " \n", 1451 | " \n", 1452 | " \n", 1453 | " \n", 1454 | " \n", 1455 | " \n", 1456 | " \n", 1457 | " \n", 1458 | " \n", 1459 | " \n", 1460 | " \n", 1461 | " \n", 1462 | " \n", 1463 | " \n", 1464 | " \n", 1465 | " \n", 1466 | " \n", 1467 | " \n", 1468 | " \n", 1469 | " \n", 1470 | " \n", 1471 | " \n", 1472 | " \n", 1473 | " \n", 1474 | " \n", 1475 | " \n", 1476 | " \n", 1477 | " \n", 1478 | " \n", 1479 | " \n", 1480 | " \n", 1481 | " \n", 1482 | " \n", 1483 | " \n", 1484 | " \n", 1485 | " \n", 1486 | " \n", 1487 | " \n", 1488 | " \n", 1489 | " \n", 1490 | " \n", 1491 | " \n", 1492 | " \n", 1493 | " \n", 1494 | " \n", 1495 | " \n", 1496 | " \n", 1497 | " \n", 1498 | " \n", 1499 | " \n", 1500 | " \n", 1501 | " \n", 1502 | " \n", 1503 | " \n", 1504 | " \n", 1505 | " \n", 1506 | " \n", 1507 | "
AAPLBADISIBMKOMSFTDayQuarter
2009-12-317.52607254.13000132.250000130.89999428.50000030.480000Thursday4.0
2010-01-01NaNNaNNaNNaNNaNNaNNaNNaN
2010-01-02NaNNaNNaNNaNNaNNaNNaNNaN
2010-01-03NaNNaNNaNNaNNaNNaNNaNNaN
2010-01-047.64321456.18000032.070000132.44999728.52000030.950001Monday1.0
2010-01-057.65642858.02000031.990000130.85000628.17499930.959999Tuesday1.0
2010-01-067.53464359.77999931.820000130.00000028.16500130.770000Wednesday1.0
2010-01-077.52071462.20000131.830000129.55000328.09499930.450001Thursday1.0
2010-01-087.57071461.59999831.879999130.85000627.57500130.660000Friday1.0
2010-01-09NaNNaNNaNNaNNaNNaNNaNNaN
2010-01-10NaNNaNNaNNaNNaNNaNNaNNaN
2010-01-117.50392960.86999931.360001129.47999628.13500030.270000Monday1.0
2010-01-127.41857160.43000030.820000130.50999528.44000130.070000Tuesday1.0
2010-01-137.52321461.16000031.290001130.22999628.51499930.350000Wednesday1.0
2010-01-147.47964361.56000131.020000132.30999828.56500130.959999Thursday1.0
2010-01-157.35464360.82000030.600000131.77999928.14500030.860001Friday1.0
2010-01-16NaNNaNNaNNaNNaNNaNNaNNaN
2010-01-17NaNNaNNaNNaNNaNNaNNaNNaN
2010-01-18NaNNaNNaNNaNNaNNaNNaNNaN
2010-01-197.68000060.65000231.010000134.13999928.20999931.100000Tuesday1.0
\n", 1508 | "
" 1509 | ], 1510 | "text/plain": [ 1511 | " AAPL BA DIS IBM KO MSFT \\\n", 1512 | "2009-12-31 7.526072 54.130001 32.250000 130.899994 28.500000 30.480000 \n", 1513 | "2010-01-01 NaN NaN NaN NaN NaN NaN \n", 1514 | "2010-01-02 NaN NaN NaN NaN NaN NaN \n", 1515 | "2010-01-03 NaN NaN NaN NaN NaN NaN \n", 1516 | "2010-01-04 7.643214 56.180000 32.070000 132.449997 28.520000 30.950001 \n", 1517 | "2010-01-05 7.656428 58.020000 31.990000 130.850006 28.174999 30.959999 \n", 1518 | "2010-01-06 7.534643 59.779999 31.820000 130.000000 28.165001 30.770000 \n", 1519 | "2010-01-07 7.520714 62.200001 31.830000 129.550003 28.094999 30.450001 \n", 1520 | "2010-01-08 7.570714 61.599998 31.879999 130.850006 27.575001 30.660000 \n", 1521 | "2010-01-09 NaN NaN NaN NaN NaN NaN \n", 1522 | "2010-01-10 NaN NaN NaN NaN NaN NaN \n", 1523 | "2010-01-11 7.503929 60.869999 31.360001 129.479996 28.135000 30.270000 \n", 1524 | "2010-01-12 7.418571 60.430000 30.820000 130.509995 28.440001 30.070000 \n", 1525 | "2010-01-13 7.523214 61.160000 31.290001 130.229996 28.514999 30.350000 \n", 1526 | "2010-01-14 7.479643 61.560001 31.020000 132.309998 28.565001 30.959999 \n", 1527 | "2010-01-15 7.354643 60.820000 30.600000 131.779999 28.145000 30.860001 \n", 1528 | "2010-01-16 NaN NaN NaN NaN NaN NaN \n", 1529 | "2010-01-17 NaN NaN NaN NaN NaN NaN \n", 1530 | "2010-01-18 NaN NaN NaN NaN NaN NaN \n", 1531 | "2010-01-19 7.680000 60.650002 31.010000 134.139999 28.209999 31.100000 \n", 1532 | "\n", 1533 | " Day Quarter \n", 1534 | "2009-12-31 Thursday 4.0 \n", 1535 | "2010-01-01 NaN NaN \n", 1536 | "2010-01-02 NaN NaN \n", 1537 | "2010-01-03 NaN NaN \n", 1538 | "2010-01-04 Monday 1.0 \n", 1539 | "2010-01-05 Tuesday 1.0 \n", 1540 | "2010-01-06 Wednesday 1.0 \n", 1541 | "2010-01-07 Thursday 1.0 \n", 1542 | "2010-01-08 Friday 1.0 \n", 1543 | "2010-01-09 NaN NaN \n", 1544 | "2010-01-10 NaN NaN \n", 1545 | "2010-01-11 Monday 1.0 \n", 1546 | "2010-01-12 Tuesday 1.0 \n", 1547 | "2010-01-13 Wednesday 1.0 \n", 1548 | "2010-01-14 Thursday 1.0 \n", 1549 | "2010-01-15 Friday 1.0 \n", 1550 | "2010-01-16 NaN NaN \n", 1551 | "2010-01-17 NaN NaN \n", 1552 | "2010-01-18 NaN NaN \n", 1553 | "2010-01-19 Tuesday 1.0 " 1554 | ] 1555 | }, 1556 | "execution_count": 38, 1557 | "metadata": {}, 1558 | "output_type": "execute_result" 1559 | } 1560 | ], 1561 | "source": [ 1562 | "close.head(20)" 1563 | ] 1564 | }, 1565 | { 1566 | "cell_type": "code", 1567 | "execution_count": 42, 1568 | "id": "36ecc948", 1569 | "metadata": {}, 1570 | "outputs": [], 1571 | "source": [ 1572 | "# Reassinging the weekday name attribute and quarter to fill missing values\n", 1573 | "# weekday_name does not work. Use day_name()\n", 1574 | "close.Day = close.index.day_name()\n", 1575 | "close.Quarter = close.index.quarter" 1576 | ] 1577 | }, 1578 | { 1579 | "cell_type": "code", 1580 | "execution_count": 43, 1581 | "id": "7b6272b0", 1582 | "metadata": {}, 1583 | "outputs": [ 1584 | { 1585 | "data": { 1586 | "text/html": [ 1587 | "
\n", 1588 | "\n", 1601 | "\n", 1602 | " \n", 1603 | " \n", 1604 | " \n", 1605 | " \n", 1606 | " \n", 1607 | " \n", 1608 | " \n", 1609 | " \n", 1610 | " \n", 1611 | " \n", 1612 | " \n", 1613 | " \n", 1614 | " \n", 1615 | " \n", 1616 | " \n", 1617 | " \n", 1618 | " \n", 1619 | " \n", 1620 | " \n", 1621 | " \n", 1622 | " \n", 1623 | " \n", 1624 | " \n", 1625 | " \n", 1626 | " \n", 1627 | " \n", 1628 | " \n", 1629 | " \n", 1630 | " \n", 1631 | " \n", 1632 | " \n", 1633 | " \n", 1634 | " \n", 1635 | " \n", 1636 | " \n", 1637 | " \n", 1638 | " \n", 1639 | " \n", 1640 | " \n", 1641 | " \n", 1642 | " \n", 1643 | " \n", 1644 | " \n", 1645 | " \n", 1646 | " \n", 1647 | " \n", 1648 | " \n", 1649 | " \n", 1650 | " \n", 1651 | " \n", 1652 | " \n", 1653 | " \n", 1654 | " \n", 1655 | " \n", 1656 | " \n", 1657 | " \n", 1658 | " \n", 1659 | " \n", 1660 | " \n", 1661 | " \n", 1662 | " \n", 1663 | " \n", 1664 | " \n", 1665 | " \n", 1666 | " \n", 1667 | " \n", 1668 | " \n", 1669 | " \n", 1670 | " \n", 1671 | " \n", 1672 | " \n", 1673 | " \n", 1674 | " \n", 1675 | " \n", 1676 | " \n", 1677 | " \n", 1678 | " \n", 1679 | " \n", 1680 | " \n", 1681 | " \n", 1682 | " \n", 1683 | " \n", 1684 | " \n", 1685 | " \n", 1686 | " \n", 1687 | " \n", 1688 | " \n", 1689 | " \n", 1690 | " \n", 1691 | " \n", 1692 | " \n", 1693 | " \n", 1694 | " \n", 1695 | " \n", 1696 | " \n", 1697 | " \n", 1698 | " \n", 1699 | " \n", 1700 | " \n", 1701 | " \n", 1702 | " \n", 1703 | " \n", 1704 | " \n", 1705 | "
AAPLBADISIBMKOMSFTDayQuarter
2009-12-317.52607254.13000132.25130.89999428.50000030.480000Thursday4
2010-01-01NaNNaNNaNNaNNaNNaNFriday1
2010-01-02NaNNaNNaNNaNNaNNaNSaturday1
2010-01-03NaNNaNNaNNaNNaNNaNSunday1
2010-01-047.64321456.18000032.07132.44999728.52000030.950001Monday1
2010-01-057.65642858.02000031.99130.85000628.17499930.959999Tuesday1
2010-01-067.53464359.77999931.82130.00000028.16500130.770000Wednesday1
2010-01-077.52071462.20000131.83129.55000328.09499930.450001Thursday1
\n", 1706 | "
" 1707 | ], 1708 | "text/plain": [ 1709 | " AAPL BA DIS IBM KO MSFT \\\n", 1710 | "2009-12-31 7.526072 54.130001 32.25 130.899994 28.500000 30.480000 \n", 1711 | "2010-01-01 NaN NaN NaN NaN NaN NaN \n", 1712 | "2010-01-02 NaN NaN NaN NaN NaN NaN \n", 1713 | "2010-01-03 NaN NaN NaN NaN NaN NaN \n", 1714 | "2010-01-04 7.643214 56.180000 32.07 132.449997 28.520000 30.950001 \n", 1715 | "2010-01-05 7.656428 58.020000 31.99 130.850006 28.174999 30.959999 \n", 1716 | "2010-01-06 7.534643 59.779999 31.82 130.000000 28.165001 30.770000 \n", 1717 | "2010-01-07 7.520714 62.200001 31.83 129.550003 28.094999 30.450001 \n", 1718 | "\n", 1719 | " Day Quarter \n", 1720 | "2009-12-31 Thursday 4 \n", 1721 | "2010-01-01 Friday 1 \n", 1722 | "2010-01-02 Saturday 1 \n", 1723 | "2010-01-03 Sunday 1 \n", 1724 | "2010-01-04 Monday 1 \n", 1725 | "2010-01-05 Tuesday 1 \n", 1726 | "2010-01-06 Wednesday 1 \n", 1727 | "2010-01-07 Thursday 1 " 1728 | ] 1729 | }, 1730 | "execution_count": 43, 1731 | "metadata": {}, 1732 | "output_type": "execute_result" 1733 | } 1734 | ], 1735 | "source": [ 1736 | "close.head(8)" 1737 | ] 1738 | }, 1739 | { 1740 | "cell_type": "code", 1741 | "execution_count": 44, 1742 | "id": "ed0590a3", 1743 | "metadata": {}, 1744 | "outputs": [ 1745 | { 1746 | "data": { 1747 | "text/html": [ 1748 | "
\n", 1749 | "\n", 1762 | "\n", 1763 | " \n", 1764 | " \n", 1765 | " \n", 1766 | " \n", 1767 | " \n", 1768 | " \n", 1769 | " \n", 1770 | " \n", 1771 | " \n", 1772 | " \n", 1773 | " \n", 1774 | " \n", 1775 | " \n", 1776 | " \n", 1777 | " \n", 1778 | " \n", 1779 | " \n", 1780 | " \n", 1781 | " \n", 1782 | " \n", 1783 | " \n", 1784 | " \n", 1785 | " \n", 1786 | " \n", 1787 | " \n", 1788 | " \n", 1789 | " \n", 1790 | " \n", 1791 | " \n", 1792 | " \n", 1793 | " \n", 1794 | " \n", 1795 | " \n", 1796 | " \n", 1797 | " \n", 1798 | " \n", 1799 | " \n", 1800 | " \n", 1801 | " \n", 1802 | " \n", 1803 | " \n", 1804 | " \n", 1805 | " \n", 1806 | " \n", 1807 | " \n", 1808 | " \n", 1809 | " \n", 1810 | " \n", 1811 | " \n", 1812 | " \n", 1813 | " \n", 1814 | " \n", 1815 | " \n", 1816 | " \n", 1817 | " \n", 1818 | " \n", 1819 | " \n", 1820 | " \n", 1821 | " \n", 1822 | " \n", 1823 | " \n", 1824 | " \n", 1825 | " \n", 1826 | " \n", 1827 | " \n", 1828 | " \n", 1829 | " \n", 1830 | " \n", 1831 | " \n", 1832 | " \n", 1833 | " \n", 1834 | " \n", 1835 | " \n", 1836 | " \n", 1837 | " \n", 1838 | " \n", 1839 | " \n", 1840 | " \n", 1841 | " \n", 1842 | " \n", 1843 | " \n", 1844 | " \n", 1845 | " \n", 1846 | " \n", 1847 | " \n", 1848 | " \n", 1849 | " \n", 1850 | " \n", 1851 | " \n", 1852 | " \n", 1853 | " \n", 1854 | " \n", 1855 | " \n", 1856 | " \n", 1857 | " \n", 1858 | " \n", 1859 | " \n", 1860 | " \n", 1861 | " \n", 1862 | " \n", 1863 | " \n", 1864 | " \n", 1865 | " \n", 1866 | " \n", 1867 | " \n", 1868 | " \n", 1869 | " \n", 1870 | " \n", 1871 | " \n", 1872 | " \n", 1873 | " \n", 1874 | " \n", 1875 | " \n", 1876 | " \n", 1877 | " \n", 1878 | " \n", 1879 | " \n", 1880 | " \n", 1881 | " \n", 1882 | " \n", 1883 | " \n", 1884 | " \n", 1885 | " \n", 1886 | " \n", 1887 | " \n", 1888 | " \n", 1889 | " \n", 1890 | " \n", 1891 | " \n", 1892 | " \n", 1893 | " \n", 1894 | " \n", 1895 | " \n", 1896 | " \n", 1897 | " \n", 1898 | " \n", 1899 | "
AAPLBADISIBMKOMSFTDayQuarter
2009-12-317.52607254.13000132.250000130.89999428.50000030.480000Thursday4
2010-01-017.64321456.18000032.070000132.44999728.52000030.950001Friday1
2010-01-027.64321456.18000032.070000132.44999728.52000030.950001Saturday1
2010-01-037.64321456.18000032.070000132.44999728.52000030.950001Sunday1
2010-01-047.64321456.18000032.070000132.44999728.52000030.950001Monday1
...........................
2019-02-0242.812500397.000000111.800003135.19000249.250000105.739998Saturday1
2019-02-0342.812500397.000000111.800003135.19000249.250000105.739998Sunday1
2019-02-0442.812500397.000000111.800003135.19000249.250000105.739998Monday1
2019-02-0543.544998410.179993112.660004135.55000349.259998107.220001Tuesday1
2019-02-06NaNNaNNaNNaNNaNNaNWednesday1
\n", 1900 | "

3325 rows × 8 columns

\n", 1901 | "
" 1902 | ], 1903 | "text/plain": [ 1904 | " AAPL BA DIS IBM KO \\\n", 1905 | "2009-12-31 7.526072 54.130001 32.250000 130.899994 28.500000 \n", 1906 | "2010-01-01 7.643214 56.180000 32.070000 132.449997 28.520000 \n", 1907 | "2010-01-02 7.643214 56.180000 32.070000 132.449997 28.520000 \n", 1908 | "2010-01-03 7.643214 56.180000 32.070000 132.449997 28.520000 \n", 1909 | "2010-01-04 7.643214 56.180000 32.070000 132.449997 28.520000 \n", 1910 | "... ... ... ... ... ... \n", 1911 | "2019-02-02 42.812500 397.000000 111.800003 135.190002 49.250000 \n", 1912 | "2019-02-03 42.812500 397.000000 111.800003 135.190002 49.250000 \n", 1913 | "2019-02-04 42.812500 397.000000 111.800003 135.190002 49.250000 \n", 1914 | "2019-02-05 43.544998 410.179993 112.660004 135.550003 49.259998 \n", 1915 | "2019-02-06 NaN NaN NaN NaN NaN \n", 1916 | "\n", 1917 | " MSFT Day Quarter \n", 1918 | "2009-12-31 30.480000 Thursday 4 \n", 1919 | "2010-01-01 30.950001 Friday 1 \n", 1920 | "2010-01-02 30.950001 Saturday 1 \n", 1921 | "2010-01-03 30.950001 Sunday 1 \n", 1922 | "2010-01-04 30.950001 Monday 1 \n", 1923 | "... ... ... ... \n", 1924 | "2019-02-02 105.739998 Saturday 1 \n", 1925 | "2019-02-03 105.739998 Sunday 1 \n", 1926 | "2019-02-04 105.739998 Monday 1 \n", 1927 | "2019-02-05 107.220001 Tuesday 1 \n", 1928 | "2019-02-06 NaN Wednesday 1 \n", 1929 | "\n", 1930 | "[3325 rows x 8 columns]" 1931 | ] 1932 | }, 1933 | "execution_count": 44, 1934 | "metadata": {}, 1935 | "output_type": "execute_result" 1936 | } 1937 | ], 1938 | "source": [ 1939 | "# Filling the missing stock prices for days using fillna() and backfill parameter\n", 1940 | "# bfill parameter takes the Monday value and fills it to preceeding missing values on Friday, Saturday and Sunday\n", 1941 | "close.fillna(method = 'bfill')" 1942 | ] 1943 | }, 1944 | { 1945 | "cell_type": "code", 1946 | "execution_count": 45, 1947 | "id": "288c86bc", 1948 | "metadata": {}, 1949 | "outputs": [ 1950 | { 1951 | "data": { 1952 | "text/html": [ 1953 | "
\n", 1954 | "\n", 1967 | "\n", 1968 | " \n", 1969 | " \n", 1970 | " \n", 1971 | " \n", 1972 | " \n", 1973 | " \n", 1974 | " \n", 1975 | " \n", 1976 | " \n", 1977 | " \n", 1978 | " \n", 1979 | " \n", 1980 | " \n", 1981 | " \n", 1982 | " \n", 1983 | " \n", 1984 | " \n", 1985 | " \n", 1986 | " \n", 1987 | " \n", 1988 | " \n", 1989 | " \n", 1990 | " \n", 1991 | " \n", 1992 | " \n", 1993 | " \n", 1994 | " \n", 1995 | " \n", 1996 | " \n", 1997 | " \n", 1998 | " \n", 1999 | " \n", 2000 | " \n", 2001 | " \n", 2002 | " \n", 2003 | " \n", 2004 | " \n", 2005 | " \n", 2006 | " \n", 2007 | " \n", 2008 | " \n", 2009 | " \n", 2010 | " \n", 2011 | " \n", 2012 | " \n", 2013 | " \n", 2014 | " \n", 2015 | " \n", 2016 | " \n", 2017 | " \n", 2018 | " \n", 2019 | " \n", 2020 | " \n", 2021 | " \n", 2022 | " \n", 2023 | " \n", 2024 | " \n", 2025 | " \n", 2026 | " \n", 2027 | " \n", 2028 | " \n", 2029 | " \n", 2030 | " \n", 2031 | " \n", 2032 | " \n", 2033 | " \n", 2034 | " \n", 2035 | " \n", 2036 | " \n", 2037 | " \n", 2038 | " \n", 2039 | " \n", 2040 | " \n", 2041 | " \n", 2042 | " \n", 2043 | " \n", 2044 | " \n", 2045 | " \n", 2046 | " \n", 2047 | " \n", 2048 | " \n", 2049 | " \n", 2050 | " \n", 2051 | " \n", 2052 | " \n", 2053 | " \n", 2054 | " \n", 2055 | " \n", 2056 | " \n", 2057 | " \n", 2058 | " \n", 2059 | " \n", 2060 | " \n", 2061 | " \n", 2062 | " \n", 2063 | " \n", 2064 | " \n", 2065 | " \n", 2066 | " \n", 2067 | " \n", 2068 | " \n", 2069 | " \n", 2070 | " \n", 2071 | " \n", 2072 | " \n", 2073 | " \n", 2074 | " \n", 2075 | " \n", 2076 | " \n", 2077 | " \n", 2078 | " \n", 2079 | " \n", 2080 | " \n", 2081 | " \n", 2082 | " \n", 2083 | " \n", 2084 | " \n", 2085 | " \n", 2086 | " \n", 2087 | " \n", 2088 | " \n", 2089 | " \n", 2090 | " \n", 2091 | " \n", 2092 | " \n", 2093 | " \n", 2094 | " \n", 2095 | " \n", 2096 | " \n", 2097 | " \n", 2098 | " \n", 2099 | " \n", 2100 | " \n", 2101 | " \n", 2102 | " \n", 2103 | " \n", 2104 | "
AAPLBADISIBMKOMSFTDayQuarter
2009-12-317.52607254.13000132.250000130.89999428.50000030.480000Thursday4
2010-01-017.52607254.13000132.250000130.89999428.50000030.480000Friday1
2010-01-027.52607254.13000132.250000130.89999428.50000030.480000Saturday1
2010-01-037.52607254.13000132.250000130.89999428.50000030.480000Sunday1
2010-01-047.64321456.18000032.070000132.44999728.52000030.950001Monday1
...........................
2019-02-0241.630001387.429993111.300003134.10000648.700001102.779999Saturday1
2019-02-0341.630001387.429993111.300003134.10000648.700001102.779999Sunday1
2019-02-0442.812500397.000000111.800003135.19000249.250000105.739998Monday1
2019-02-0543.544998410.179993112.660004135.55000349.259998107.220001Tuesday1
2019-02-0643.544998410.179993112.660004135.55000349.259998107.220001Wednesday1
\n", 2105 | "

3325 rows × 8 columns

\n", 2106 | "
" 2107 | ], 2108 | "text/plain": [ 2109 | " AAPL BA DIS IBM KO \\\n", 2110 | "2009-12-31 7.526072 54.130001 32.250000 130.899994 28.500000 \n", 2111 | "2010-01-01 7.526072 54.130001 32.250000 130.899994 28.500000 \n", 2112 | "2010-01-02 7.526072 54.130001 32.250000 130.899994 28.500000 \n", 2113 | "2010-01-03 7.526072 54.130001 32.250000 130.899994 28.500000 \n", 2114 | "2010-01-04 7.643214 56.180000 32.070000 132.449997 28.520000 \n", 2115 | "... ... ... ... ... ... \n", 2116 | "2019-02-02 41.630001 387.429993 111.300003 134.100006 48.700001 \n", 2117 | "2019-02-03 41.630001 387.429993 111.300003 134.100006 48.700001 \n", 2118 | "2019-02-04 42.812500 397.000000 111.800003 135.190002 49.250000 \n", 2119 | "2019-02-05 43.544998 410.179993 112.660004 135.550003 49.259998 \n", 2120 | "2019-02-06 43.544998 410.179993 112.660004 135.550003 49.259998 \n", 2121 | "\n", 2122 | " MSFT Day Quarter \n", 2123 | "2009-12-31 30.480000 Thursday 4 \n", 2124 | "2010-01-01 30.480000 Friday 1 \n", 2125 | "2010-01-02 30.480000 Saturday 1 \n", 2126 | "2010-01-03 30.480000 Sunday 1 \n", 2127 | "2010-01-04 30.950001 Monday 1 \n", 2128 | "... ... ... ... \n", 2129 | "2019-02-02 102.779999 Saturday 1 \n", 2130 | "2019-02-03 102.779999 Sunday 1 \n", 2131 | "2019-02-04 105.739998 Monday 1 \n", 2132 | "2019-02-05 107.220001 Tuesday 1 \n", 2133 | "2019-02-06 107.220001 Wednesday 1 \n", 2134 | "\n", 2135 | "[3325 rows x 8 columns]" 2136 | ] 2137 | }, 2138 | "execution_count": 45, 2139 | "metadata": {}, 2140 | "output_type": "execute_result" 2141 | } 2142 | ], 2143 | "source": [ 2144 | "# Forward fill method conversely takes the last available values and fills it forward to missing values until next value\n", 2145 | "close.fillna(method = 'ffill')" 2146 | ] 2147 | }, 2148 | { 2149 | "cell_type": "code", 2150 | "execution_count": 46, 2151 | "id": "c79bc100", 2152 | "metadata": {}, 2153 | "outputs": [], 2154 | "source": [ 2155 | "# Incase of stock prices forward fill method is used ffill" 2156 | ] 2157 | }, 2158 | { 2159 | "cell_type": "code", 2160 | "execution_count": 47, 2161 | "id": "5d8aa920", 2162 | "metadata": {}, 2163 | "outputs": [], 2164 | "source": [ 2165 | "# Overwriting the close dataframe using inplace parameter\n", 2166 | "close.fillna(method = 'ffill', inplace = True)" 2167 | ] 2168 | }, 2169 | { 2170 | "cell_type": "code", 2171 | "execution_count": 48, 2172 | "id": "877a8942", 2173 | "metadata": {}, 2174 | "outputs": [ 2175 | { 2176 | "data": { 2177 | "text/html": [ 2178 | "
\n", 2179 | "\n", 2192 | "\n", 2193 | " \n", 2194 | " \n", 2195 | " \n", 2196 | " \n", 2197 | " \n", 2198 | " \n", 2199 | " \n", 2200 | " \n", 2201 | " \n", 2202 | " \n", 2203 | " \n", 2204 | " \n", 2205 | " \n", 2206 | " \n", 2207 | " \n", 2208 | " \n", 2209 | " \n", 2210 | " \n", 2211 | " \n", 2212 | " \n", 2213 | " \n", 2214 | " \n", 2215 | " \n", 2216 | " \n", 2217 | " \n", 2218 | " \n", 2219 | " \n", 2220 | " \n", 2221 | " \n", 2222 | " \n", 2223 | " \n", 2224 | " \n", 2225 | " \n", 2226 | " \n", 2227 | " \n", 2228 | " \n", 2229 | " \n", 2230 | " \n", 2231 | " \n", 2232 | " \n", 2233 | " \n", 2234 | " \n", 2235 | " \n", 2236 | " \n", 2237 | " \n", 2238 | " \n", 2239 | " \n", 2240 | " \n", 2241 | " \n", 2242 | " \n", 2243 | " \n", 2244 | " \n", 2245 | " \n", 2246 | " \n", 2247 | " \n", 2248 | " \n", 2249 | " \n", 2250 | " \n", 2251 | " \n", 2252 | " \n", 2253 | " \n", 2254 | " \n", 2255 | " \n", 2256 | " \n", 2257 | " \n", 2258 | " \n", 2259 | " \n", 2260 | " \n", 2261 | " \n", 2262 | " \n", 2263 | " \n", 2264 | " \n", 2265 | " \n", 2266 | " \n", 2267 | " \n", 2268 | " \n", 2269 | " \n", 2270 | " \n", 2271 | " \n", 2272 | " \n", 2273 | " \n", 2274 | " \n", 2275 | " \n", 2276 | " \n", 2277 | " \n", 2278 | " \n", 2279 | " \n", 2280 | " \n", 2281 | " \n", 2282 | " \n", 2283 | " \n", 2284 | " \n", 2285 | " \n", 2286 | " \n", 2287 | " \n", 2288 | " \n", 2289 | " \n", 2290 | " \n", 2291 | " \n", 2292 | " \n", 2293 | " \n", 2294 | " \n", 2295 | " \n", 2296 | " \n", 2297 | " \n", 2298 | " \n", 2299 | " \n", 2300 | " \n", 2301 | " \n", 2302 | " \n", 2303 | " \n", 2304 | " \n", 2305 | " \n", 2306 | " \n", 2307 | " \n", 2308 | " \n", 2309 | " \n", 2310 | " \n", 2311 | " \n", 2312 | " \n", 2313 | " \n", 2314 | " \n", 2315 | " \n", 2316 | " \n", 2317 | " \n", 2318 | "
AAPLBADISIBMKOMSFTDayQuarter
2009-12-317.52607254.13000132.250000130.89999428.50000030.480000Thursday4
2010-01-017.52607254.13000132.250000130.89999428.50000030.480000Friday1
2010-01-027.52607254.13000132.250000130.89999428.50000030.480000Saturday1
2010-01-037.52607254.13000132.250000130.89999428.50000030.480000Sunday1
2010-01-047.64321456.18000032.070000132.44999728.52000030.950001Monday1
2010-01-057.65642858.02000031.990000130.85000628.17499930.959999Tuesday1
2010-01-067.53464359.77999931.820000130.00000028.16500130.770000Wednesday1
2010-01-077.52071462.20000131.830000129.55000328.09499930.450001Thursday1
2010-01-087.57071461.59999831.879999130.85000627.57500130.660000Friday1
2010-01-097.57071461.59999831.879999130.85000627.57500130.660000Saturday1
\n", 2319 | "
" 2320 | ], 2321 | "text/plain": [ 2322 | " AAPL BA DIS IBM KO MSFT \\\n", 2323 | "2009-12-31 7.526072 54.130001 32.250000 130.899994 28.500000 30.480000 \n", 2324 | "2010-01-01 7.526072 54.130001 32.250000 130.899994 28.500000 30.480000 \n", 2325 | "2010-01-02 7.526072 54.130001 32.250000 130.899994 28.500000 30.480000 \n", 2326 | "2010-01-03 7.526072 54.130001 32.250000 130.899994 28.500000 30.480000 \n", 2327 | "2010-01-04 7.643214 56.180000 32.070000 132.449997 28.520000 30.950001 \n", 2328 | "2010-01-05 7.656428 58.020000 31.990000 130.850006 28.174999 30.959999 \n", 2329 | "2010-01-06 7.534643 59.779999 31.820000 130.000000 28.165001 30.770000 \n", 2330 | "2010-01-07 7.520714 62.200001 31.830000 129.550003 28.094999 30.450001 \n", 2331 | "2010-01-08 7.570714 61.599998 31.879999 130.850006 27.575001 30.660000 \n", 2332 | "2010-01-09 7.570714 61.599998 31.879999 130.850006 27.575001 30.660000 \n", 2333 | "\n", 2334 | " Day Quarter \n", 2335 | "2009-12-31 Thursday 4 \n", 2336 | "2010-01-01 Friday 1 \n", 2337 | "2010-01-02 Saturday 1 \n", 2338 | "2010-01-03 Sunday 1 \n", 2339 | "2010-01-04 Monday 1 \n", 2340 | "2010-01-05 Tuesday 1 \n", 2341 | "2010-01-06 Wednesday 1 \n", 2342 | "2010-01-07 Thursday 1 \n", 2343 | "2010-01-08 Friday 1 \n", 2344 | "2010-01-09 Saturday 1 " 2345 | ] 2346 | }, 2347 | "execution_count": 48, 2348 | "metadata": {}, 2349 | "output_type": "execute_result" 2350 | } 2351 | ], 2352 | "source": [ 2353 | "close.head(10)" 2354 | ] 2355 | }, 2356 | { 2357 | "cell_type": "code", 2358 | "execution_count": 49, 2359 | "id": "915a063b", 2360 | "metadata": {}, 2361 | "outputs": [], 2362 | "source": [ 2363 | "# Importing temperature dataframe to manipulate\n", 2364 | "temp = pd.read_csv('temp.csv', parse_dates = ['datetime'], index_col = 'datetime')" 2365 | ] 2366 | }, 2367 | { 2368 | "cell_type": "code", 2369 | "execution_count": 50, 2370 | "id": "069f34b7", 2371 | "metadata": {}, 2372 | "outputs": [ 2373 | { 2374 | "data": { 2375 | "text/html": [ 2376 | "
\n", 2377 | "\n", 2390 | "\n", 2391 | " \n", 2392 | " \n", 2393 | " \n", 2394 | " \n", 2395 | " \n", 2396 | " \n", 2397 | " \n", 2398 | " \n", 2399 | " \n", 2400 | " \n", 2401 | " \n", 2402 | " \n", 2403 | " \n", 2404 | " \n", 2405 | " \n", 2406 | " \n", 2407 | " \n", 2408 | " \n", 2409 | " \n", 2410 | " \n", 2411 | " \n", 2412 | " \n", 2413 | " \n", 2414 | " \n", 2415 | " \n", 2416 | " \n", 2417 | " \n", 2418 | " \n", 2419 | " \n", 2420 | " \n", 2421 | " \n", 2422 | " \n", 2423 | " \n", 2424 | " \n", 2425 | " \n", 2426 | " \n", 2427 | " \n", 2428 | " \n", 2429 | " \n", 2430 | " \n", 2431 | " \n", 2432 | " \n", 2433 | " \n", 2434 | " \n", 2435 | " \n", 2436 | " \n", 2437 | " \n", 2438 | " \n", 2439 | " \n", 2440 | " \n", 2441 | " \n", 2442 | " \n", 2443 | " \n", 2444 | " \n", 2445 | " \n", 2446 | " \n", 2447 | " \n", 2448 | " \n", 2449 | " \n", 2450 | " \n", 2451 | " \n", 2452 | " \n", 2453 | " \n", 2454 | " \n", 2455 | "
LANY
datetime
2013-01-01 00:00:0011.7-1.1
2013-01-01 01:00:0010.7-1.7
2013-01-01 02:00:009.9-2.0
2013-01-01 03:00:009.3-2.1
2013-01-01 04:00:008.8-2.3
2013-01-01 05:00:008.7-2.5
2013-01-01 06:00:006.9-3.2
2013-01-01 07:00:007.8-3.4
2013-01-01 08:00:006.7-3.0
2013-01-01 09:00:006.6-1.8
\n", 2456 | "
" 2457 | ], 2458 | "text/plain": [ 2459 | " LA NY\n", 2460 | "datetime \n", 2461 | "2013-01-01 00:00:00 11.7 -1.1\n", 2462 | "2013-01-01 01:00:00 10.7 -1.7\n", 2463 | "2013-01-01 02:00:00 9.9 -2.0\n", 2464 | "2013-01-01 03:00:00 9.3 -2.1\n", 2465 | "2013-01-01 04:00:00 8.8 -2.3\n", 2466 | "2013-01-01 05:00:00 8.7 -2.5\n", 2467 | "2013-01-01 06:00:00 6.9 -3.2\n", 2468 | "2013-01-01 07:00:00 7.8 -3.4\n", 2469 | "2013-01-01 08:00:00 6.7 -3.0\n", 2470 | "2013-01-01 09:00:00 6.6 -1.8" 2471 | ] 2472 | }, 2473 | "execution_count": 50, 2474 | "metadata": {}, 2475 | "output_type": "execute_result" 2476 | } 2477 | ], 2478 | "source": [ 2479 | "temp.head(10)" 2480 | ] 2481 | }, 2482 | { 2483 | "cell_type": "code", 2484 | "execution_count": 51, 2485 | "id": "48c69d94", 2486 | "metadata": {}, 2487 | "outputs": [ 2488 | { 2489 | "data": { 2490 | "text/html": [ 2491 | "
\n", 2492 | "\n", 2505 | "\n", 2506 | " \n", 2507 | " \n", 2508 | " \n", 2509 | " \n", 2510 | " \n", 2511 | " \n", 2512 | " \n", 2513 | " \n", 2514 | " \n", 2515 | " \n", 2516 | " \n", 2517 | " \n", 2518 | " \n", 2519 | " \n", 2520 | " \n", 2521 | " \n", 2522 | " \n", 2523 | " \n", 2524 | " \n", 2525 | " \n", 2526 | " \n", 2527 | " \n", 2528 | " \n", 2529 | " \n", 2530 | " \n", 2531 | " \n", 2532 | " \n", 2533 | " \n", 2534 | " \n", 2535 | " \n", 2536 | " \n", 2537 | " \n", 2538 | " \n", 2539 | " \n", 2540 | " \n", 2541 | " \n", 2542 | " \n", 2543 | " \n", 2544 | " \n", 2545 | " \n", 2546 | " \n", 2547 | " \n", 2548 | " \n", 2549 | " \n", 2550 | " \n", 2551 | " \n", 2552 | " \n", 2553 | " \n", 2554 | " \n", 2555 | " \n", 2556 | " \n", 2557 | " \n", 2558 | " \n", 2559 | " \n", 2560 | " \n", 2561 | " \n", 2562 | " \n", 2563 | " \n", 2564 | " \n", 2565 | " \n", 2566 | " \n", 2567 | " \n", 2568 | " \n", 2569 | " \n", 2570 | "
LANY
datetime
2013-01-01 00:00:0011.7-1.1
2013-01-01 00:30:00NaNNaN
2013-01-01 01:00:0010.7-1.7
2013-01-01 01:30:00NaNNaN
2013-01-01 02:00:009.9-2.0
2013-01-01 02:30:00NaNNaN
2013-01-01 03:00:009.3-2.1
2013-01-01 03:30:00NaNNaN
2013-01-01 04:00:008.8-2.3
2013-01-01 04:30:00NaNNaN
\n", 2571 | "
" 2572 | ], 2573 | "text/plain": [ 2574 | " LA NY\n", 2575 | "datetime \n", 2576 | "2013-01-01 00:00:00 11.7 -1.1\n", 2577 | "2013-01-01 00:30:00 NaN NaN\n", 2578 | "2013-01-01 01:00:00 10.7 -1.7\n", 2579 | "2013-01-01 01:30:00 NaN NaN\n", 2580 | "2013-01-01 02:00:00 9.9 -2.0\n", 2581 | "2013-01-01 02:30:00 NaN NaN\n", 2582 | "2013-01-01 03:00:00 9.3 -2.1\n", 2583 | "2013-01-01 03:30:00 NaN NaN\n", 2584 | "2013-01-01 04:00:00 8.8 -2.3\n", 2585 | "2013-01-01 04:30:00 NaN NaN" 2586 | ] 2587 | }, 2588 | "execution_count": 51, 2589 | "metadata": {}, 2590 | "output_type": "execute_result" 2591 | } 2592 | ], 2593 | "source": [ 2594 | "# Resampling the data from hourly to 30 min frequency creates missing values, which we want to fill by mean of two \n", 2595 | "# adjacent values\n", 2596 | "temp = temp.resample('30 Min').mean()\n", 2597 | "temp.head(10)" 2598 | ] 2599 | }, 2600 | { 2601 | "cell_type": "code", 2602 | "execution_count": 53, 2603 | "id": "68877e6c", 2604 | "metadata": {}, 2605 | "outputs": [ 2606 | { 2607 | "data": { 2608 | "text/html": [ 2609 | "
\n", 2610 | "\n", 2623 | "\n", 2624 | " \n", 2625 | " \n", 2626 | " \n", 2627 | " \n", 2628 | " \n", 2629 | " \n", 2630 | " \n", 2631 | " \n", 2632 | " \n", 2633 | " \n", 2634 | " \n", 2635 | " \n", 2636 | " \n", 2637 | " \n", 2638 | " \n", 2639 | " \n", 2640 | " \n", 2641 | " \n", 2642 | " \n", 2643 | " \n", 2644 | " \n", 2645 | " \n", 2646 | " \n", 2647 | " \n", 2648 | " \n", 2649 | " \n", 2650 | " \n", 2651 | " \n", 2652 | " \n", 2653 | " \n", 2654 | " \n", 2655 | " \n", 2656 | " \n", 2657 | " \n", 2658 | " \n", 2659 | " \n", 2660 | " \n", 2661 | " \n", 2662 | " \n", 2663 | " \n", 2664 | " \n", 2665 | " \n", 2666 | " \n", 2667 | " \n", 2668 | " \n", 2669 | " \n", 2670 | " \n", 2671 | " \n", 2672 | " \n", 2673 | " \n", 2674 | " \n", 2675 | " \n", 2676 | " \n", 2677 | " \n", 2678 | " \n", 2679 | " \n", 2680 | " \n", 2681 | " \n", 2682 | " \n", 2683 | " \n", 2684 | " \n", 2685 | " \n", 2686 | " \n", 2687 | " \n", 2688 | " \n", 2689 | " \n", 2690 | " \n", 2691 | " \n", 2692 | " \n", 2693 | "
LANY
datetime
2013-01-01 00:00:0011.70-1.10
2013-01-01 00:30:0011.20-1.40
2013-01-01 01:00:0010.70-1.70
2013-01-01 01:30:0010.30-1.85
2013-01-01 02:00:009.90-2.00
.........
2016-12-31 21:00:0012.805.80
2016-12-31 21:30:0012.555.75
2016-12-31 22:00:0012.305.70
2016-12-31 22:30:0012.105.60
2016-12-31 23:00:0011.905.50
\n", 2694 | "

70127 rows × 2 columns

\n", 2695 | "
" 2696 | ], 2697 | "text/plain": [ 2698 | " LA NY\n", 2699 | "datetime \n", 2700 | "2013-01-01 00:00:00 11.70 -1.10\n", 2701 | "2013-01-01 00:30:00 11.20 -1.40\n", 2702 | "2013-01-01 01:00:00 10.70 -1.70\n", 2703 | "2013-01-01 01:30:00 10.30 -1.85\n", 2704 | "2013-01-01 02:00:00 9.90 -2.00\n", 2705 | "... ... ...\n", 2706 | "2016-12-31 21:00:00 12.80 5.80\n", 2707 | "2016-12-31 21:30:00 12.55 5.75\n", 2708 | "2016-12-31 22:00:00 12.30 5.70\n", 2709 | "2016-12-31 22:30:00 12.10 5.60\n", 2710 | "2016-12-31 23:00:00 11.90 5.50\n", 2711 | "\n", 2712 | "[70127 rows x 2 columns]" 2713 | ] 2714 | }, 2715 | "execution_count": 53, 2716 | "metadata": {}, 2717 | "output_type": "execute_result" 2718 | } 2719 | ], 2720 | "source": [ 2721 | "# Using before and after values to interpolate\n", 2722 | "temp.interpolate()" 2723 | ] 2724 | }, 2725 | { 2726 | "cell_type": "markdown", 2727 | "id": "e5644432", 2728 | "metadata": {}, 2729 | "source": [ 2730 | "# Timezones and Converting\n", 2731 | "Generally UTC timezone is taken as standard to avoid confusion" 2732 | ] 2733 | }, 2734 | { 2735 | "cell_type": "code", 2736 | "execution_count": 54, 2737 | "id": "94f6e348", 2738 | "metadata": {}, 2739 | "outputs": [], 2740 | "source": [ 2741 | "import pandas as pd" 2742 | ] 2743 | }, 2744 | { 2745 | "cell_type": "code", 2746 | "execution_count": 55, 2747 | "id": "a0b3e630", 2748 | "metadata": {}, 2749 | "outputs": [], 2750 | "source": [ 2751 | "# Importing data from csv file and saving it to a new dataframe\n", 2752 | "ge = pd.read_csv('GE_prices.csv', parse_dates = ['date'], index_col = 'date')" 2753 | ] 2754 | }, 2755 | { 2756 | "cell_type": "code", 2757 | "execution_count": 56, 2758 | "id": "e1c2e7be", 2759 | "metadata": {}, 2760 | "outputs": [ 2761 | { 2762 | "data": { 2763 | "text/html": [ 2764 | "
\n", 2765 | "\n", 2778 | "\n", 2779 | " \n", 2780 | " \n", 2781 | " \n", 2782 | " \n", 2783 | " \n", 2784 | " \n", 2785 | " \n", 2786 | " \n", 2787 | " \n", 2788 | " \n", 2789 | " \n", 2790 | " \n", 2791 | " \n", 2792 | " \n", 2793 | " \n", 2794 | " \n", 2795 | " \n", 2796 | " \n", 2797 | " \n", 2798 | " \n", 2799 | " \n", 2800 | " \n", 2801 | " \n", 2802 | " \n", 2803 | " \n", 2804 | " \n", 2805 | " \n", 2806 | " \n", 2807 | " \n", 2808 | " \n", 2809 | " \n", 2810 | " \n", 2811 | " \n", 2812 | " \n", 2813 | " \n", 2814 | " \n", 2815 | " \n", 2816 | " \n", 2817 | " \n", 2818 | " \n", 2819 | " \n", 2820 | " \n", 2821 | " \n", 2822 | " \n", 2823 | " \n", 2824 | " \n", 2825 | " \n", 2826 | " \n", 2827 | " \n", 2828 | " \n", 2829 | " \n", 2830 | " \n", 2831 | " \n", 2832 | " \n", 2833 | " \n", 2834 | " \n", 2835 | " \n", 2836 | " \n", 2837 | " \n", 2838 | " \n", 2839 | "
1. open2. high3. low4. close5. volume
date
2019-07-29 10:00:0010.500010.580010.430010.44004840329.0
2019-07-29 10:30:0010.440410.484710.399710.41043860280.0
2019-07-29 11:00:0010.420010.500010.410010.50001912153.0
2019-07-29 11:30:0010.493110.530010.480010.48501916453.0
2019-07-29 12:00:0010.490010.500010.440010.45002467638.0
\n", 2840 | "
" 2841 | ], 2842 | "text/plain": [ 2843 | " 1. open 2. high 3. low 4. close 5. volume\n", 2844 | "date \n", 2845 | "2019-07-29 10:00:00 10.5000 10.5800 10.4300 10.4400 4840329.0\n", 2846 | "2019-07-29 10:30:00 10.4404 10.4847 10.3997 10.4104 3860280.0\n", 2847 | "2019-07-29 11:00:00 10.4200 10.5000 10.4100 10.5000 1912153.0\n", 2848 | "2019-07-29 11:30:00 10.4931 10.5300 10.4800 10.4850 1916453.0\n", 2849 | "2019-07-29 12:00:00 10.4900 10.5000 10.4400 10.4500 2467638.0" 2850 | ] 2851 | }, 2852 | "execution_count": 56, 2853 | "metadata": {}, 2854 | "output_type": "execute_result" 2855 | } 2856 | ], 2857 | "source": [ 2858 | "ge.head()" 2859 | ] 2860 | }, 2861 | { 2862 | "cell_type": "code", 2863 | "execution_count": 57, 2864 | "id": "3f1dd1ab", 2865 | "metadata": {}, 2866 | "outputs": [ 2867 | { 2868 | "name": "stdout", 2869 | "output_type": "stream", 2870 | "text": [ 2871 | "\n", 2872 | "DatetimeIndex: 389 entries, 2019-07-29 10:00:00 to 2019-09-09 16:00:00\n", 2873 | "Data columns (total 5 columns):\n", 2874 | " # Column Non-Null Count Dtype \n", 2875 | "--- ------ -------------- ----- \n", 2876 | " 0 1. open 389 non-null float64\n", 2877 | " 1 2. high 389 non-null float64\n", 2878 | " 2 3. low 389 non-null float64\n", 2879 | " 3 4. close 389 non-null float64\n", 2880 | " 4 5. volume 389 non-null float64\n", 2881 | "dtypes: float64(5)\n", 2882 | "memory usage: 18.2 KB\n" 2883 | ] 2884 | } 2885 | ], 2886 | "source": [ 2887 | "ge.info()" 2888 | ] 2889 | }, 2890 | { 2891 | "cell_type": "code", 2892 | "execution_count": 58, 2893 | "id": "1b48170b", 2894 | "metadata": {}, 2895 | "outputs": [], 2896 | "source": [ 2897 | "# These timestamps are based on Eastern Time which is 4 hours behind UTC" 2898 | ] 2899 | }, 2900 | { 2901 | "cell_type": "code", 2902 | "execution_count": 59, 2903 | "id": "5d85c24e", 2904 | "metadata": {}, 2905 | "outputs": [ 2906 | { 2907 | "data": { 2908 | "text/plain": [ 2909 | "DatetimeIndex(['2019-07-29 10:00:00', '2019-07-29 10:30:00',\n", 2910 | " '2019-07-29 11:00:00', '2019-07-29 11:30:00',\n", 2911 | " '2019-07-29 12:00:00', '2019-07-29 12:30:00',\n", 2912 | " '2019-07-29 13:00:00', '2019-07-29 13:30:00',\n", 2913 | " '2019-07-29 14:00:00', '2019-07-29 14:30:00',\n", 2914 | " ...\n", 2915 | " '2019-09-09 11:30:00', '2019-09-09 12:00:00',\n", 2916 | " '2019-09-09 12:30:00', '2019-09-09 13:00:00',\n", 2917 | " '2019-09-09 13:30:00', '2019-09-09 14:00:00',\n", 2918 | " '2019-09-09 14:30:00', '2019-09-09 15:00:00',\n", 2919 | " '2019-09-09 15:30:00', '2019-09-09 16:00:00'],\n", 2920 | " dtype='datetime64[ns]', name='date', length=389, freq=None)" 2921 | ] 2922 | }, 2923 | "execution_count": 59, 2924 | "metadata": {}, 2925 | "output_type": "execute_result" 2926 | } 2927 | ], 2928 | "source": [ 2929 | "ge.index" 2930 | ] 2931 | }, 2932 | { 2933 | "cell_type": "code", 2934 | "execution_count": 60, 2935 | "id": "3a0154e7", 2936 | "metadata": {}, 2937 | "outputs": [ 2938 | { 2939 | "name": "stdout", 2940 | "output_type": "stream", 2941 | "text": [ 2942 | "None\n" 2943 | ] 2944 | } 2945 | ], 2946 | "source": [ 2947 | "# Getting information about timezones\n", 2948 | "print(ge.index.tz)" 2949 | ] 2950 | }, 2951 | { 2952 | "cell_type": "code", 2953 | "execution_count": 61, 2954 | "id": "694373fb", 2955 | "metadata": {}, 2956 | "outputs": [ 2957 | { 2958 | "data": { 2959 | "text/html": [ 2960 | "
\n", 2961 | "\n", 2974 | "\n", 2975 | " \n", 2976 | " \n", 2977 | " \n", 2978 | " \n", 2979 | " \n", 2980 | " \n", 2981 | " \n", 2982 | " \n", 2983 | " \n", 2984 | " \n", 2985 | " \n", 2986 | " \n", 2987 | " \n", 2988 | " \n", 2989 | " \n", 2990 | " \n", 2991 | " \n", 2992 | " \n", 2993 | " \n", 2994 | " \n", 2995 | " \n", 2996 | " \n", 2997 | " \n", 2998 | " \n", 2999 | " \n", 3000 | " \n", 3001 | " \n", 3002 | " \n", 3003 | " \n", 3004 | " \n", 3005 | " \n", 3006 | " \n", 3007 | " \n", 3008 | " \n", 3009 | " \n", 3010 | " \n", 3011 | " \n", 3012 | " \n", 3013 | " \n", 3014 | " \n", 3015 | " \n", 3016 | " \n", 3017 | " \n", 3018 | " \n", 3019 | " \n", 3020 | " \n", 3021 | " \n", 3022 | " \n", 3023 | " \n", 3024 | " \n", 3025 | " \n", 3026 | " \n", 3027 | " \n", 3028 | " \n", 3029 | " \n", 3030 | " \n", 3031 | " \n", 3032 | " \n", 3033 | " \n", 3034 | " \n", 3035 | " \n", 3036 | " \n", 3037 | " \n", 3038 | " \n", 3039 | " \n", 3040 | " \n", 3041 | " \n", 3042 | " \n", 3043 | " \n", 3044 | " \n", 3045 | " \n", 3046 | " \n", 3047 | " \n", 3048 | " \n", 3049 | " \n", 3050 | " \n", 3051 | " \n", 3052 | " \n", 3053 | " \n", 3054 | " \n", 3055 | " \n", 3056 | " \n", 3057 | " \n", 3058 | " \n", 3059 | " \n", 3060 | " \n", 3061 | " \n", 3062 | " \n", 3063 | " \n", 3064 | " \n", 3065 | " \n", 3066 | " \n", 3067 | " \n", 3068 | " \n", 3069 | " \n", 3070 | " \n", 3071 | " \n", 3072 | " \n", 3073 | " \n", 3074 | " \n", 3075 | " \n", 3076 | " \n", 3077 | " \n", 3078 | " \n", 3079 | " \n", 3080 | " \n", 3081 | " \n", 3082 | " \n", 3083 | "
1. open2. high3. low4. close5. volume
date
2019-07-29 10:00:00+00:0010.500010.580010.430010.44004840329.0
2019-07-29 10:30:00+00:0010.440410.484710.399710.41043860280.0
2019-07-29 11:00:00+00:0010.420010.500010.410010.50001912153.0
2019-07-29 11:30:00+00:0010.493110.530010.480010.48501916453.0
2019-07-29 12:00:00+00:0010.490010.500010.440010.45002467638.0
..................
2019-09-09 14:00:00+00:008.99008.99508.97008.98001740722.0
2019-09-09 14:30:00+00:008.97359.00008.97008.98351412823.0
2019-09-09 15:00:00+00:008.99009.01008.93508.95004177838.0
2019-09-09 15:30:00+00:008.94538.97008.93008.96032254279.0
2019-09-09 16:00:00+00:008.96008.99008.92008.97006887530.0
\n", 3084 | "

389 rows × 5 columns

\n", 3085 | "
" 3086 | ], 3087 | "text/plain": [ 3088 | " 1. open 2. high 3. low 4. close 5. volume\n", 3089 | "date \n", 3090 | "2019-07-29 10:00:00+00:00 10.5000 10.5800 10.4300 10.4400 4840329.0\n", 3091 | "2019-07-29 10:30:00+00:00 10.4404 10.4847 10.3997 10.4104 3860280.0\n", 3092 | "2019-07-29 11:00:00+00:00 10.4200 10.5000 10.4100 10.5000 1912153.0\n", 3093 | "2019-07-29 11:30:00+00:00 10.4931 10.5300 10.4800 10.4850 1916453.0\n", 3094 | "2019-07-29 12:00:00+00:00 10.4900 10.5000 10.4400 10.4500 2467638.0\n", 3095 | "... ... ... ... ... ...\n", 3096 | "2019-09-09 14:00:00+00:00 8.9900 8.9950 8.9700 8.9800 1740722.0\n", 3097 | "2019-09-09 14:30:00+00:00 8.9735 9.0000 8.9700 8.9835 1412823.0\n", 3098 | "2019-09-09 15:00:00+00:00 8.9900 9.0100 8.9350 8.9500 4177838.0\n", 3099 | "2019-09-09 15:30:00+00:00 8.9453 8.9700 8.9300 8.9603 2254279.0\n", 3100 | "2019-09-09 16:00:00+00:00 8.9600 8.9900 8.9200 8.9700 6887530.0\n", 3101 | "\n", 3102 | "[389 rows x 5 columns]" 3103 | ] 3104 | }, 3105 | "execution_count": 61, 3106 | "metadata": {}, 3107 | "output_type": "execute_result" 3108 | } 3109 | ], 3110 | "source": [ 3111 | "# Localising our datetime index to UTC\n", 3112 | "ge.tz_localize('UTC')" 3113 | ] 3114 | }, 3115 | { 3116 | "cell_type": "code", 3117 | "execution_count": 65, 3118 | "id": "fd102fc0", 3119 | "metadata": {}, 3120 | "outputs": [], 3121 | "source": [ 3122 | "# Localising our datetime index to Eastern Time\n", 3123 | "ge = ge.tz_localize('America/New_York')" 3124 | ] 3125 | }, 3126 | { 3127 | "cell_type": "code", 3128 | "execution_count": 66, 3129 | "id": "49ee2288", 3130 | "metadata": {}, 3131 | "outputs": [ 3132 | { 3133 | "data": { 3134 | "text/html": [ 3135 | "
\n", 3136 | "\n", 3149 | "\n", 3150 | " \n", 3151 | " \n", 3152 | " \n", 3153 | " \n", 3154 | " \n", 3155 | " \n", 3156 | " \n", 3157 | " \n", 3158 | " \n", 3159 | " \n", 3160 | " \n", 3161 | " \n", 3162 | " \n", 3163 | " \n", 3164 | " \n", 3165 | " \n", 3166 | " \n", 3167 | " \n", 3168 | " \n", 3169 | " \n", 3170 | " \n", 3171 | " \n", 3172 | " \n", 3173 | " \n", 3174 | " \n", 3175 | " \n", 3176 | " \n", 3177 | " \n", 3178 | " \n", 3179 | " \n", 3180 | " \n", 3181 | " \n", 3182 | " \n", 3183 | " \n", 3184 | " \n", 3185 | " \n", 3186 | " \n", 3187 | " \n", 3188 | " \n", 3189 | " \n", 3190 | " \n", 3191 | " \n", 3192 | " \n", 3193 | " \n", 3194 | " \n", 3195 | " \n", 3196 | " \n", 3197 | " \n", 3198 | " \n", 3199 | " \n", 3200 | " \n", 3201 | " \n", 3202 | " \n", 3203 | " \n", 3204 | " \n", 3205 | " \n", 3206 | " \n", 3207 | " \n", 3208 | " \n", 3209 | " \n", 3210 | "
1. open2. high3. low4. close5. volume
date
2019-07-29 10:00:00-04:0010.500010.580010.430010.44004840329.0
2019-07-29 10:30:00-04:0010.440410.484710.399710.41043860280.0
2019-07-29 11:00:00-04:0010.420010.500010.410010.50001912153.0
2019-07-29 11:30:00-04:0010.493110.530010.480010.48501916453.0
2019-07-29 12:00:00-04:0010.490010.500010.440010.45002467638.0
\n", 3211 | "
" 3212 | ], 3213 | "text/plain": [ 3214 | " 1. open 2. high 3. low 4. close 5. volume\n", 3215 | "date \n", 3216 | "2019-07-29 10:00:00-04:00 10.5000 10.5800 10.4300 10.4400 4840329.0\n", 3217 | "2019-07-29 10:30:00-04:00 10.4404 10.4847 10.3997 10.4104 3860280.0\n", 3218 | "2019-07-29 11:00:00-04:00 10.4200 10.5000 10.4100 10.5000 1912153.0\n", 3219 | "2019-07-29 11:30:00-04:00 10.4931 10.5300 10.4800 10.4850 1916453.0\n", 3220 | "2019-07-29 12:00:00-04:00 10.4900 10.5000 10.4400 10.4500 2467638.0" 3221 | ] 3222 | }, 3223 | "execution_count": 66, 3224 | "metadata": {}, 3225 | "output_type": "execute_result" 3226 | } 3227 | ], 3228 | "source": [ 3229 | "ge.head()" 3230 | ] 3231 | }, 3232 | { 3233 | "cell_type": "code", 3234 | "execution_count": 67, 3235 | "id": "cf9df850", 3236 | "metadata": {}, 3237 | "outputs": [ 3238 | { 3239 | "data": { 3240 | "text/html": [ 3241 | "
\n", 3242 | "\n", 3255 | "\n", 3256 | " \n", 3257 | " \n", 3258 | " \n", 3259 | " \n", 3260 | " \n", 3261 | " \n", 3262 | " \n", 3263 | " \n", 3264 | " \n", 3265 | " \n", 3266 | " \n", 3267 | " \n", 3268 | " \n", 3269 | " \n", 3270 | " \n", 3271 | " \n", 3272 | " \n", 3273 | " \n", 3274 | " \n", 3275 | " \n", 3276 | " \n", 3277 | " \n", 3278 | " \n", 3279 | " \n", 3280 | " \n", 3281 | " \n", 3282 | " \n", 3283 | " \n", 3284 | " \n", 3285 | " \n", 3286 | " \n", 3287 | " \n", 3288 | " \n", 3289 | " \n", 3290 | " \n", 3291 | " \n", 3292 | " \n", 3293 | " \n", 3294 | " \n", 3295 | " \n", 3296 | " \n", 3297 | " \n", 3298 | " \n", 3299 | " \n", 3300 | " \n", 3301 | " \n", 3302 | " \n", 3303 | " \n", 3304 | " \n", 3305 | " \n", 3306 | " \n", 3307 | " \n", 3308 | " \n", 3309 | " \n", 3310 | " \n", 3311 | " \n", 3312 | " \n", 3313 | " \n", 3314 | " \n", 3315 | " \n", 3316 | " \n", 3317 | " \n", 3318 | " \n", 3319 | " \n", 3320 | " \n", 3321 | " \n", 3322 | " \n", 3323 | " \n", 3324 | " \n", 3325 | " \n", 3326 | " \n", 3327 | " \n", 3328 | " \n", 3329 | " \n", 3330 | " \n", 3331 | " \n", 3332 | " \n", 3333 | " \n", 3334 | " \n", 3335 | " \n", 3336 | " \n", 3337 | " \n", 3338 | " \n", 3339 | " \n", 3340 | " \n", 3341 | " \n", 3342 | " \n", 3343 | " \n", 3344 | " \n", 3345 | " \n", 3346 | " \n", 3347 | " \n", 3348 | " \n", 3349 | " \n", 3350 | " \n", 3351 | " \n", 3352 | " \n", 3353 | " \n", 3354 | " \n", 3355 | " \n", 3356 | " \n", 3357 | " \n", 3358 | " \n", 3359 | " \n", 3360 | " \n", 3361 | " \n", 3362 | " \n", 3363 | " \n", 3364 | "
1. open2. high3. low4. close5. volume
date
2019-07-29 07:00:00-07:0010.500010.580010.430010.44004840329.0
2019-07-29 07:30:00-07:0010.440410.484710.399710.41043860280.0
2019-07-29 08:00:00-07:0010.420010.500010.410010.50001912153.0
2019-07-29 08:30:00-07:0010.493110.530010.480010.48501916453.0
2019-07-29 09:00:00-07:0010.490010.500010.440010.45002467638.0
..................
2019-09-09 11:00:00-07:008.99008.99508.97008.98001740722.0
2019-09-09 11:30:00-07:008.97359.00008.97008.98351412823.0
2019-09-09 12:00:00-07:008.99009.01008.93508.95004177838.0
2019-09-09 12:30:00-07:008.94538.97008.93008.96032254279.0
2019-09-09 13:00:00-07:008.96008.99008.92008.97006887530.0
\n", 3365 | "

389 rows × 5 columns

\n", 3366 | "
" 3367 | ], 3368 | "text/plain": [ 3369 | " 1. open 2. high 3. low 4. close 5. volume\n", 3370 | "date \n", 3371 | "2019-07-29 07:00:00-07:00 10.5000 10.5800 10.4300 10.4400 4840329.0\n", 3372 | "2019-07-29 07:30:00-07:00 10.4404 10.4847 10.3997 10.4104 3860280.0\n", 3373 | "2019-07-29 08:00:00-07:00 10.4200 10.5000 10.4100 10.5000 1912153.0\n", 3374 | "2019-07-29 08:30:00-07:00 10.4931 10.5300 10.4800 10.4850 1916453.0\n", 3375 | "2019-07-29 09:00:00-07:00 10.4900 10.5000 10.4400 10.4500 2467638.0\n", 3376 | "... ... ... ... ... ...\n", 3377 | "2019-09-09 11:00:00-07:00 8.9900 8.9950 8.9700 8.9800 1740722.0\n", 3378 | "2019-09-09 11:30:00-07:00 8.9735 9.0000 8.9700 8.9835 1412823.0\n", 3379 | "2019-09-09 12:00:00-07:00 8.9900 9.0100 8.9350 8.9500 4177838.0\n", 3380 | "2019-09-09 12:30:00-07:00 8.9453 8.9700 8.9300 8.9603 2254279.0\n", 3381 | "2019-09-09 13:00:00-07:00 8.9600 8.9900 8.9200 8.9700 6887530.0\n", 3382 | "\n", 3383 | "[389 rows x 5 columns]" 3384 | ] 3385 | }, 3386 | "execution_count": 67, 3387 | "metadata": {}, 3388 | "output_type": "execute_result" 3389 | } 3390 | ], 3391 | "source": [ 3392 | "# Converting from one time zone to another\n", 3393 | "ge.tz_convert('America/Los_Angeles')" 3394 | ] 3395 | }, 3396 | { 3397 | "cell_type": "code", 3398 | "execution_count": 68, 3399 | "id": "d279b290", 3400 | "metadata": {}, 3401 | "outputs": [], 3402 | "source": [ 3403 | "ge_la = ge.tz_convert('America/Los_Angeles')" 3404 | ] 3405 | }, 3406 | { 3407 | "cell_type": "code", 3408 | "execution_count": 69, 3409 | "id": "4dd295aa", 3410 | "metadata": {}, 3411 | "outputs": [ 3412 | { 3413 | "data": { 3414 | "text/html": [ 3415 | "
\n", 3416 | "\n", 3429 | "\n", 3430 | " \n", 3431 | " \n", 3432 | " \n", 3433 | " \n", 3434 | " \n", 3435 | " \n", 3436 | " \n", 3437 | " \n", 3438 | " \n", 3439 | " \n", 3440 | " \n", 3441 | " \n", 3442 | " \n", 3443 | " \n", 3444 | " \n", 3445 | " \n", 3446 | " \n", 3447 | " \n", 3448 | " \n", 3449 | " \n", 3450 | " \n", 3451 | " \n", 3452 | " \n", 3453 | " \n", 3454 | " \n", 3455 | " \n", 3456 | " \n", 3457 | " \n", 3458 | " \n", 3459 | " \n", 3460 | " \n", 3461 | " \n", 3462 | " \n", 3463 | " \n", 3464 | " \n", 3465 | " \n", 3466 | " \n", 3467 | " \n", 3468 | " \n", 3469 | " \n", 3470 | " \n", 3471 | " \n", 3472 | " \n", 3473 | " \n", 3474 | " \n", 3475 | " \n", 3476 | " \n", 3477 | " \n", 3478 | " \n", 3479 | " \n", 3480 | " \n", 3481 | " \n", 3482 | " \n", 3483 | " \n", 3484 | " \n", 3485 | " \n", 3486 | " \n", 3487 | " \n", 3488 | " \n", 3489 | " \n", 3490 | "
1. open2. high3. low4. close5. volume
date
2019-07-29 07:00:00-07:0010.500010.580010.430010.44004840329.0
2019-07-29 07:30:00-07:0010.440410.484710.399710.41043860280.0
2019-07-29 08:00:00-07:0010.420010.500010.410010.50001912153.0
2019-07-29 08:30:00-07:0010.493110.530010.480010.48501916453.0
2019-07-29 09:00:00-07:0010.490010.500010.440010.45002467638.0
\n", 3491 | "
" 3492 | ], 3493 | "text/plain": [ 3494 | " 1. open 2. high 3. low 4. close 5. volume\n", 3495 | "date \n", 3496 | "2019-07-29 07:00:00-07:00 10.5000 10.5800 10.4300 10.4400 4840329.0\n", 3497 | "2019-07-29 07:30:00-07:00 10.4404 10.4847 10.3997 10.4104 3860280.0\n", 3498 | "2019-07-29 08:00:00-07:00 10.4200 10.5000 10.4100 10.5000 1912153.0\n", 3499 | "2019-07-29 08:30:00-07:00 10.4931 10.5300 10.4800 10.4850 1916453.0\n", 3500 | "2019-07-29 09:00:00-07:00 10.4900 10.5000 10.4400 10.4500 2467638.0" 3501 | ] 3502 | }, 3503 | "execution_count": 69, 3504 | "metadata": {}, 3505 | "output_type": "execute_result" 3506 | } 3507 | ], 3508 | "source": [ 3509 | "ge_la.head()" 3510 | ] 3511 | }, 3512 | { 3513 | "cell_type": "code", 3514 | "execution_count": 70, 3515 | "id": "13baa049", 3516 | "metadata": {}, 3517 | "outputs": [ 3518 | { 3519 | "data": { 3520 | "text/html": [ 3521 | "
\n", 3522 | "\n", 3535 | "\n", 3536 | " \n", 3537 | " \n", 3538 | " \n", 3539 | " \n", 3540 | " \n", 3541 | " \n", 3542 | " \n", 3543 | " \n", 3544 | " \n", 3545 | " \n", 3546 | " \n", 3547 | " \n", 3548 | " \n", 3549 | " \n", 3550 | " \n", 3551 | " \n", 3552 | " \n", 3553 | " \n", 3554 | " \n", 3555 | " \n", 3556 | " \n", 3557 | " \n", 3558 | " \n", 3559 | " \n", 3560 | " \n", 3561 | " \n", 3562 | " \n", 3563 | " \n", 3564 | " \n", 3565 | " \n", 3566 | " \n", 3567 | " \n", 3568 | " \n", 3569 | " \n", 3570 | " \n", 3571 | " \n", 3572 | " \n", 3573 | " \n", 3574 | " \n", 3575 | " \n", 3576 | " \n", 3577 | " \n", 3578 | " \n", 3579 | " \n", 3580 | " \n", 3581 | " \n", 3582 | " \n", 3583 | " \n", 3584 | " \n", 3585 | " \n", 3586 | " \n", 3587 | " \n", 3588 | " \n", 3589 | " \n", 3590 | " \n", 3591 | " \n", 3592 | " \n", 3593 | " \n", 3594 | " \n", 3595 | " \n", 3596 | "
1. open2. high3. low4. close5. volume
date
2019-07-29 10:00:00-04:0010.500010.580010.430010.44004840329.0
2019-07-29 10:30:00-04:0010.440410.484710.399710.41043860280.0
2019-07-29 11:00:00-04:0010.420010.500010.410010.50001912153.0
2019-07-29 11:30:00-04:0010.493110.530010.480010.48501916453.0
2019-07-29 12:00:00-04:0010.490010.500010.440010.45002467638.0
\n", 3597 | "
" 3598 | ], 3599 | "text/plain": [ 3600 | " 1. open 2. high 3. low 4. close 5. volume\n", 3601 | "date \n", 3602 | "2019-07-29 10:00:00-04:00 10.5000 10.5800 10.4300 10.4400 4840329.0\n", 3603 | "2019-07-29 10:30:00-04:00 10.4404 10.4847 10.3997 10.4104 3860280.0\n", 3604 | "2019-07-29 11:00:00-04:00 10.4200 10.5000 10.4100 10.5000 1912153.0\n", 3605 | "2019-07-29 11:30:00-04:00 10.4931 10.5300 10.4800 10.4850 1916453.0\n", 3606 | "2019-07-29 12:00:00-04:00 10.4900 10.5000 10.4400 10.4500 2467638.0" 3607 | ] 3608 | }, 3609 | "execution_count": 70, 3610 | "metadata": {}, 3611 | "output_type": "execute_result" 3612 | } 3613 | ], 3614 | "source": [ 3615 | "ge.head()" 3616 | ] 3617 | }, 3618 | { 3619 | "cell_type": "code", 3620 | "execution_count": 71, 3621 | "id": "5a29b8bd", 3622 | "metadata": {}, 3623 | "outputs": [], 3624 | "source": [ 3625 | "# Concatenating our ge_la and ge dataframes horizontally\n", 3626 | "comb = pd.concat([ge, ge_la], axis = 1)" 3627 | ] 3628 | }, 3629 | { 3630 | "cell_type": "code", 3631 | "execution_count": 72, 3632 | "id": "8eb65c71", 3633 | "metadata": {}, 3634 | "outputs": [ 3635 | { 3636 | "data": { 3637 | "text/html": [ 3638 | "
\n", 3639 | "\n", 3652 | "\n", 3653 | " \n", 3654 | " \n", 3655 | " \n", 3656 | " \n", 3657 | " \n", 3658 | " \n", 3659 | " \n", 3660 | " \n", 3661 | " \n", 3662 | " \n", 3663 | " \n", 3664 | " \n", 3665 | " \n", 3666 | " \n", 3667 | " \n", 3668 | " \n", 3669 | " \n", 3670 | " \n", 3671 | " \n", 3672 | " \n", 3673 | " \n", 3674 | " \n", 3675 | " \n", 3676 | " \n", 3677 | " \n", 3678 | " \n", 3679 | " \n", 3680 | " \n", 3681 | " \n", 3682 | " \n", 3683 | " \n", 3684 | " \n", 3685 | " \n", 3686 | " \n", 3687 | " \n", 3688 | " \n", 3689 | " \n", 3690 | " \n", 3691 | " \n", 3692 | " \n", 3693 | " \n", 3694 | " \n", 3695 | " \n", 3696 | " \n", 3697 | " \n", 3698 | " \n", 3699 | " \n", 3700 | " \n", 3701 | " \n", 3702 | " \n", 3703 | " \n", 3704 | " \n", 3705 | " \n", 3706 | " \n", 3707 | " \n", 3708 | " \n", 3709 | " \n", 3710 | " \n", 3711 | " \n", 3712 | " \n", 3713 | " \n", 3714 | " \n", 3715 | " \n", 3716 | " \n", 3717 | " \n", 3718 | " \n", 3719 | " \n", 3720 | " \n", 3721 | " \n", 3722 | " \n", 3723 | " \n", 3724 | " \n", 3725 | " \n", 3726 | " \n", 3727 | " \n", 3728 | " \n", 3729 | " \n", 3730 | " \n", 3731 | " \n", 3732 | " \n", 3733 | " \n", 3734 | " \n", 3735 | " \n", 3736 | " \n", 3737 | " \n", 3738 | " \n", 3739 | " \n", 3740 | " \n", 3741 | " \n", 3742 | " \n", 3743 | " \n", 3744 | " \n", 3745 | " \n", 3746 | " \n", 3747 | " \n", 3748 | "
1. open2. high3. low4. close5. volume1. open2. high3. low4. close5. volume
date
2019-07-29 14:00:00+00:0010.500010.580010.430010.44004840329.010.500010.580010.430010.44004840329.0
2019-07-29 14:30:00+00:0010.440410.484710.399710.41043860280.010.440410.484710.399710.41043860280.0
2019-07-29 15:00:00+00:0010.420010.500010.410010.50001912153.010.420010.500010.410010.50001912153.0
2019-07-29 15:30:00+00:0010.493110.530010.480010.48501916453.010.493110.530010.480010.48501916453.0
2019-07-29 16:00:00+00:0010.490010.500010.440010.45002467638.010.490010.500010.440010.45002467638.0
\n", 3749 | "
" 3750 | ], 3751 | "text/plain": [ 3752 | " 1. open 2. high 3. low 4. close 5. volume \\\n", 3753 | "date \n", 3754 | "2019-07-29 14:00:00+00:00 10.5000 10.5800 10.4300 10.4400 4840329.0 \n", 3755 | "2019-07-29 14:30:00+00:00 10.4404 10.4847 10.3997 10.4104 3860280.0 \n", 3756 | "2019-07-29 15:00:00+00:00 10.4200 10.5000 10.4100 10.5000 1912153.0 \n", 3757 | "2019-07-29 15:30:00+00:00 10.4931 10.5300 10.4800 10.4850 1916453.0 \n", 3758 | "2019-07-29 16:00:00+00:00 10.4900 10.5000 10.4400 10.4500 2467638.0 \n", 3759 | "\n", 3760 | " 1. open 2. high 3. low 4. close 5. volume \n", 3761 | "date \n", 3762 | "2019-07-29 14:00:00+00:00 10.5000 10.5800 10.4300 10.4400 4840329.0 \n", 3763 | "2019-07-29 14:30:00+00:00 10.4404 10.4847 10.3997 10.4104 3860280.0 \n", 3764 | "2019-07-29 15:00:00+00:00 10.4200 10.5000 10.4100 10.5000 1912153.0 \n", 3765 | "2019-07-29 15:30:00+00:00 10.4931 10.5300 10.4800 10.4850 1916453.0 \n", 3766 | "2019-07-29 16:00:00+00:00 10.4900 10.5000 10.4400 10.4500 2467638.0 " 3767 | ] 3768 | }, 3769 | "execution_count": 72, 3770 | "metadata": {}, 3771 | "output_type": "execute_result" 3772 | } 3773 | ], 3774 | "source": [ 3775 | "comb.head()" 3776 | ] 3777 | }, 3778 | { 3779 | "cell_type": "code", 3780 | "execution_count": 73, 3781 | "id": "92af0b87", 3782 | "metadata": {}, 3783 | "outputs": [ 3784 | { 3785 | "data": { 3786 | "text/plain": [ 3787 | "DatetimeIndex(['2019-07-29 14:00:00+00:00', '2019-07-29 14:30:00+00:00',\n", 3788 | " '2019-07-29 15:00:00+00:00', '2019-07-29 15:30:00+00:00',\n", 3789 | " '2019-07-29 16:00:00+00:00', '2019-07-29 16:30:00+00:00',\n", 3790 | " '2019-07-29 17:00:00+00:00', '2019-07-29 17:30:00+00:00',\n", 3791 | " '2019-07-29 18:00:00+00:00', '2019-07-29 18:30:00+00:00',\n", 3792 | " ...\n", 3793 | " '2019-09-09 15:30:00+00:00', '2019-09-09 16:00:00+00:00',\n", 3794 | " '2019-09-09 16:30:00+00:00', '2019-09-09 17:00:00+00:00',\n", 3795 | " '2019-09-09 17:30:00+00:00', '2019-09-09 18:00:00+00:00',\n", 3796 | " '2019-09-09 18:30:00+00:00', '2019-09-09 19:00:00+00:00',\n", 3797 | " '2019-09-09 19:30:00+00:00', '2019-09-09 20:00:00+00:00'],\n", 3798 | " dtype='datetime64[ns, UTC]', name='date', length=389, freq=None)" 3799 | ] 3800 | }, 3801 | "execution_count": 73, 3802 | "metadata": {}, 3803 | "output_type": "execute_result" 3804 | } 3805 | ], 3806 | "source": [ 3807 | "comb.index" 3808 | ] 3809 | }, 3810 | { 3811 | "cell_type": "code", 3812 | "execution_count": 74, 3813 | "id": "f1fec104", 3814 | "metadata": {}, 3815 | "outputs": [], 3816 | "source": [ 3817 | "# Creating new columns in our dataframe for LA Time and NY Timezones\n", 3818 | "comb['NY_time'] = comb.index.tz_convert('America/New_York')\n", 3819 | "comb['LA_time'] = comb.index.tz_convert('America/Los_Angeles')" 3820 | ] 3821 | }, 3822 | { 3823 | "cell_type": "code", 3824 | "execution_count": 75, 3825 | "id": "fd01065d", 3826 | "metadata": {}, 3827 | "outputs": [ 3828 | { 3829 | "data": { 3830 | "text/html": [ 3831 | "
\n", 3832 | "\n", 3845 | "\n", 3846 | " \n", 3847 | " \n", 3848 | " \n", 3849 | " \n", 3850 | " \n", 3851 | " \n", 3852 | " \n", 3853 | " \n", 3854 | " \n", 3855 | " \n", 3856 | " \n", 3857 | " \n", 3858 | " \n", 3859 | " \n", 3860 | " \n", 3861 | " \n", 3862 | " \n", 3863 | " \n", 3864 | " \n", 3865 | " \n", 3866 | " \n", 3867 | " \n", 3868 | " \n", 3869 | " \n", 3870 | " \n", 3871 | " \n", 3872 | " \n", 3873 | " \n", 3874 | " \n", 3875 | " \n", 3876 | " \n", 3877 | " \n", 3878 | " \n", 3879 | " \n", 3880 | " \n", 3881 | " \n", 3882 | " \n", 3883 | " \n", 3884 | " \n", 3885 | " \n", 3886 | " \n", 3887 | " \n", 3888 | " \n", 3889 | " \n", 3890 | " \n", 3891 | " \n", 3892 | " \n", 3893 | " \n", 3894 | " \n", 3895 | " \n", 3896 | " \n", 3897 | " \n", 3898 | " \n", 3899 | " \n", 3900 | " \n", 3901 | " \n", 3902 | " \n", 3903 | " \n", 3904 | " \n", 3905 | " \n", 3906 | " \n", 3907 | " \n", 3908 | " \n", 3909 | " \n", 3910 | " \n", 3911 | " \n", 3912 | " \n", 3913 | " \n", 3914 | " \n", 3915 | " \n", 3916 | " \n", 3917 | " \n", 3918 | " \n", 3919 | " \n", 3920 | " \n", 3921 | " \n", 3922 | " \n", 3923 | " \n", 3924 | " \n", 3925 | " \n", 3926 | " \n", 3927 | " \n", 3928 | " \n", 3929 | " \n", 3930 | " \n", 3931 | " \n", 3932 | " \n", 3933 | " \n", 3934 | " \n", 3935 | " \n", 3936 | " \n", 3937 | " \n", 3938 | " \n", 3939 | " \n", 3940 | " \n", 3941 | " \n", 3942 | " \n", 3943 | " \n", 3944 | " \n", 3945 | " \n", 3946 | " \n", 3947 | " \n", 3948 | " \n", 3949 | " \n", 3950 | " \n", 3951 | " \n", 3952 | " \n", 3953 | " \n", 3954 | " \n", 3955 | "
1. open2. high3. low4. close5. volume1. open2. high3. low4. close5. volumeNY_timeLA_time
date
2019-07-29 14:00:00+00:0010.500010.580010.430010.44004840329.010.500010.580010.430010.44004840329.02019-07-29 10:00:00-04:002019-07-29 07:00:00-07:00
2019-07-29 14:30:00+00:0010.440410.484710.399710.41043860280.010.440410.484710.399710.41043860280.02019-07-29 10:30:00-04:002019-07-29 07:30:00-07:00
2019-07-29 15:00:00+00:0010.420010.500010.410010.50001912153.010.420010.500010.410010.50001912153.02019-07-29 11:00:00-04:002019-07-29 08:00:00-07:00
2019-07-29 15:30:00+00:0010.493110.530010.480010.48501916453.010.493110.530010.480010.48501916453.02019-07-29 11:30:00-04:002019-07-29 08:30:00-07:00
2019-07-29 16:00:00+00:0010.490010.500010.440010.45002467638.010.490010.500010.440010.45002467638.02019-07-29 12:00:00-04:002019-07-29 09:00:00-07:00
\n", 3956 | "
" 3957 | ], 3958 | "text/plain": [ 3959 | " 1. open 2. high 3. low 4. close 5. volume \\\n", 3960 | "date \n", 3961 | "2019-07-29 14:00:00+00:00 10.5000 10.5800 10.4300 10.4400 4840329.0 \n", 3962 | "2019-07-29 14:30:00+00:00 10.4404 10.4847 10.3997 10.4104 3860280.0 \n", 3963 | "2019-07-29 15:00:00+00:00 10.4200 10.5000 10.4100 10.5000 1912153.0 \n", 3964 | "2019-07-29 15:30:00+00:00 10.4931 10.5300 10.4800 10.4850 1916453.0 \n", 3965 | "2019-07-29 16:00:00+00:00 10.4900 10.5000 10.4400 10.4500 2467638.0 \n", 3966 | "\n", 3967 | " 1. open 2. high 3. low 4. close 5. volume \\\n", 3968 | "date \n", 3969 | "2019-07-29 14:00:00+00:00 10.5000 10.5800 10.4300 10.4400 4840329.0 \n", 3970 | "2019-07-29 14:30:00+00:00 10.4404 10.4847 10.3997 10.4104 3860280.0 \n", 3971 | "2019-07-29 15:00:00+00:00 10.4200 10.5000 10.4100 10.5000 1912153.0 \n", 3972 | "2019-07-29 15:30:00+00:00 10.4931 10.5300 10.4800 10.4850 1916453.0 \n", 3973 | "2019-07-29 16:00:00+00:00 10.4900 10.5000 10.4400 10.4500 2467638.0 \n", 3974 | "\n", 3975 | " NY_time LA_time \n", 3976 | "date \n", 3977 | "2019-07-29 14:00:00+00:00 2019-07-29 10:00:00-04:00 2019-07-29 07:00:00-07:00 \n", 3978 | "2019-07-29 14:30:00+00:00 2019-07-29 10:30:00-04:00 2019-07-29 07:30:00-07:00 \n", 3979 | "2019-07-29 15:00:00+00:00 2019-07-29 11:00:00-04:00 2019-07-29 08:00:00-07:00 \n", 3980 | "2019-07-29 15:30:00+00:00 2019-07-29 11:30:00-04:00 2019-07-29 08:30:00-07:00 \n", 3981 | "2019-07-29 16:00:00+00:00 2019-07-29 12:00:00-04:00 2019-07-29 09:00:00-07:00 " 3982 | ] 3983 | }, 3984 | "execution_count": 75, 3985 | "metadata": {}, 3986 | "output_type": "execute_result" 3987 | } 3988 | ], 3989 | "source": [ 3990 | "comb.head()" 3991 | ] 3992 | }, 3993 | { 3994 | "cell_type": "code", 3995 | "execution_count": 76, 3996 | "id": "b1fd5c7a", 3997 | "metadata": {}, 3998 | "outputs": [], 3999 | "source": [ 4000 | "# importing timezone module\n", 4001 | "import pytz" 4002 | ] 4003 | }, 4004 | { 4005 | "cell_type": "code", 4006 | "execution_count": 77, 4007 | "id": "c6c36cb1", 4008 | "metadata": {}, 4009 | "outputs": [ 4010 | { 4011 | "data": { 4012 | "text/plain": [ 4013 | "593" 4014 | ] 4015 | }, 4016 | "execution_count": 77, 4017 | "metadata": {}, 4018 | "output_type": "execute_result" 4019 | } 4020 | ], 4021 | "source": [ 4022 | "# Checking total timezones available\n", 4023 | "len(pytz.all_timezones)" 4024 | ] 4025 | }, 4026 | { 4027 | "cell_type": "code", 4028 | "execution_count": 78, 4029 | "id": "ffcc9ba6", 4030 | "metadata": {}, 4031 | "outputs": [ 4032 | { 4033 | "data": { 4034 | "text/plain": [ 4035 | "['Africa/Abidjan', 'Africa/Accra', 'Africa/Addis_Ababa', 'Africa/Algiers', 'Africa/Asmara', 'Africa/Bamako', 'Africa/Bangui', 'Africa/Banjul', 'Africa/Bissau', 'Africa/Blantyre', 'Africa/Brazzaville', 'Africa/Bujumbura', 'Africa/Cairo', 'Africa/Casablanca', 'Africa/Ceuta', 'Africa/Conakry', 'Africa/Dakar', 'Africa/Dar_es_Salaam', 'Africa/Djibouti', 'Africa/Douala', 'Africa/El_Aaiun', 'Africa/Freetown', 'Africa/Gaborone', 'Africa/Harare', 'Africa/Johannesburg', 'Africa/Juba', 'Africa/Kampala', 'Africa/Khartoum', 'Africa/Kigali', 'Africa/Kinshasa', 'Africa/Lagos', 'Africa/Libreville', 'Africa/Lome', 'Africa/Luanda', 'Africa/Lubumbashi', 'Africa/Lusaka', 'Africa/Malabo', 'Africa/Maputo', 'Africa/Maseru', 'Africa/Mbabane', 'Africa/Mogadishu', 'Africa/Monrovia', 'Africa/Nairobi', 'Africa/Ndjamena', 'Africa/Niamey', 'Africa/Nouakchott', 'Africa/Ouagadougou', 'Africa/Porto-Novo', 'Africa/Sao_Tome', 'Africa/Tripoli', 'Africa/Tunis', 'Africa/Windhoek', 'America/Adak', 'America/Anchorage', 'America/Anguilla', 'America/Antigua', 'America/Araguaina', 'America/Argentina/Buenos_Aires', 'America/Argentina/Catamarca', 'America/Argentina/Cordoba', 'America/Argentina/Jujuy', 'America/Argentina/La_Rioja', 'America/Argentina/Mendoza', 'America/Argentina/Rio_Gallegos', 'America/Argentina/Salta', 'America/Argentina/San_Juan', 'America/Argentina/San_Luis', 'America/Argentina/Tucuman', 'America/Argentina/Ushuaia', 'America/Aruba', 'America/Asuncion', 'America/Atikokan', 'America/Bahia', 'America/Bahia_Banderas', 'America/Barbados', 'America/Belem', 'America/Belize', 'America/Blanc-Sablon', 'America/Boa_Vista', 'America/Bogota', 'America/Boise', 'America/Cambridge_Bay', 'America/Campo_Grande', 'America/Cancun', 'America/Caracas', 'America/Cayenne', 'America/Cayman', 'America/Chicago', 'America/Chihuahua', 'America/Costa_Rica', 'America/Creston', 'America/Cuiaba', 'America/Curacao', 'America/Danmarkshavn', 'America/Dawson', 'America/Dawson_Creek', 'America/Denver', 'America/Detroit', 'America/Dominica', 'America/Edmonton', 'America/Eirunepe', 'America/El_Salvador', 'America/Fort_Nelson', 'America/Fortaleza', 'America/Glace_Bay', 'America/Goose_Bay', 'America/Grand_Turk', 'America/Grenada', 'America/Guadeloupe', 'America/Guatemala', 'America/Guayaquil', 'America/Guyana', 'America/Halifax', 'America/Havana', 'America/Hermosillo', 'America/Indiana/Indianapolis', 'America/Indiana/Knox', 'America/Indiana/Marengo', 'America/Indiana/Petersburg', 'America/Indiana/Tell_City', 'America/Indiana/Vevay', 'America/Indiana/Vincennes', 'America/Indiana/Winamac', 'America/Inuvik', 'America/Iqaluit', 'America/Jamaica', 'America/Juneau', 'America/Kentucky/Louisville', 'America/Kentucky/Monticello', 'America/Kralendijk', 'America/La_Paz', 'America/Lima', 'America/Los_Angeles', 'America/Lower_Princes', 'America/Maceio', 'America/Managua', 'America/Manaus', 'America/Marigot', 'America/Martinique', 'America/Matamoros', 'America/Mazatlan', 'America/Menominee', 'America/Merida', 'America/Metlakatla', 'America/Mexico_City', 'America/Miquelon', 'America/Moncton', 'America/Monterrey', 'America/Montevideo', 'America/Montserrat', 'America/Nassau', 'America/New_York', 'America/Nipigon', 'America/Nome', 'America/Noronha', 'America/North_Dakota/Beulah', 'America/North_Dakota/Center', 'America/North_Dakota/New_Salem', 'America/Nuuk', 'America/Ojinaga', 'America/Panama', 'America/Pangnirtung', 'America/Paramaribo', 'America/Phoenix', 'America/Port-au-Prince', 'America/Port_of_Spain', 'America/Porto_Velho', 'America/Puerto_Rico', 'America/Punta_Arenas', 'America/Rainy_River', 'America/Rankin_Inlet', 'America/Recife', 'America/Regina', 'America/Resolute', 'America/Rio_Branco', 'America/Santarem', 'America/Santiago', 'America/Santo_Domingo', 'America/Sao_Paulo', 'America/Scoresbysund', 'America/Sitka', 'America/St_Barthelemy', 'America/St_Johns', 'America/St_Kitts', 'America/St_Lucia', 'America/St_Thomas', 'America/St_Vincent', 'America/Swift_Current', 'America/Tegucigalpa', 'America/Thule', 'America/Thunder_Bay', 'America/Tijuana', 'America/Toronto', 'America/Tortola', 'America/Vancouver', 'America/Whitehorse', 'America/Winnipeg', 'America/Yakutat', 'America/Yellowknife', 'Antarctica/Casey', 'Antarctica/Davis', 'Antarctica/DumontDUrville', 'Antarctica/Macquarie', 'Antarctica/Mawson', 'Antarctica/McMurdo', 'Antarctica/Palmer', 'Antarctica/Rothera', 'Antarctica/Syowa', 'Antarctica/Troll', 'Antarctica/Vostok', 'Arctic/Longyearbyen', 'Asia/Aden', 'Asia/Almaty', 'Asia/Amman', 'Asia/Anadyr', 'Asia/Aqtau', 'Asia/Aqtobe', 'Asia/Ashgabat', 'Asia/Atyrau', 'Asia/Baghdad', 'Asia/Bahrain', 'Asia/Baku', 'Asia/Bangkok', 'Asia/Barnaul', 'Asia/Beirut', 'Asia/Bishkek', 'Asia/Brunei', 'Asia/Chita', 'Asia/Choibalsan', 'Asia/Colombo', 'Asia/Damascus', 'Asia/Dhaka', 'Asia/Dili', 'Asia/Dubai', 'Asia/Dushanbe', 'Asia/Famagusta', 'Asia/Gaza', 'Asia/Hebron', 'Asia/Ho_Chi_Minh', 'Asia/Hong_Kong', 'Asia/Hovd', 'Asia/Irkutsk', 'Asia/Jakarta', 'Asia/Jayapura', 'Asia/Jerusalem', 'Asia/Kabul', 'Asia/Kamchatka', 'Asia/Karachi', 'Asia/Kathmandu', 'Asia/Khandyga', 'Asia/Kolkata', 'Asia/Krasnoyarsk', 'Asia/Kuala_Lumpur', 'Asia/Kuching', 'Asia/Kuwait', 'Asia/Macau', 'Asia/Magadan', 'Asia/Makassar', 'Asia/Manila', 'Asia/Muscat', 'Asia/Nicosia', 'Asia/Novokuznetsk', 'Asia/Novosibirsk', 'Asia/Omsk', 'Asia/Oral', 'Asia/Phnom_Penh', 'Asia/Pontianak', 'Asia/Pyongyang', 'Asia/Qatar', 'Asia/Qostanay', 'Asia/Qyzylorda', 'Asia/Riyadh', 'Asia/Sakhalin', 'Asia/Samarkand', 'Asia/Seoul', 'Asia/Shanghai', 'Asia/Singapore', 'Asia/Srednekolymsk', 'Asia/Taipei', 'Asia/Tashkent', 'Asia/Tbilisi', 'Asia/Tehran', 'Asia/Thimphu', 'Asia/Tokyo', 'Asia/Tomsk', 'Asia/Ulaanbaatar', 'Asia/Urumqi', 'Asia/Ust-Nera', 'Asia/Vientiane', 'Asia/Vladivostok', 'Asia/Yakutsk', 'Asia/Yangon', 'Asia/Yekaterinburg', 'Asia/Yerevan', 'Atlantic/Azores', 'Atlantic/Bermuda', 'Atlantic/Canary', 'Atlantic/Cape_Verde', 'Atlantic/Faroe', 'Atlantic/Madeira', 'Atlantic/Reykjavik', 'Atlantic/South_Georgia', 'Atlantic/St_Helena', 'Atlantic/Stanley', 'Australia/Adelaide', 'Australia/Brisbane', 'Australia/Broken_Hill', 'Australia/Darwin', 'Australia/Eucla', 'Australia/Hobart', 'Australia/Lindeman', 'Australia/Lord_Howe', 'Australia/Melbourne', 'Australia/Perth', 'Australia/Sydney', 'Canada/Atlantic', 'Canada/Central', 'Canada/Eastern', 'Canada/Mountain', 'Canada/Newfoundland', 'Canada/Pacific', 'Europe/Amsterdam', 'Europe/Andorra', 'Europe/Astrakhan', 'Europe/Athens', 'Europe/Belgrade', 'Europe/Berlin', 'Europe/Bratislava', 'Europe/Brussels', 'Europe/Bucharest', 'Europe/Budapest', 'Europe/Busingen', 'Europe/Chisinau', 'Europe/Copenhagen', 'Europe/Dublin', 'Europe/Gibraltar', 'Europe/Guernsey', 'Europe/Helsinki', 'Europe/Isle_of_Man', 'Europe/Istanbul', 'Europe/Jersey', 'Europe/Kaliningrad', 'Europe/Kiev', 'Europe/Kirov', 'Europe/Lisbon', 'Europe/Ljubljana', 'Europe/London', 'Europe/Luxembourg', 'Europe/Madrid', 'Europe/Malta', 'Europe/Mariehamn', 'Europe/Minsk', 'Europe/Monaco', 'Europe/Moscow', 'Europe/Oslo', 'Europe/Paris', 'Europe/Podgorica', 'Europe/Prague', 'Europe/Riga', 'Europe/Rome', 'Europe/Samara', 'Europe/San_Marino', 'Europe/Sarajevo', 'Europe/Saratov', 'Europe/Simferopol', 'Europe/Skopje', 'Europe/Sofia', 'Europe/Stockholm', 'Europe/Tallinn', 'Europe/Tirane', 'Europe/Ulyanovsk', 'Europe/Uzhgorod', 'Europe/Vaduz', 'Europe/Vatican', 'Europe/Vienna', 'Europe/Vilnius', 'Europe/Volgograd', 'Europe/Warsaw', 'Europe/Zagreb', 'Europe/Zaporozhye', 'Europe/Zurich', 'GMT', 'Indian/Antananarivo', 'Indian/Chagos', 'Indian/Christmas', 'Indian/Cocos', 'Indian/Comoro', 'Indian/Kerguelen', 'Indian/Mahe', 'Indian/Maldives', 'Indian/Mauritius', 'Indian/Mayotte', 'Indian/Reunion', 'Pacific/Apia', 'Pacific/Auckland', 'Pacific/Bougainville', 'Pacific/Chatham', 'Pacific/Chuuk', 'Pacific/Easter', 'Pacific/Efate', 'Pacific/Enderbury', 'Pacific/Fakaofo', 'Pacific/Fiji', 'Pacific/Funafuti', 'Pacific/Galapagos', 'Pacific/Gambier', 'Pacific/Guadalcanal', 'Pacific/Guam', 'Pacific/Honolulu', 'Pacific/Kiritimati', 'Pacific/Kosrae', 'Pacific/Kwajalein', 'Pacific/Majuro', 'Pacific/Marquesas', 'Pacific/Midway', 'Pacific/Nauru', 'Pacific/Niue', 'Pacific/Norfolk', 'Pacific/Noumea', 'Pacific/Pago_Pago', 'Pacific/Palau', 'Pacific/Pitcairn', 'Pacific/Pohnpei', 'Pacific/Port_Moresby', 'Pacific/Rarotonga', 'Pacific/Saipan', 'Pacific/Tahiti', 'Pacific/Tarawa', 'Pacific/Tongatapu', 'Pacific/Wake', 'Pacific/Wallis', 'US/Alaska', 'US/Arizona', 'US/Central', 'US/Eastern', 'US/Hawaii', 'US/Mountain', 'US/Pacific', 'UTC']" 4036 | ] 4037 | }, 4038 | "execution_count": 78, 4039 | "metadata": {}, 4040 | "output_type": "execute_result" 4041 | } 4042 | ], 4043 | "source": [ 4044 | "# Checking common time zones\n", 4045 | "pytz.common_timezones" 4046 | ] 4047 | }, 4048 | { 4049 | "cell_type": "code", 4050 | "execution_count": null, 4051 | "id": "7532f92f", 4052 | "metadata": {}, 4053 | "outputs": [], 4054 | "source": [] 4055 | } 4056 | ], 4057 | "metadata": { 4058 | "kernelspec": { 4059 | "display_name": "Python 3 (ipykernel)", 4060 | "language": "python", 4061 | "name": "python3" 4062 | }, 4063 | "language_info": { 4064 | "codemirror_mode": { 4065 | "name": "ipython", 4066 | "version": 3 4067 | }, 4068 | "file_extension": ".py", 4069 | "mimetype": "text/x-python", 4070 | "name": "python", 4071 | "nbconvert_exporter": "python", 4072 | "pygments_lexer": "ipython3", 4073 | "version": "3.8.5" 4074 | } 4075 | }, 4076 | "nbformat": 4, 4077 | "nbformat_minor": 5 4078 | } 4079 | -------------------------------------------------------------------------------- /Time Series operations with Pandas/README.md: -------------------------------------------------------------------------------- 1 | In this folder, following operations were performed on time-series data 2 | 3 | __1: Time series basic Operations__ 4 | 5 | o Learning to use pandas library 6 | 7 | o Importing time series data from csv files using pd.read_csv() 8 | 9 | o Using the df.head() and df.info() methods to get a snapshot of dataframe 10 | 11 | o Parsing datetime and making it as index column parse_dates, index_col 12 | 13 | o Finding an object at a particular location in the dataframe iloc[,] 14 | 15 | o Checking datatype type() 16 | 17 | o Converting strings to datetime objects pd.to_datetime() 18 | 19 | o Setting datetime column as index using set_index() 20 | 21 | 22 | 23 | __2: Financial Data Analysis with Pandas__ 24 | 25 | o Importing price data from yahoo finance and saving it in a pandas dataframe, using yfinance library 26 | 27 | o Choosing stock ticker symbols, and downloading close price, adjusted close price, open price, and volume data for each ticker and for a particular time period using yf.download() 28 | 29 | o Exporting the stock prices dataframe to a csv file using df.to_csv() 30 | 31 | o Using header to redefine multi-index positions, resetting date as index column, and parsing it as datetime index 32 | 33 | o Flattening (or converting to a tuple) the multi-index columns using df.columns.to_flat_index() 34 | 35 | o Converting tuple index to multi-index using pd.MultiIndex.from_tuples() 36 | 37 | o Swapping column levels from inner to outer using df.swaplevel(), and then sorting index using df.sort_index() 38 | 39 | o Finding basic descriptive statistics for the dataframe using df.describe() 40 | 41 | o Creating a new dataframe from columns in existing dataframe by copying contents using new_df = df.loc[:, ''].copy() 42 | 43 | o Visualising closing stock prices using plot style seaborn from matplotlib library 44 | 45 | o Normalising a time series to 100 46 | 47 | o Using shift() method to calculate absolute and relative change in stock price over previous period (last week to this week, yesterday to today etc.) 48 | 49 | o Creating and adding new columns to a dataframe 50 | 51 | o Calculating Absolute and Relative changes in time series using diff() and pct_change() methods 52 | 53 | o Comparing contents of two columns using equals() 54 | 55 | o Resampling data into monthly, weekly, quarterly or annual periods using resample() 56 | 57 | o Measuring stock performance with MEAN Return and STD of Returns 58 | 59 | o Visualising returns using a histogram plot 60 | 61 | __3: Advanced Financial Data Analysis__ 62 | 63 | __4: Datetime Index Methods, Timezones and NA values__ 64 | 65 | o A closer look at Datetime index 66 | 67 | o Finding and inserting name of the day, quarter number, week number columns in a dataframe 68 | 69 | o Filling NA values with backfill (bfill), forwardfill (ffill) and interpolation. When we resample, reindex or merge time series, we might end up with NA or empty rows. We can handle such situations using these methods 70 | 71 | o Reindexing Datetime index 72 | 73 | o Interpolating missing entries using adjacent values 74 | 75 | o Localising datetime index to various time zones 76 | 77 | o Converting from one time zone to another 78 | 79 | o Concatenating data from various time zones 80 | 81 | o Importing and analysing time zone module pytz 82 | -------------------------------------------------------------------------------- /Trading_Strategies/Machine_Learning/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Trading_Strategies/Mean-Reversion/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Trading_Strategies/Momentum/README.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /Trading_Strategies/Moving_Average_Crossover/README.md: -------------------------------------------------------------------------------- 1 | 2 | --------------------------------------------------------------------------------