Files
Man1130/jupyter/Man1130-python-comission/course_materials/Note/3. Combine data with different timeframe.ipynb
louiscklaw e44aead3d5 update,
2025-02-01 01:58:19 +08:00

2579 lines
95 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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
}