2579 lines
95 KiB
Plaintext
2579 lines
95 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"df = pd.read_csv('walmart_stock.csv', index_col=0, parse_dates=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-03</th>\n",
|
||
" <td>59.970001</td>\n",
|
||
" <td>61.060001</td>\n",
|
||
" <td>59.869999</td>\n",
|
||
" <td>60.330002</td>\n",
|
||
" <td>12668800</td>\n",
|
||
" <td>52.619235</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-04</th>\n",
|
||
" <td>60.209999</td>\n",
|
||
" <td>60.349998</td>\n",
|
||
" <td>59.470001</td>\n",
|
||
" <td>59.709999</td>\n",
|
||
" <td>9593300</td>\n",
|
||
" <td>52.078475</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-05</th>\n",
|
||
" <td>59.349998</td>\n",
|
||
" <td>59.619999</td>\n",
|
||
" <td>58.369999</td>\n",
|
||
" <td>59.419998</td>\n",
|
||
" <td>12768200</td>\n",
|
||
" <td>51.825539</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-06</th>\n",
|
||
" <td>59.419998</td>\n",
|
||
" <td>59.450001</td>\n",
|
||
" <td>58.869999</td>\n",
|
||
" <td>59.000000</td>\n",
|
||
" <td>8069400</td>\n",
|
||
" <td>51.459220</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-09</th>\n",
|
||
" <td>59.029999</td>\n",
|
||
" <td>59.549999</td>\n",
|
||
" <td>58.919998</td>\n",
|
||
" <td>59.180000</td>\n",
|
||
" <td>6679300</td>\n",
|
||
" <td>51.616215</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-23</th>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>69.750000</td>\n",
|
||
" <td>69.360001</td>\n",
|
||
" <td>69.540001</td>\n",
|
||
" <td>4803900</td>\n",
|
||
" <td>69.032411</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-27</th>\n",
|
||
" <td>69.300003</td>\n",
|
||
" <td>69.820000</td>\n",
|
||
" <td>69.250000</td>\n",
|
||
" <td>69.699997</td>\n",
|
||
" <td>4435700</td>\n",
|
||
" <td>69.191240</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-28</th>\n",
|
||
" <td>69.940002</td>\n",
|
||
" <td>70.000000</td>\n",
|
||
" <td>69.260002</td>\n",
|
||
" <td>69.309998</td>\n",
|
||
" <td>4875700</td>\n",
|
||
" <td>68.804087</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-29</th>\n",
|
||
" <td>69.209999</td>\n",
|
||
" <td>69.519997</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.260002</td>\n",
|
||
" <td>4298400</td>\n",
|
||
" <td>68.754456</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-30</th>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>68.830002</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>6889500</td>\n",
|
||
" <td>68.615479</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1258 rows × 6 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close\n",
|
||
"Date \n",
|
||
"2012-01-03 59.970001 61.060001 59.869999 60.330002 12668800 52.619235\n",
|
||
"2012-01-04 60.209999 60.349998 59.470001 59.709999 9593300 52.078475\n",
|
||
"2012-01-05 59.349998 59.619999 58.369999 59.419998 12768200 51.825539\n",
|
||
"2012-01-06 59.419998 59.450001 58.869999 59.000000 8069400 51.459220\n",
|
||
"2012-01-09 59.029999 59.549999 58.919998 59.180000 6679300 51.616215\n",
|
||
"... ... ... ... ... ... ...\n",
|
||
"2016-12-23 69.430000 69.750000 69.360001 69.540001 4803900 69.032411\n",
|
||
"2016-12-27 69.300003 69.820000 69.250000 69.699997 4435700 69.191240\n",
|
||
"2016-12-28 69.940002 70.000000 69.260002 69.309998 4875700 68.804087\n",
|
||
"2016-12-29 69.209999 69.519997 69.120003 69.260002 4298400 68.754456\n",
|
||
"2016-12-30 69.120003 69.430000 68.830002 69.120003 6889500 68.615479\n",
|
||
"\n",
|
||
"[1258 rows x 6 columns]"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-29</th>\n",
|
||
" <td>60.770000</td>\n",
|
||
" <td>60.950001</td>\n",
|
||
" <td>60.619999</td>\n",
|
||
" <td>60.820000</td>\n",
|
||
" <td>6691700</td>\n",
|
||
" <td>53.401665</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-30</th>\n",
|
||
" <td>61.070000</td>\n",
|
||
" <td>61.419998</td>\n",
|
||
" <td>60.919998</td>\n",
|
||
" <td>61.200001</td>\n",
|
||
" <td>6941400</td>\n",
|
||
" <td>53.735316</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-02</th>\n",
|
||
" <td>61.080002</td>\n",
|
||
" <td>61.490002</td>\n",
|
||
" <td>60.970001</td>\n",
|
||
" <td>61.360001</td>\n",
|
||
" <td>6465900</td>\n",
|
||
" <td>53.875801</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close\n",
|
||
"Date \n",
|
||
"2012-03-29 60.770000 60.950001 60.619999 60.820000 6691700 53.401665\n",
|
||
"2012-03-30 61.070000 61.419998 60.919998 61.200001 6941400 53.735316\n",
|
||
"2012-04-02 61.080002 61.490002 60.970001 61.360001 6465900 53.875801"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df[\"2012-03-29\":\"2012-04-02\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"ename": "FileNotFoundError",
|
||
"evalue": "[Errno 2] No such file or directory: 'quarterly_data.csv'",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
||
"\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)",
|
||
"Cell \u001b[0;32mIn [8], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m df2 \u001b[38;5;241m=\u001b[39m \u001b[43mpd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mread_csv\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mquarterly_data.csv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mindex_col\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m \u001b[49m\u001b[38;5;241;43m0\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mparse_dates\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n",
|
||
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/util/_decorators.py:211\u001b[0m, in \u001b[0;36mdeprecate_kwarg.<locals>._deprecate_kwarg.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 209\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 210\u001b[0m kwargs[new_arg_name] \u001b[38;5;241m=\u001b[39m new_arg_value\n\u001b[0;32m--> 211\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/util/_decorators.py:331\u001b[0m, in \u001b[0;36mdeprecate_nonkeyword_arguments.<locals>.decorate.<locals>.wrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 325\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mlen\u001b[39m(args) \u001b[38;5;241m>\u001b[39m num_allow_args:\n\u001b[1;32m 326\u001b[0m warnings\u001b[38;5;241m.\u001b[39mwarn(\n\u001b[1;32m 327\u001b[0m msg\u001b[38;5;241m.\u001b[39mformat(arguments\u001b[38;5;241m=\u001b[39m_format_argument_list(allow_args)),\n\u001b[1;32m 328\u001b[0m \u001b[38;5;167;01mFutureWarning\u001b[39;00m,\n\u001b[1;32m 329\u001b[0m stacklevel\u001b[38;5;241m=\u001b[39mfind_stack_level(),\n\u001b[1;32m 330\u001b[0m )\n\u001b[0;32m--> 331\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunc\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/io/parsers/readers.py:950\u001b[0m, in \u001b[0;36mread_csv\u001b[0;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)\u001b[0m\n\u001b[1;32m 935\u001b[0m kwds_defaults \u001b[38;5;241m=\u001b[39m _refine_defaults_read(\n\u001b[1;32m 936\u001b[0m dialect,\n\u001b[1;32m 937\u001b[0m delimiter,\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 946\u001b[0m defaults\u001b[38;5;241m=\u001b[39m{\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdelimiter\u001b[39m\u001b[38;5;124m\"\u001b[39m: \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m,\u001b[39m\u001b[38;5;124m\"\u001b[39m},\n\u001b[1;32m 947\u001b[0m )\n\u001b[1;32m 948\u001b[0m kwds\u001b[38;5;241m.\u001b[39mupdate(kwds_defaults)\n\u001b[0;32m--> 950\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_read\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/io/parsers/readers.py:605\u001b[0m, in \u001b[0;36m_read\u001b[0;34m(filepath_or_buffer, kwds)\u001b[0m\n\u001b[1;32m 602\u001b[0m _validate_names(kwds\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnames\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28;01mNone\u001b[39;00m))\n\u001b[1;32m 604\u001b[0m \u001b[38;5;66;03m# Create the parser.\u001b[39;00m\n\u001b[0;32m--> 605\u001b[0m parser \u001b[38;5;241m=\u001b[39m \u001b[43mTextFileReader\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfilepath_or_buffer\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 607\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m chunksize \u001b[38;5;129;01mor\u001b[39;00m iterator:\n\u001b[1;32m 608\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m parser\n",
|
||
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/io/parsers/readers.py:1442\u001b[0m, in \u001b[0;36mTextFileReader.__init__\u001b[0;34m(self, f, engine, **kwds)\u001b[0m\n\u001b[1;32m 1439\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39moptions[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m] \u001b[38;5;241m=\u001b[39m kwds[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mhas_index_names\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 1441\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles: IOHandles \u001b[38;5;241m|\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m-> 1442\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_make_engine\u001b[49m\u001b[43m(\u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mengine\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/io/parsers/readers.py:1735\u001b[0m, in \u001b[0;36mTextFileReader._make_engine\u001b[0;34m(self, f, engine)\u001b[0m\n\u001b[1;32m 1733\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m mode:\n\u001b[1;32m 1734\u001b[0m mode \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m-> 1735\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;241m=\u001b[39m \u001b[43mget_handle\u001b[49m\u001b[43m(\u001b[49m\n\u001b[1;32m 1736\u001b[0m \u001b[43m \u001b[49m\u001b[43mf\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1737\u001b[0m \u001b[43m \u001b[49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1738\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1739\u001b[0m \u001b[43m \u001b[49m\u001b[43mcompression\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mcompression\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1740\u001b[0m \u001b[43m \u001b[49m\u001b[43mmemory_map\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mmemory_map\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mFalse\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1741\u001b[0m \u001b[43m \u001b[49m\u001b[43mis_text\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mis_text\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1742\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mencoding_errors\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstrict\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1743\u001b[0m \u001b[43m \u001b[49m\u001b[43mstorage_options\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43moptions\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mstorage_options\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43;01mNone\u001b[39;49;00m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 1744\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 1745\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 1746\u001b[0m f \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mhandles\u001b[38;5;241m.\u001b[39mhandle\n",
|
||
"File \u001b[0;32m~/.local/share/virtualenvs/Note-Vc8kZtnp/lib64/python3.11/site-packages/pandas/io/common.py:856\u001b[0m, in \u001b[0;36mget_handle\u001b[0;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001b[0m\n\u001b[1;32m 851\u001b[0m \u001b[38;5;28;01melif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(handle, \u001b[38;5;28mstr\u001b[39m):\n\u001b[1;32m 852\u001b[0m \u001b[38;5;66;03m# Check whether the filename is to be opened in binary mode.\u001b[39;00m\n\u001b[1;32m 853\u001b[0m \u001b[38;5;66;03m# Binary mode does not support 'encoding' and 'newline'.\u001b[39;00m\n\u001b[1;32m 854\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mencoding \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mb\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;129;01min\u001b[39;00m ioargs\u001b[38;5;241m.\u001b[39mmode:\n\u001b[1;32m 855\u001b[0m \u001b[38;5;66;03m# Encoding\u001b[39;00m\n\u001b[0;32m--> 856\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\n\u001b[1;32m 857\u001b[0m \u001b[43m \u001b[49m\u001b[43mhandle\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 858\u001b[0m \u001b[43m \u001b[49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mmode\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 859\u001b[0m \u001b[43m \u001b[49m\u001b[43mencoding\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mioargs\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mencoding\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 860\u001b[0m \u001b[43m \u001b[49m\u001b[43merrors\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43merrors\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 861\u001b[0m \u001b[43m \u001b[49m\u001b[43mnewline\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[1;32m 862\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 863\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[1;32m 864\u001b[0m \u001b[38;5;66;03m# Binary mode\u001b[39;00m\n\u001b[1;32m 865\u001b[0m handle \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mopen\u001b[39m(handle, ioargs\u001b[38;5;241m.\u001b[39mmode)\n",
|
||
"\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'quarterly_data.csv'"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"df2 = pd.read_csv(\"quarterly_data.csv\", index_col = 0, parse_dates=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-31</th>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-06-30</th>\n",
|
||
" <td>20</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-09-30</th>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-12-31</th>\n",
|
||
" <td>40</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-03-31</th>\n",
|
||
" <td>11</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-06-30</th>\n",
|
||
" <td>23</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-09-30</th>\n",
|
||
" <td>36</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-12-31</th>\n",
|
||
" <td>43</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-03-31</th>\n",
|
||
" <td>45</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-06-30</th>\n",
|
||
" <td>34</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-09-30</th>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-12-31</th>\n",
|
||
" <td>47</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-03-31</th>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-06-30</th>\n",
|
||
" <td>44</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-09-30</th>\n",
|
||
" <td>46</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-12-31</th>\n",
|
||
" <td>46</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-03-31</th>\n",
|
||
" <td>22</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-06-30</th>\n",
|
||
" <td>23</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-09-30</th>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-31</th>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" num\n",
|
||
"Date \n",
|
||
"2012-03-31 10\n",
|
||
"2012-06-30 20\n",
|
||
"2012-09-30 30\n",
|
||
"2012-12-31 40\n",
|
||
"2013-03-31 11\n",
|
||
"2013-06-30 23\n",
|
||
"2013-09-30 36\n",
|
||
"2013-12-31 43\n",
|
||
"2014-03-31 45\n",
|
||
"2014-06-30 34\n",
|
||
"2014-09-30 30\n",
|
||
"2014-12-31 47\n",
|
||
"2015-03-31 10\n",
|
||
"2015-06-30 44\n",
|
||
"2015-09-30 46\n",
|
||
"2015-12-31 46\n",
|
||
"2016-03-31 22\n",
|
||
"2016-06-30 23\n",
|
||
"2016-09-30 30\n",
|
||
"2016-12-31 30"
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df2"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Approach 1a - Quarterly timeframe, use the quarter end price"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-31</th>\n",
|
||
" <td>61.070000</td>\n",
|
||
" <td>61.419998</td>\n",
|
||
" <td>60.919998</td>\n",
|
||
" <td>61.200001</td>\n",
|
||
" <td>6941400</td>\n",
|
||
" <td>53.735316</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-06-30</th>\n",
|
||
" <td>68.940002</td>\n",
|
||
" <td>69.720001</td>\n",
|
||
" <td>68.559998</td>\n",
|
||
" <td>69.720001</td>\n",
|
||
" <td>10663400</td>\n",
|
||
" <td>61.631517</td>\n",
|
||
" <td>20</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-09-30</th>\n",
|
||
" <td>73.860001</td>\n",
|
||
" <td>74.059998</td>\n",
|
||
" <td>73.419998</td>\n",
|
||
" <td>73.800003</td>\n",
|
||
" <td>6021000</td>\n",
|
||
" <td>65.591003</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-12-31</th>\n",
|
||
" <td>67.489998</td>\n",
|
||
" <td>68.300003</td>\n",
|
||
" <td>67.370003</td>\n",
|
||
" <td>68.230003</td>\n",
|
||
" <td>7012500</td>\n",
|
||
" <td>60.977077</td>\n",
|
||
" <td>40</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-03-31</th>\n",
|
||
" <td>74.839996</td>\n",
|
||
" <td>74.970001</td>\n",
|
||
" <td>74.379997</td>\n",
|
||
" <td>74.830002</td>\n",
|
||
" <td>7368300</td>\n",
|
||
" <td>67.306943</td>\n",
|
||
" <td>11</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-06-30</th>\n",
|
||
" <td>75.110001</td>\n",
|
||
" <td>75.660004</td>\n",
|
||
" <td>74.449997</td>\n",
|
||
" <td>74.489998</td>\n",
|
||
" <td>14548300</td>\n",
|
||
" <td>67.402994</td>\n",
|
||
" <td>23</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-09-30</th>\n",
|
||
" <td>74.279999</td>\n",
|
||
" <td>74.599998</td>\n",
|
||
" <td>73.739998</td>\n",
|
||
" <td>73.959999</td>\n",
|
||
" <td>6752500</td>\n",
|
||
" <td>67.329800</td>\n",
|
||
" <td>36</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-12-31</th>\n",
|
||
" <td>78.660004</td>\n",
|
||
" <td>78.870003</td>\n",
|
||
" <td>78.349998</td>\n",
|
||
" <td>78.690002</td>\n",
|
||
" <td>3859100</td>\n",
|
||
" <td>72.052783</td>\n",
|
||
" <td>43</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-03-31</th>\n",
|
||
" <td>76.349998</td>\n",
|
||
" <td>76.779999</td>\n",
|
||
" <td>76.019997</td>\n",
|
||
" <td>76.430000</td>\n",
|
||
" <td>4695600</td>\n",
|
||
" <td>70.434908</td>\n",
|
||
" <td>45</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-06-30</th>\n",
|
||
" <td>75.400002</td>\n",
|
||
" <td>75.690002</td>\n",
|
||
" <td>74.940002</td>\n",
|
||
" <td>75.070000</td>\n",
|
||
" <td>6653800</td>\n",
|
||
" <td>69.609899</td>\n",
|
||
" <td>34</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-09-30</th>\n",
|
||
" <td>76.040001</td>\n",
|
||
" <td>76.720001</td>\n",
|
||
" <td>75.769997</td>\n",
|
||
" <td>76.470001</td>\n",
|
||
" <td>5640700</td>\n",
|
||
" <td>71.375215</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-12-31</th>\n",
|
||
" <td>87.080002</td>\n",
|
||
" <td>87.440002</td>\n",
|
||
" <td>85.860001</td>\n",
|
||
" <td>85.879997</td>\n",
|
||
" <td>4151400</td>\n",
|
||
" <td>80.606085</td>\n",
|
||
" <td>47</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-03-31</th>\n",
|
||
" <td>82.389999</td>\n",
|
||
" <td>83.040001</td>\n",
|
||
" <td>82.250000</td>\n",
|
||
" <td>82.250000</td>\n",
|
||
" <td>5587700</td>\n",
|
||
" <td>77.662694</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-06-30</th>\n",
|
||
" <td>71.809998</td>\n",
|
||
" <td>71.809998</td>\n",
|
||
" <td>70.779999</td>\n",
|
||
" <td>70.930000</td>\n",
|
||
" <td>11102600</td>\n",
|
||
" <td>67.396724</td>\n",
|
||
" <td>44</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-09-30</th>\n",
|
||
" <td>64.430000</td>\n",
|
||
" <td>64.940002</td>\n",
|
||
" <td>63.930000</td>\n",
|
||
" <td>64.839996</td>\n",
|
||
" <td>7979200</td>\n",
|
||
" <td>62.030780</td>\n",
|
||
" <td>46</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-12-31</th>\n",
|
||
" <td>61.330002</td>\n",
|
||
" <td>61.720001</td>\n",
|
||
" <td>61.169998</td>\n",
|
||
" <td>61.299999</td>\n",
|
||
" <td>6555100</td>\n",
|
||
" <td>59.135363</td>\n",
|
||
" <td>46</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-03-31</th>\n",
|
||
" <td>68.750000</td>\n",
|
||
" <td>69.190002</td>\n",
|
||
" <td>68.470001</td>\n",
|
||
" <td>68.489998</td>\n",
|
||
" <td>6283500</td>\n",
|
||
" <td>66.560595</td>\n",
|
||
" <td>22</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-06-30</th>\n",
|
||
" <td>72.570000</td>\n",
|
||
" <td>73.190002</td>\n",
|
||
" <td>72.320000</td>\n",
|
||
" <td>73.019997</td>\n",
|
||
" <td>8713600</td>\n",
|
||
" <td>71.482549</td>\n",
|
||
" <td>23</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-09-30</th>\n",
|
||
" <td>71.500000</td>\n",
|
||
" <td>72.459999</td>\n",
|
||
" <td>71.400002</td>\n",
|
||
" <td>72.120003</td>\n",
|
||
" <td>9982600</td>\n",
|
||
" <td>71.084814</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-31</th>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>68.830002</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>6889500</td>\n",
|
||
" <td>68.615479</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close \\\n",
|
||
"Date \n",
|
||
"2012-03-31 61.070000 61.419998 60.919998 61.200001 6941400 53.735316 \n",
|
||
"2012-06-30 68.940002 69.720001 68.559998 69.720001 10663400 61.631517 \n",
|
||
"2012-09-30 73.860001 74.059998 73.419998 73.800003 6021000 65.591003 \n",
|
||
"2012-12-31 67.489998 68.300003 67.370003 68.230003 7012500 60.977077 \n",
|
||
"2013-03-31 74.839996 74.970001 74.379997 74.830002 7368300 67.306943 \n",
|
||
"2013-06-30 75.110001 75.660004 74.449997 74.489998 14548300 67.402994 \n",
|
||
"2013-09-30 74.279999 74.599998 73.739998 73.959999 6752500 67.329800 \n",
|
||
"2013-12-31 78.660004 78.870003 78.349998 78.690002 3859100 72.052783 \n",
|
||
"2014-03-31 76.349998 76.779999 76.019997 76.430000 4695600 70.434908 \n",
|
||
"2014-06-30 75.400002 75.690002 74.940002 75.070000 6653800 69.609899 \n",
|
||
"2014-09-30 76.040001 76.720001 75.769997 76.470001 5640700 71.375215 \n",
|
||
"2014-12-31 87.080002 87.440002 85.860001 85.879997 4151400 80.606085 \n",
|
||
"2015-03-31 82.389999 83.040001 82.250000 82.250000 5587700 77.662694 \n",
|
||
"2015-06-30 71.809998 71.809998 70.779999 70.930000 11102600 67.396724 \n",
|
||
"2015-09-30 64.430000 64.940002 63.930000 64.839996 7979200 62.030780 \n",
|
||
"2015-12-31 61.330002 61.720001 61.169998 61.299999 6555100 59.135363 \n",
|
||
"2016-03-31 68.750000 69.190002 68.470001 68.489998 6283500 66.560595 \n",
|
||
"2016-06-30 72.570000 73.190002 72.320000 73.019997 8713600 71.482549 \n",
|
||
"2016-09-30 71.500000 72.459999 71.400002 72.120003 9982600 71.084814 \n",
|
||
"2016-12-31 69.120003 69.430000 68.830002 69.120003 6889500 68.615479 \n",
|
||
"\n",
|
||
" num \n",
|
||
"Date \n",
|
||
"2012-03-31 10 \n",
|
||
"2012-06-30 20 \n",
|
||
"2012-09-30 30 \n",
|
||
"2012-12-31 40 \n",
|
||
"2013-03-31 11 \n",
|
||
"2013-06-30 23 \n",
|
||
"2013-09-30 36 \n",
|
||
"2013-12-31 43 \n",
|
||
"2014-03-31 45 \n",
|
||
"2014-06-30 34 \n",
|
||
"2014-09-30 30 \n",
|
||
"2014-12-31 47 \n",
|
||
"2015-03-31 10 \n",
|
||
"2015-06-30 44 \n",
|
||
"2015-09-30 46 \n",
|
||
"2015-12-31 46 \n",
|
||
"2016-03-31 22 \n",
|
||
"2016-06-30 23 \n",
|
||
"2016-09-30 30 \n",
|
||
"2016-12-31 30 "
|
||
]
|
||
},
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.resample(rule='Q').last().join(df2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Approach 1b - Quarterly timeframe, use average price"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-31</th>\n",
|
||
" <td>60.462903</td>\n",
|
||
" <td>60.807258</td>\n",
|
||
" <td>60.160484</td>\n",
|
||
" <td>60.519516</td>\n",
|
||
" <td>8.850221e+06</td>\n",
|
||
" <td>52.881839</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-06-30</th>\n",
|
||
" <td>62.888889</td>\n",
|
||
" <td>63.400159</td>\n",
|
||
" <td>62.592222</td>\n",
|
||
" <td>63.057143</td>\n",
|
||
" <td>1.155795e+07</td>\n",
|
||
" <td>55.594392</td>\n",
|
||
" <td>20</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-09-30</th>\n",
|
||
" <td>73.081587</td>\n",
|
||
" <td>73.549682</td>\n",
|
||
" <td>72.717619</td>\n",
|
||
" <td>73.174921</td>\n",
|
||
" <td>7.871587e+06</td>\n",
|
||
" <td>64.891949</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-12-31</th>\n",
|
||
" <td>72.174678</td>\n",
|
||
" <td>72.623226</td>\n",
|
||
" <td>71.647741</td>\n",
|
||
" <td>72.079839</td>\n",
|
||
" <td>8.660958e+06</td>\n",
|
||
" <td>64.161672</td>\n",
|
||
" <td>40</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-03-31</th>\n",
|
||
" <td>70.898834</td>\n",
|
||
" <td>71.393000</td>\n",
|
||
" <td>70.552666</td>\n",
|
||
" <td>71.026000</td>\n",
|
||
" <td>8.482003e+06</td>\n",
|
||
" <td>63.581880</td>\n",
|
||
" <td>11</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-06-30</th>\n",
|
||
" <td>76.873906</td>\n",
|
||
" <td>77.417813</td>\n",
|
||
" <td>76.413281</td>\n",
|
||
" <td>76.885781</td>\n",
|
||
" <td>7.656086e+06</td>\n",
|
||
" <td>69.393600</td>\n",
|
||
" <td>23</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-09-30</th>\n",
|
||
" <td>75.637969</td>\n",
|
||
" <td>76.030469</td>\n",
|
||
" <td>75.213594</td>\n",
|
||
" <td>75.629063</td>\n",
|
||
" <td>5.796625e+06</td>\n",
|
||
" <td>68.676662</td>\n",
|
||
" <td>36</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-12-31</th>\n",
|
||
" <td>77.372656</td>\n",
|
||
" <td>77.805313</td>\n",
|
||
" <td>76.924531</td>\n",
|
||
" <td>77.472813</td>\n",
|
||
" <td>5.966927e+06</td>\n",
|
||
" <td>70.651242</td>\n",
|
||
" <td>43</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-03-31</th>\n",
|
||
" <td>75.339344</td>\n",
|
||
" <td>75.802787</td>\n",
|
||
" <td>74.863278</td>\n",
|
||
" <td>75.337213</td>\n",
|
||
" <td>7.050402e+06</td>\n",
|
||
" <td>69.106983</td>\n",
|
||
" <td>45</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-06-30</th>\n",
|
||
" <td>77.036508</td>\n",
|
||
" <td>77.391111</td>\n",
|
||
" <td>76.689524</td>\n",
|
||
" <td>77.066508</td>\n",
|
||
" <td>6.048765e+06</td>\n",
|
||
" <td>71.284646</td>\n",
|
||
" <td>34</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-09-30</th>\n",
|
||
" <td>75.674843</td>\n",
|
||
" <td>76.062501</td>\n",
|
||
" <td>75.375938</td>\n",
|
||
" <td>75.748593</td>\n",
|
||
" <td>5.550031e+06</td>\n",
|
||
" <td>70.520795</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-12-31</th>\n",
|
||
" <td>80.952969</td>\n",
|
||
" <td>81.607500</td>\n",
|
||
" <td>80.432344</td>\n",
|
||
" <td>81.059844</td>\n",
|
||
" <td>7.431025e+06</td>\n",
|
||
" <td>75.797780</td>\n",
|
||
" <td>47</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-03-31</th>\n",
|
||
" <td>85.096229</td>\n",
|
||
" <td>85.699017</td>\n",
|
||
" <td>84.491803</td>\n",
|
||
" <td>85.107213</td>\n",
|
||
" <td>7.209713e+06</td>\n",
|
||
" <td>79.994746</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-06-30</th>\n",
|
||
" <td>76.678730</td>\n",
|
||
" <td>77.066191</td>\n",
|
||
" <td>76.191111</td>\n",
|
||
" <td>76.492540</td>\n",
|
||
" <td>7.481765e+06</td>\n",
|
||
" <td>72.501821</td>\n",
|
||
" <td>44</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-09-30</th>\n",
|
||
" <td>68.884375</td>\n",
|
||
" <td>69.366094</td>\n",
|
||
" <td>68.328594</td>\n",
|
||
" <td>68.825313</td>\n",
|
||
" <td>8.883412e+06</td>\n",
|
||
" <td>65.666534</td>\n",
|
||
" <td>46</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-12-31</th>\n",
|
||
" <td>60.269688</td>\n",
|
||
" <td>60.780156</td>\n",
|
||
" <td>59.776563</td>\n",
|
||
" <td>60.193281</td>\n",
|
||
" <td>1.247800e+07</td>\n",
|
||
" <td>57.743235</td>\n",
|
||
" <td>46</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-03-31</th>\n",
|
||
" <td>65.564754</td>\n",
|
||
" <td>66.346065</td>\n",
|
||
" <td>65.015574</td>\n",
|
||
" <td>65.776557</td>\n",
|
||
" <td>1.198041e+07</td>\n",
|
||
" <td>63.580834</td>\n",
|
||
" <td>22</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-06-30</th>\n",
|
||
" <td>69.350000</td>\n",
|
||
" <td>69.857656</td>\n",
|
||
" <td>68.918906</td>\n",
|
||
" <td>69.438437</td>\n",
|
||
" <td>8.751062e+06</td>\n",
|
||
" <td>67.762903</td>\n",
|
||
" <td>23</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-09-30</th>\n",
|
||
" <td>72.808594</td>\n",
|
||
" <td>73.230938</td>\n",
|
||
" <td>72.371719</td>\n",
|
||
" <td>72.782812</td>\n",
|
||
" <td>8.236991e+06</td>\n",
|
||
" <td>71.530300</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-31</th>\n",
|
||
" <td>70.026985</td>\n",
|
||
" <td>70.478889</td>\n",
|
||
" <td>69.609048</td>\n",
|
||
" <td>70.021111</td>\n",
|
||
" <td>8.628798e+06</td>\n",
|
||
" <td>69.150314</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume \\\n",
|
||
"Date \n",
|
||
"2012-03-31 60.462903 60.807258 60.160484 60.519516 8.850221e+06 \n",
|
||
"2012-06-30 62.888889 63.400159 62.592222 63.057143 1.155795e+07 \n",
|
||
"2012-09-30 73.081587 73.549682 72.717619 73.174921 7.871587e+06 \n",
|
||
"2012-12-31 72.174678 72.623226 71.647741 72.079839 8.660958e+06 \n",
|
||
"2013-03-31 70.898834 71.393000 70.552666 71.026000 8.482003e+06 \n",
|
||
"2013-06-30 76.873906 77.417813 76.413281 76.885781 7.656086e+06 \n",
|
||
"2013-09-30 75.637969 76.030469 75.213594 75.629063 5.796625e+06 \n",
|
||
"2013-12-31 77.372656 77.805313 76.924531 77.472813 5.966927e+06 \n",
|
||
"2014-03-31 75.339344 75.802787 74.863278 75.337213 7.050402e+06 \n",
|
||
"2014-06-30 77.036508 77.391111 76.689524 77.066508 6.048765e+06 \n",
|
||
"2014-09-30 75.674843 76.062501 75.375938 75.748593 5.550031e+06 \n",
|
||
"2014-12-31 80.952969 81.607500 80.432344 81.059844 7.431025e+06 \n",
|
||
"2015-03-31 85.096229 85.699017 84.491803 85.107213 7.209713e+06 \n",
|
||
"2015-06-30 76.678730 77.066191 76.191111 76.492540 7.481765e+06 \n",
|
||
"2015-09-30 68.884375 69.366094 68.328594 68.825313 8.883412e+06 \n",
|
||
"2015-12-31 60.269688 60.780156 59.776563 60.193281 1.247800e+07 \n",
|
||
"2016-03-31 65.564754 66.346065 65.015574 65.776557 1.198041e+07 \n",
|
||
"2016-06-30 69.350000 69.857656 68.918906 69.438437 8.751062e+06 \n",
|
||
"2016-09-30 72.808594 73.230938 72.371719 72.782812 8.236991e+06 \n",
|
||
"2016-12-31 70.026985 70.478889 69.609048 70.021111 8.628798e+06 \n",
|
||
"\n",
|
||
" Adj Close num \n",
|
||
"Date \n",
|
||
"2012-03-31 52.881839 10 \n",
|
||
"2012-06-30 55.594392 20 \n",
|
||
"2012-09-30 64.891949 30 \n",
|
||
"2012-12-31 64.161672 40 \n",
|
||
"2013-03-31 63.581880 11 \n",
|
||
"2013-06-30 69.393600 23 \n",
|
||
"2013-09-30 68.676662 36 \n",
|
||
"2013-12-31 70.651242 43 \n",
|
||
"2014-03-31 69.106983 45 \n",
|
||
"2014-06-30 71.284646 34 \n",
|
||
"2014-09-30 70.520795 30 \n",
|
||
"2014-12-31 75.797780 47 \n",
|
||
"2015-03-31 79.994746 10 \n",
|
||
"2015-06-30 72.501821 44 \n",
|
||
"2015-09-30 65.666534 46 \n",
|
||
"2015-12-31 57.743235 46 \n",
|
||
"2016-03-31 63.580834 22 \n",
|
||
"2016-06-30 67.762903 23 \n",
|
||
"2016-09-30 71.530300 30 \n",
|
||
"2016-12-31 69.150314 30 "
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.resample(rule='Q').mean().join(df2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Open 6.046290e+01\n",
|
||
"High 6.080726e+01\n",
|
||
"Low 6.016048e+01\n",
|
||
"Close 6.051952e+01\n",
|
||
"Volume 8.850221e+06\n",
|
||
"Adj Close 5.288184e+01\n",
|
||
"dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df[\"2012-01-01\":\"2012-03-31\"].mean()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Can use other aggregation function"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-31</th>\n",
|
||
" <td>60.525002</td>\n",
|
||
" <td>60.925002</td>\n",
|
||
" <td>60.390000</td>\n",
|
||
" <td>60.725001</td>\n",
|
||
" <td>7506500.0</td>\n",
|
||
" <td>53.210409</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-06-30</th>\n",
|
||
" <td>61.700001</td>\n",
|
||
" <td>62.490002</td>\n",
|
||
" <td>61.549999</td>\n",
|
||
" <td>62.060001</td>\n",
|
||
" <td>10036900.0</td>\n",
|
||
" <td>54.524268</td>\n",
|
||
" <td>20</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-09-30</th>\n",
|
||
" <td>73.050003</td>\n",
|
||
" <td>73.949997</td>\n",
|
||
" <td>72.940002</td>\n",
|
||
" <td>73.510002</td>\n",
|
||
" <td>7407400.0</td>\n",
|
||
" <td>65.235495</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-12-31</th>\n",
|
||
" <td>72.095001</td>\n",
|
||
" <td>72.594997</td>\n",
|
||
" <td>71.619999</td>\n",
|
||
" <td>72.135002</td>\n",
|
||
" <td>7439350.0</td>\n",
|
||
" <td>64.182305</td>\n",
|
||
" <td>40</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-03-31</th>\n",
|
||
" <td>70.490002</td>\n",
|
||
" <td>71.329998</td>\n",
|
||
" <td>70.370002</td>\n",
|
||
" <td>70.774998</td>\n",
|
||
" <td>7102200.0</td>\n",
|
||
" <td>63.251536</td>\n",
|
||
" <td>11</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-06-30</th>\n",
|
||
" <td>77.215000</td>\n",
|
||
" <td>77.850003</td>\n",
|
||
" <td>76.680001</td>\n",
|
||
" <td>77.299999</td>\n",
|
||
" <td>7244050.0</td>\n",
|
||
" <td>69.646462</td>\n",
|
||
" <td>23</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-09-30</th>\n",
|
||
" <td>75.534999</td>\n",
|
||
" <td>76.439999</td>\n",
|
||
" <td>75.049999</td>\n",
|
||
" <td>75.790001</td>\n",
|
||
" <td>5459000.0</td>\n",
|
||
" <td>68.995750</td>\n",
|
||
" <td>36</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2013-12-31</th>\n",
|
||
" <td>77.735000</td>\n",
|
||
" <td>78.104999</td>\n",
|
||
" <td>77.275002</td>\n",
|
||
" <td>77.905002</td>\n",
|
||
" <td>5887050.0</td>\n",
|
||
" <td>71.168100</td>\n",
|
||
" <td>43</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-03-31</th>\n",
|
||
" <td>74.839996</td>\n",
|
||
" <td>75.330002</td>\n",
|
||
" <td>74.449997</td>\n",
|
||
" <td>74.919998</td>\n",
|
||
" <td>6511200.0</td>\n",
|
||
" <td>68.793051</td>\n",
|
||
" <td>45</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-06-30</th>\n",
|
||
" <td>77.000000</td>\n",
|
||
" <td>77.379997</td>\n",
|
||
" <td>76.540001</td>\n",
|
||
" <td>77.010002</td>\n",
|
||
" <td>5652300.0</td>\n",
|
||
" <td>71.186249</td>\n",
|
||
" <td>34</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-09-30</th>\n",
|
||
" <td>75.904999</td>\n",
|
||
" <td>76.215000</td>\n",
|
||
" <td>75.625000</td>\n",
|
||
" <td>75.935001</td>\n",
|
||
" <td>4979900.0</td>\n",
|
||
" <td>70.777852</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2014-12-31</th>\n",
|
||
" <td>81.770001</td>\n",
|
||
" <td>83.105000</td>\n",
|
||
" <td>81.479999</td>\n",
|
||
" <td>82.950001</td>\n",
|
||
" <td>6778750.0</td>\n",
|
||
" <td>77.423487</td>\n",
|
||
" <td>47</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-03-31</th>\n",
|
||
" <td>85.430000</td>\n",
|
||
" <td>85.970001</td>\n",
|
||
" <td>84.900002</td>\n",
|
||
" <td>85.650002</td>\n",
|
||
" <td>6505700.0</td>\n",
|
||
" <td>80.390214</td>\n",
|
||
" <td>10</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-06-30</th>\n",
|
||
" <td>77.830002</td>\n",
|
||
" <td>78.360001</td>\n",
|
||
" <td>77.300003</td>\n",
|
||
" <td>77.879997</td>\n",
|
||
" <td>6815000.0</td>\n",
|
||
" <td>73.536418</td>\n",
|
||
" <td>44</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-09-30</th>\n",
|
||
" <td>71.314999</td>\n",
|
||
" <td>71.700001</td>\n",
|
||
" <td>70.685001</td>\n",
|
||
" <td>71.314999</td>\n",
|
||
" <td>7721700.0</td>\n",
|
||
" <td>67.919326</td>\n",
|
||
" <td>46</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2015-12-31</th>\n",
|
||
" <td>59.405000</td>\n",
|
||
" <td>60.220001</td>\n",
|
||
" <td>59.000000</td>\n",
|
||
" <td>59.555000</td>\n",
|
||
" <td>10406450.0</td>\n",
|
||
" <td>57.309593</td>\n",
|
||
" <td>46</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-03-31</th>\n",
|
||
" <td>66.139999</td>\n",
|
||
" <td>66.669998</td>\n",
|
||
" <td>65.500000</td>\n",
|
||
" <td>66.339996</td>\n",
|
||
" <td>11360500.0</td>\n",
|
||
" <td>63.997387</td>\n",
|
||
" <td>22</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-06-30</th>\n",
|
||
" <td>69.479999</td>\n",
|
||
" <td>69.895001</td>\n",
|
||
" <td>68.965000</td>\n",
|
||
" <td>69.444999</td>\n",
|
||
" <td>7437400.0</td>\n",
|
||
" <td>67.627985</td>\n",
|
||
" <td>23</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-09-30</th>\n",
|
||
" <td>72.959999</td>\n",
|
||
" <td>73.279999</td>\n",
|
||
" <td>72.459999</td>\n",
|
||
" <td>72.935001</td>\n",
|
||
" <td>7381850.0</td>\n",
|
||
" <td>71.712602</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-31</th>\n",
|
||
" <td>69.940002</td>\n",
|
||
" <td>70.389999</td>\n",
|
||
" <td>69.470001</td>\n",
|
||
" <td>69.940002</td>\n",
|
||
" <td>7621300.0</td>\n",
|
||
" <td>69.032411</td>\n",
|
||
" <td>30</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close \\\n",
|
||
"Date \n",
|
||
"2012-03-31 60.525002 60.925002 60.390000 60.725001 7506500.0 53.210409 \n",
|
||
"2012-06-30 61.700001 62.490002 61.549999 62.060001 10036900.0 54.524268 \n",
|
||
"2012-09-30 73.050003 73.949997 72.940002 73.510002 7407400.0 65.235495 \n",
|
||
"2012-12-31 72.095001 72.594997 71.619999 72.135002 7439350.0 64.182305 \n",
|
||
"2013-03-31 70.490002 71.329998 70.370002 70.774998 7102200.0 63.251536 \n",
|
||
"2013-06-30 77.215000 77.850003 76.680001 77.299999 7244050.0 69.646462 \n",
|
||
"2013-09-30 75.534999 76.439999 75.049999 75.790001 5459000.0 68.995750 \n",
|
||
"2013-12-31 77.735000 78.104999 77.275002 77.905002 5887050.0 71.168100 \n",
|
||
"2014-03-31 74.839996 75.330002 74.449997 74.919998 6511200.0 68.793051 \n",
|
||
"2014-06-30 77.000000 77.379997 76.540001 77.010002 5652300.0 71.186249 \n",
|
||
"2014-09-30 75.904999 76.215000 75.625000 75.935001 4979900.0 70.777852 \n",
|
||
"2014-12-31 81.770001 83.105000 81.479999 82.950001 6778750.0 77.423487 \n",
|
||
"2015-03-31 85.430000 85.970001 84.900002 85.650002 6505700.0 80.390214 \n",
|
||
"2015-06-30 77.830002 78.360001 77.300003 77.879997 6815000.0 73.536418 \n",
|
||
"2015-09-30 71.314999 71.700001 70.685001 71.314999 7721700.0 67.919326 \n",
|
||
"2015-12-31 59.405000 60.220001 59.000000 59.555000 10406450.0 57.309593 \n",
|
||
"2016-03-31 66.139999 66.669998 65.500000 66.339996 11360500.0 63.997387 \n",
|
||
"2016-06-30 69.479999 69.895001 68.965000 69.444999 7437400.0 67.627985 \n",
|
||
"2016-09-30 72.959999 73.279999 72.459999 72.935001 7381850.0 71.712602 \n",
|
||
"2016-12-31 69.940002 70.389999 69.470001 69.940002 7621300.0 69.032411 \n",
|
||
"\n",
|
||
" num \n",
|
||
"Date \n",
|
||
"2012-03-31 10 \n",
|
||
"2012-06-30 20 \n",
|
||
"2012-09-30 30 \n",
|
||
"2012-12-31 40 \n",
|
||
"2013-03-31 11 \n",
|
||
"2013-06-30 23 \n",
|
||
"2013-09-30 36 \n",
|
||
"2013-12-31 43 \n",
|
||
"2014-03-31 45 \n",
|
||
"2014-06-30 34 \n",
|
||
"2014-09-30 30 \n",
|
||
"2014-12-31 47 \n",
|
||
"2015-03-31 10 \n",
|
||
"2015-06-30 44 \n",
|
||
"2015-09-30 46 \n",
|
||
"2015-12-31 46 \n",
|
||
"2016-03-31 22 \n",
|
||
"2016-06-30 23 \n",
|
||
"2016-09-30 30 \n",
|
||
"2016-12-31 30 "
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.resample(rule='Q').median().join(df2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"# Approach 2 - use Daily timeframe, forward fill value"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"first a wrong way of doing it, because the stock data doesn't have date of weekend"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-03</th>\n",
|
||
" <td>59.970001</td>\n",
|
||
" <td>61.060001</td>\n",
|
||
" <td>59.869999</td>\n",
|
||
" <td>60.330002</td>\n",
|
||
" <td>12668800</td>\n",
|
||
" <td>52.619235</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-04</th>\n",
|
||
" <td>60.209999</td>\n",
|
||
" <td>60.349998</td>\n",
|
||
" <td>59.470001</td>\n",
|
||
" <td>59.709999</td>\n",
|
||
" <td>9593300</td>\n",
|
||
" <td>52.078475</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-05</th>\n",
|
||
" <td>59.349998</td>\n",
|
||
" <td>59.619999</td>\n",
|
||
" <td>58.369999</td>\n",
|
||
" <td>59.419998</td>\n",
|
||
" <td>12768200</td>\n",
|
||
" <td>51.825539</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-06</th>\n",
|
||
" <td>59.419998</td>\n",
|
||
" <td>59.450001</td>\n",
|
||
" <td>58.869999</td>\n",
|
||
" <td>59.000000</td>\n",
|
||
" <td>8069400</td>\n",
|
||
" <td>51.459220</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-09</th>\n",
|
||
" <td>59.029999</td>\n",
|
||
" <td>59.549999</td>\n",
|
||
" <td>58.919998</td>\n",
|
||
" <td>59.180000</td>\n",
|
||
" <td>6679300</td>\n",
|
||
" <td>51.616215</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-23</th>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>69.750000</td>\n",
|
||
" <td>69.360001</td>\n",
|
||
" <td>69.540001</td>\n",
|
||
" <td>4803900</td>\n",
|
||
" <td>69.032411</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-27</th>\n",
|
||
" <td>69.300003</td>\n",
|
||
" <td>69.820000</td>\n",
|
||
" <td>69.250000</td>\n",
|
||
" <td>69.699997</td>\n",
|
||
" <td>4435700</td>\n",
|
||
" <td>69.191240</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-28</th>\n",
|
||
" <td>69.940002</td>\n",
|
||
" <td>70.000000</td>\n",
|
||
" <td>69.260002</td>\n",
|
||
" <td>69.309998</td>\n",
|
||
" <td>4875700</td>\n",
|
||
" <td>68.804087</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-29</th>\n",
|
||
" <td>69.209999</td>\n",
|
||
" <td>69.519997</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.260002</td>\n",
|
||
" <td>4298400</td>\n",
|
||
" <td>68.754456</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-30</th>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>68.830002</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>6889500</td>\n",
|
||
" <td>68.615479</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1258 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close \\\n",
|
||
"Date \n",
|
||
"2012-01-03 59.970001 61.060001 59.869999 60.330002 12668800 52.619235 \n",
|
||
"2012-01-04 60.209999 60.349998 59.470001 59.709999 9593300 52.078475 \n",
|
||
"2012-01-05 59.349998 59.619999 58.369999 59.419998 12768200 51.825539 \n",
|
||
"2012-01-06 59.419998 59.450001 58.869999 59.000000 8069400 51.459220 \n",
|
||
"2012-01-09 59.029999 59.549999 58.919998 59.180000 6679300 51.616215 \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2016-12-23 69.430000 69.750000 69.360001 69.540001 4803900 69.032411 \n",
|
||
"2016-12-27 69.300003 69.820000 69.250000 69.699997 4435700 69.191240 \n",
|
||
"2016-12-28 69.940002 70.000000 69.260002 69.309998 4875700 68.804087 \n",
|
||
"2016-12-29 69.209999 69.519997 69.120003 69.260002 4298400 68.754456 \n",
|
||
"2016-12-30 69.120003 69.430000 68.830002 69.120003 6889500 68.615479 \n",
|
||
"\n",
|
||
" num \n",
|
||
"Date \n",
|
||
"2012-01-03 NaN \n",
|
||
"2012-01-04 NaN \n",
|
||
"2012-01-05 NaN \n",
|
||
"2012-01-06 NaN \n",
|
||
"2012-01-09 NaN \n",
|
||
"... ... \n",
|
||
"2016-12-23 NaN \n",
|
||
"2016-12-27 NaN \n",
|
||
"2016-12-28 NaN \n",
|
||
"2016-12-29 NaN \n",
|
||
"2016-12-30 NaN \n",
|
||
"\n",
|
||
"[1258 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.join(df2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"ffill_df = df.join(df2).fillna(method=\"ffill\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-03</th>\n",
|
||
" <td>59.970001</td>\n",
|
||
" <td>61.060001</td>\n",
|
||
" <td>59.869999</td>\n",
|
||
" <td>60.330002</td>\n",
|
||
" <td>12668800</td>\n",
|
||
" <td>52.619235</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-04</th>\n",
|
||
" <td>60.209999</td>\n",
|
||
" <td>60.349998</td>\n",
|
||
" <td>59.470001</td>\n",
|
||
" <td>59.709999</td>\n",
|
||
" <td>9593300</td>\n",
|
||
" <td>52.078475</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-05</th>\n",
|
||
" <td>59.349998</td>\n",
|
||
" <td>59.619999</td>\n",
|
||
" <td>58.369999</td>\n",
|
||
" <td>59.419998</td>\n",
|
||
" <td>12768200</td>\n",
|
||
" <td>51.825539</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-06</th>\n",
|
||
" <td>59.419998</td>\n",
|
||
" <td>59.450001</td>\n",
|
||
" <td>58.869999</td>\n",
|
||
" <td>59.000000</td>\n",
|
||
" <td>8069400</td>\n",
|
||
" <td>51.459220</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-01-09</th>\n",
|
||
" <td>59.029999</td>\n",
|
||
" <td>59.549999</td>\n",
|
||
" <td>58.919998</td>\n",
|
||
" <td>59.180000</td>\n",
|
||
" <td>6679300</td>\n",
|
||
" <td>51.616215</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-23</th>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>69.750000</td>\n",
|
||
" <td>69.360001</td>\n",
|
||
" <td>69.540001</td>\n",
|
||
" <td>4803900</td>\n",
|
||
" <td>69.032411</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-27</th>\n",
|
||
" <td>69.300003</td>\n",
|
||
" <td>69.820000</td>\n",
|
||
" <td>69.250000</td>\n",
|
||
" <td>69.699997</td>\n",
|
||
" <td>4435700</td>\n",
|
||
" <td>69.191240</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-28</th>\n",
|
||
" <td>69.940002</td>\n",
|
||
" <td>70.000000</td>\n",
|
||
" <td>69.260002</td>\n",
|
||
" <td>69.309998</td>\n",
|
||
" <td>4875700</td>\n",
|
||
" <td>68.804087</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-29</th>\n",
|
||
" <td>69.209999</td>\n",
|
||
" <td>69.519997</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.260002</td>\n",
|
||
" <td>4298400</td>\n",
|
||
" <td>68.754456</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-30</th>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>68.830002</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>6889500</td>\n",
|
||
" <td>68.615479</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1258 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close \\\n",
|
||
"Date \n",
|
||
"2012-01-03 59.970001 61.060001 59.869999 60.330002 12668800 52.619235 \n",
|
||
"2012-01-04 60.209999 60.349998 59.470001 59.709999 9593300 52.078475 \n",
|
||
"2012-01-05 59.349998 59.619999 58.369999 59.419998 12768200 51.825539 \n",
|
||
"2012-01-06 59.419998 59.450001 58.869999 59.000000 8069400 51.459220 \n",
|
||
"2012-01-09 59.029999 59.549999 58.919998 59.180000 6679300 51.616215 \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2016-12-23 69.430000 69.750000 69.360001 69.540001 4803900 69.032411 \n",
|
||
"2016-12-27 69.300003 69.820000 69.250000 69.699997 4435700 69.191240 \n",
|
||
"2016-12-28 69.940002 70.000000 69.260002 69.309998 4875700 68.804087 \n",
|
||
"2016-12-29 69.209999 69.519997 69.120003 69.260002 4298400 68.754456 \n",
|
||
"2016-12-30 69.120003 69.430000 68.830002 69.120003 6889500 68.615479 \n",
|
||
"\n",
|
||
" num \n",
|
||
"Date \n",
|
||
"2012-01-03 NaN \n",
|
||
"2012-01-04 NaN \n",
|
||
"2012-01-05 NaN \n",
|
||
"2012-01-06 NaN \n",
|
||
"2012-01-09 NaN \n",
|
||
"... ... \n",
|
||
"2016-12-23 30.0 \n",
|
||
"2016-12-27 30.0 \n",
|
||
"2016-12-28 30.0 \n",
|
||
"2016-12-29 30.0 \n",
|
||
"2016-12-30 30.0 \n",
|
||
"\n",
|
||
"[1258 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ffill_df"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>Date</th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" <th></th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-28</th>\n",
|
||
" <td>61.150002</td>\n",
|
||
" <td>61.480000</td>\n",
|
||
" <td>60.980000</td>\n",
|
||
" <td>61.189999</td>\n",
|
||
" <td>7124000</td>\n",
|
||
" <td>53.726534</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-29</th>\n",
|
||
" <td>60.770000</td>\n",
|
||
" <td>60.950001</td>\n",
|
||
" <td>60.619999</td>\n",
|
||
" <td>60.820000</td>\n",
|
||
" <td>6691700</td>\n",
|
||
" <td>53.401665</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-30</th>\n",
|
||
" <td>61.070000</td>\n",
|
||
" <td>61.419998</td>\n",
|
||
" <td>60.919998</td>\n",
|
||
" <td>61.200001</td>\n",
|
||
" <td>6941400</td>\n",
|
||
" <td>53.735316</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-02</th>\n",
|
||
" <td>61.080002</td>\n",
|
||
" <td>61.490002</td>\n",
|
||
" <td>60.970001</td>\n",
|
||
" <td>61.360001</td>\n",
|
||
" <td>6465900</td>\n",
|
||
" <td>53.875801</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-03</th>\n",
|
||
" <td>61.139999</td>\n",
|
||
" <td>61.410000</td>\n",
|
||
" <td>60.240002</td>\n",
|
||
" <td>60.650002</td>\n",
|
||
" <td>11180100</td>\n",
|
||
" <td>53.252402</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close \\\n",
|
||
"Date \n",
|
||
"2012-03-28 61.150002 61.480000 60.980000 61.189999 7124000 53.726534 \n",
|
||
"2012-03-29 60.770000 60.950001 60.619999 60.820000 6691700 53.401665 \n",
|
||
"2012-03-30 61.070000 61.419998 60.919998 61.200001 6941400 53.735316 \n",
|
||
"2012-04-02 61.080002 61.490002 60.970001 61.360001 6465900 53.875801 \n",
|
||
"2012-04-03 61.139999 61.410000 60.240002 60.650002 11180100 53.252402 \n",
|
||
"\n",
|
||
" num \n",
|
||
"Date \n",
|
||
"2012-03-28 NaN \n",
|
||
"2012-03-29 NaN \n",
|
||
"2012-03-30 NaN \n",
|
||
"2012-04-02 NaN \n",
|
||
"2012-04-03 NaN "
|
||
]
|
||
},
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ffill_df[\"2012-03-28\":\"2012-04-03\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "markdown",
|
||
"metadata": {},
|
||
"source": [
|
||
"One way to solve the problem (there are many other way to fix it)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"df_all_date = df.reindex(pd.date_range(\"2012-01-03\", \"2016-12-31\"))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Open NaN\n",
|
||
"High NaN\n",
|
||
"Low NaN\n",
|
||
"Close NaN\n",
|
||
"Volume NaN\n",
|
||
"Adj Close NaN\n",
|
||
"Name: 2012-03-31 00:00:00, dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df_all_date.loc[\"2012-03-31\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"ffill_df = df_all_date.join(df2)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-28</th>\n",
|
||
" <td>61.150002</td>\n",
|
||
" <td>61.480000</td>\n",
|
||
" <td>60.980000</td>\n",
|
||
" <td>61.189999</td>\n",
|
||
" <td>7124000.0</td>\n",
|
||
" <td>53.726534</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-29</th>\n",
|
||
" <td>60.770000</td>\n",
|
||
" <td>60.950001</td>\n",
|
||
" <td>60.619999</td>\n",
|
||
" <td>60.820000</td>\n",
|
||
" <td>6691700.0</td>\n",
|
||
" <td>53.401665</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-30</th>\n",
|
||
" <td>61.070000</td>\n",
|
||
" <td>61.419998</td>\n",
|
||
" <td>60.919998</td>\n",
|
||
" <td>61.200001</td>\n",
|
||
" <td>6941400.0</td>\n",
|
||
" <td>53.735316</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-31</th>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-01</th>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-02</th>\n",
|
||
" <td>61.080002</td>\n",
|
||
" <td>61.490002</td>\n",
|
||
" <td>60.970001</td>\n",
|
||
" <td>61.360001</td>\n",
|
||
" <td>6465900.0</td>\n",
|
||
" <td>53.875801</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-03</th>\n",
|
||
" <td>61.139999</td>\n",
|
||
" <td>61.410000</td>\n",
|
||
" <td>60.240002</td>\n",
|
||
" <td>60.650002</td>\n",
|
||
" <td>11180100.0</td>\n",
|
||
" <td>53.252402</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-04</th>\n",
|
||
" <td>60.529999</td>\n",
|
||
" <td>60.590000</td>\n",
|
||
" <td>60.020000</td>\n",
|
||
" <td>60.259998</td>\n",
|
||
" <td>10851700.0</td>\n",
|
||
" <td>52.909968</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-05</th>\n",
|
||
" <td>60.200001</td>\n",
|
||
" <td>60.689999</td>\n",
|
||
" <td>60.070000</td>\n",
|
||
" <td>60.669998</td>\n",
|
||
" <td>6528700.0</td>\n",
|
||
" <td>53.269959</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close \\\n",
|
||
"2012-03-28 61.150002 61.480000 60.980000 61.189999 7124000.0 53.726534 \n",
|
||
"2012-03-29 60.770000 60.950001 60.619999 60.820000 6691700.0 53.401665 \n",
|
||
"2012-03-30 61.070000 61.419998 60.919998 61.200001 6941400.0 53.735316 \n",
|
||
"2012-03-31 NaN NaN NaN NaN NaN NaN \n",
|
||
"2012-04-01 NaN NaN NaN NaN NaN NaN \n",
|
||
"2012-04-02 61.080002 61.490002 60.970001 61.360001 6465900.0 53.875801 \n",
|
||
"2012-04-03 61.139999 61.410000 60.240002 60.650002 11180100.0 53.252402 \n",
|
||
"2012-04-04 60.529999 60.590000 60.020000 60.259998 10851700.0 52.909968 \n",
|
||
"2012-04-05 60.200001 60.689999 60.070000 60.669998 6528700.0 53.269959 \n",
|
||
"\n",
|
||
" num \n",
|
||
"2012-03-28 NaN \n",
|
||
"2012-03-29 NaN \n",
|
||
"2012-03-30 NaN \n",
|
||
"2012-03-31 10.0 \n",
|
||
"2012-04-01 NaN \n",
|
||
"2012-04-02 NaN \n",
|
||
"2012-04-03 NaN \n",
|
||
"2012-04-04 NaN \n",
|
||
"2012-04-05 NaN "
|
||
]
|
||
},
|
||
"execution_count": 20,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ffill_df.loc[\"2012-03-28\":\"2012-04-05\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 21,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"ffill_df[\"num\"] = ffill_df[\"num\"].fillna(method=\"ffill\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-28</th>\n",
|
||
" <td>61.150002</td>\n",
|
||
" <td>61.480000</td>\n",
|
||
" <td>60.980000</td>\n",
|
||
" <td>61.189999</td>\n",
|
||
" <td>7124000.0</td>\n",
|
||
" <td>53.726534</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-29</th>\n",
|
||
" <td>60.770000</td>\n",
|
||
" <td>60.950001</td>\n",
|
||
" <td>60.619999</td>\n",
|
||
" <td>60.820000</td>\n",
|
||
" <td>6691700.0</td>\n",
|
||
" <td>53.401665</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-30</th>\n",
|
||
" <td>61.070000</td>\n",
|
||
" <td>61.419998</td>\n",
|
||
" <td>60.919998</td>\n",
|
||
" <td>61.200001</td>\n",
|
||
" <td>6941400.0</td>\n",
|
||
" <td>53.735316</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-03-31</th>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-01</th>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-02</th>\n",
|
||
" <td>61.080002</td>\n",
|
||
" <td>61.490002</td>\n",
|
||
" <td>60.970001</td>\n",
|
||
" <td>61.360001</td>\n",
|
||
" <td>6465900.0</td>\n",
|
||
" <td>53.875801</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-03</th>\n",
|
||
" <td>61.139999</td>\n",
|
||
" <td>61.410000</td>\n",
|
||
" <td>60.240002</td>\n",
|
||
" <td>60.650002</td>\n",
|
||
" <td>11180100.0</td>\n",
|
||
" <td>53.252402</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close \\\n",
|
||
"2012-03-28 61.150002 61.480000 60.980000 61.189999 7124000.0 53.726534 \n",
|
||
"2012-03-29 60.770000 60.950001 60.619999 60.820000 6691700.0 53.401665 \n",
|
||
"2012-03-30 61.070000 61.419998 60.919998 61.200001 6941400.0 53.735316 \n",
|
||
"2012-03-31 NaN NaN NaN NaN NaN NaN \n",
|
||
"2012-04-01 NaN NaN NaN NaN NaN NaN \n",
|
||
"2012-04-02 61.080002 61.490002 60.970001 61.360001 6465900.0 53.875801 \n",
|
||
"2012-04-03 61.139999 61.410000 60.240002 60.650002 11180100.0 53.252402 \n",
|
||
"\n",
|
||
" num \n",
|
||
"2012-03-28 NaN \n",
|
||
"2012-03-29 NaN \n",
|
||
"2012-03-30 NaN \n",
|
||
"2012-03-31 10.0 \n",
|
||
"2012-04-01 10.0 \n",
|
||
"2012-04-02 10.0 \n",
|
||
"2012-04-03 10.0 "
|
||
]
|
||
},
|
||
"execution_count": 22,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ffill_df[\"2012-03-28\":\"2012-04-03\"]"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>Open</th>\n",
|
||
" <th>High</th>\n",
|
||
" <th>Low</th>\n",
|
||
" <th>Close</th>\n",
|
||
" <th>Volume</th>\n",
|
||
" <th>Adj Close</th>\n",
|
||
" <th>num</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-02</th>\n",
|
||
" <td>61.080002</td>\n",
|
||
" <td>61.490002</td>\n",
|
||
" <td>60.970001</td>\n",
|
||
" <td>61.360001</td>\n",
|
||
" <td>6465900.0</td>\n",
|
||
" <td>53.875801</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-03</th>\n",
|
||
" <td>61.139999</td>\n",
|
||
" <td>61.410000</td>\n",
|
||
" <td>60.240002</td>\n",
|
||
" <td>60.650002</td>\n",
|
||
" <td>11180100.0</td>\n",
|
||
" <td>53.252402</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-04</th>\n",
|
||
" <td>60.529999</td>\n",
|
||
" <td>60.590000</td>\n",
|
||
" <td>60.020000</td>\n",
|
||
" <td>60.259998</td>\n",
|
||
" <td>10851700.0</td>\n",
|
||
" <td>52.909968</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-05</th>\n",
|
||
" <td>60.200001</td>\n",
|
||
" <td>60.689999</td>\n",
|
||
" <td>60.070000</td>\n",
|
||
" <td>60.669998</td>\n",
|
||
" <td>6528700.0</td>\n",
|
||
" <td>53.269959</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2012-04-09</th>\n",
|
||
" <td>60.220001</td>\n",
|
||
" <td>60.340000</td>\n",
|
||
" <td>60.080002</td>\n",
|
||
" <td>60.130001</td>\n",
|
||
" <td>6831700.0</td>\n",
|
||
" <td>52.795827</td>\n",
|
||
" <td>10.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-23</th>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>69.750000</td>\n",
|
||
" <td>69.360001</td>\n",
|
||
" <td>69.540001</td>\n",
|
||
" <td>4803900.0</td>\n",
|
||
" <td>69.032411</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-27</th>\n",
|
||
" <td>69.300003</td>\n",
|
||
" <td>69.820000</td>\n",
|
||
" <td>69.250000</td>\n",
|
||
" <td>69.699997</td>\n",
|
||
" <td>4435700.0</td>\n",
|
||
" <td>69.191240</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-28</th>\n",
|
||
" <td>69.940002</td>\n",
|
||
" <td>70.000000</td>\n",
|
||
" <td>69.260002</td>\n",
|
||
" <td>69.309998</td>\n",
|
||
" <td>4875700.0</td>\n",
|
||
" <td>68.804087</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-29</th>\n",
|
||
" <td>69.209999</td>\n",
|
||
" <td>69.519997</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.260002</td>\n",
|
||
" <td>4298400.0</td>\n",
|
||
" <td>68.754456</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2016-12-30</th>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>69.430000</td>\n",
|
||
" <td>68.830002</td>\n",
|
||
" <td>69.120003</td>\n",
|
||
" <td>6889500.0</td>\n",
|
||
" <td>68.615479</td>\n",
|
||
" <td>30.0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1196 rows × 7 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" Open High Low Close Volume Adj Close \\\n",
|
||
"2012-04-02 61.080002 61.490002 60.970001 61.360001 6465900.0 53.875801 \n",
|
||
"2012-04-03 61.139999 61.410000 60.240002 60.650002 11180100.0 53.252402 \n",
|
||
"2012-04-04 60.529999 60.590000 60.020000 60.259998 10851700.0 52.909968 \n",
|
||
"2012-04-05 60.200001 60.689999 60.070000 60.669998 6528700.0 53.269959 \n",
|
||
"2012-04-09 60.220001 60.340000 60.080002 60.130001 6831700.0 52.795827 \n",
|
||
"... ... ... ... ... ... ... \n",
|
||
"2016-12-23 69.430000 69.750000 69.360001 69.540001 4803900.0 69.032411 \n",
|
||
"2016-12-27 69.300003 69.820000 69.250000 69.699997 4435700.0 69.191240 \n",
|
||
"2016-12-28 69.940002 70.000000 69.260002 69.309998 4875700.0 68.804087 \n",
|
||
"2016-12-29 69.209999 69.519997 69.120003 69.260002 4298400.0 68.754456 \n",
|
||
"2016-12-30 69.120003 69.430000 68.830002 69.120003 6889500.0 68.615479 \n",
|
||
"\n",
|
||
" num \n",
|
||
"2012-04-02 10.0 \n",
|
||
"2012-04-03 10.0 \n",
|
||
"2012-04-04 10.0 \n",
|
||
"2012-04-05 10.0 \n",
|
||
"2012-04-09 10.0 \n",
|
||
"... ... \n",
|
||
"2016-12-23 30.0 \n",
|
||
"2016-12-27 30.0 \n",
|
||
"2016-12-28 30.0 \n",
|
||
"2016-12-29 30.0 \n",
|
||
"2016-12-30 30.0 \n",
|
||
"\n",
|
||
"[1196 rows x 7 columns]"
|
||
]
|
||
},
|
||
"execution_count": 23,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"ffill_df.dropna()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.11.0"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 4
|
||
}
|