{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 0: Import package" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import requests as r\n", "import json\n", "import pandas as pd\n", "from datetime import datetime, date" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 1: Download 1 month data in TAIEX (台股 加權股價指數)" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "url = \"https://www.twse.com.tw/exchangeReport/FMTQIK?response=json&date=20200701\"" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "<Response [200]>" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r.get(url)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "res = r.get(url)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'data': [['109/07/01',\n", " '5,812,063,202',\n", " '193,056,259,836',\n", " '1,471,747',\n", " '11,703.42',\n", " '82.18'],\n", " ['109/07/02',\n", " '6,091,006,206',\n", " '191,309,888,383',\n", " '1,487,513',\n", " '11,805.14',\n", " '101.72'],\n", " ['109/07/03',\n", " '6,484,752,215',\n", " '218,879,744,425',\n", " '1,666,680',\n", " '11,909.16',\n", " '104.02'],\n", " ['109/07/06',\n", " '7,916,423,089',\n", " '252,079,466,765',\n", " '1,951,316',\n", " '12,116.70',\n", " '207.54'],\n", " ['109/07/07',\n", " '7,651,045,729',\n", " '277,506,544,486',\n", " '1,994,922',\n", " '12,092.97',\n", " '-23.73'],\n", " ['109/07/08',\n", " '6,363,746,201',\n", " '242,676,395,267',\n", " '1,755,000',\n", " '12,170.19',\n", " '77.22'],\n", " ['109/07/09',\n", " '6,645,387,543',\n", " '252,727,573,213',\n", " '1,866,152',\n", " '12,192.69',\n", " '22.50'],\n", " ['109/07/10',\n", " '7,031,694,732',\n", " '261,020,496,174',\n", " '1,983,065',\n", " '12,073.68',\n", " '-119.01'],\n", " ['109/07/13',\n", " '6,140,389,276',\n", " '211,132,055,829',\n", " '1,586,140',\n", " '12,211.56',\n", " '137.88'],\n", " ['109/07/14',\n", " '6,197,831,696',\n", " '205,369,887,777',\n", " '1,561,071',\n", " '12,209.01',\n", " '-2.55'],\n", " ['109/07/15',\n", " '6,756,734,156',\n", " '240,427,292,308',\n", " '1,778,651',\n", " '12,202.85',\n", " '-6.16'],\n", " ['109/07/16',\n", " '5,770,300,669',\n", " '199,619,270,942',\n", " '1,466,907',\n", " '12,157.74',\n", " '-45.11'],\n", " ['109/07/17',\n", " '5,938,809,215',\n", " '200,271,062,950',\n", " '1,595,717',\n", " '12,181.56',\n", " '23.82'],\n", " ['109/07/20',\n", " '5,326,683,162',\n", " '176,439,351,236',\n", " '1,378,130',\n", " '12,174.54',\n", " '-7.02'],\n", " ['109/07/21',\n", " '6,781,208,219',\n", " '225,623,414,631',\n", " '1,684,747',\n", " '12,397.55',\n", " '223.01'],\n", " ['109/07/22',\n", " '6,475,848,930',\n", " '226,256,572,816',\n", " '1,619,267',\n", " '12,473.27',\n", " '75.72'],\n", " ['109/07/23',\n", " '6,566,842,345',\n", " '228,150,200,225',\n", " '1,573,096',\n", " '12,413.04',\n", " '-60.23'],\n", " ['109/07/24',\n", " '7,302,839,893',\n", " '268,423,485,119',\n", " '1,868,849',\n", " '12,304.04',\n", " '-109.00'],\n", " ['109/07/27',\n", " '6,497,324,062',\n", " '256,612,208,060',\n", " '1,698,001',\n", " '12,588.30',\n", " '284.26'],\n", " ['109/07/28',\n", " '7,749,667,366',\n", " '348,922,817,780',\n", " '2,066,032',\n", " '12,586.73',\n", " '-1.57'],\n", " ['109/07/29',\n", " '5,900,556,154',\n", " '221,220,518,609',\n", " '1,504,202',\n", " '12,540.97',\n", " '-45.76'],\n", " ['109/07/30',\n", " '5,882,978,873',\n", " '215,707,482,486',\n", " '1,489,304',\n", " '12,722.92',\n", " '181.95'],\n", " ['109/07/31',\n", " '5,953,761,412',\n", " '210,436,131,573',\n", " '1,422,266',\n", " '12,664.80',\n", " '-58.12']],\n", " 'date': '20200718',\n", " 'fields': ['日期', '成交股數', '成交金額', '成交筆數', '發行量加權股價指數', '漲跌點數'],\n", " 'notes': ['當日統計資訊含大盤、零股、盤後定價及鉅額交易,不含拍賣、標購。',\n", " '外幣成交值係以本公司當日下午3時30分公告匯率換算後加入成交金額。<br>公告匯率請參考本公司首頁>產品與服務>交易系統>雙幣ETF專區>代號對應及每日公告匯率。'],\n", " 'stat': 'OK',\n", " 'title': '109年07月市場成交資訊'}" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "res.json()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "stock_json = res.json()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[['109/07/01',\n", " '5,812,063,202',\n", " '193,056,259,836',\n", " '1,471,747',\n", " '11,703.42',\n", " '82.18'],\n", " ['109/07/02',\n", " '6,091,006,206',\n", " '191,309,888,383',\n", " '1,487,513',\n", " '11,805.14',\n", " '101.72'],\n", " ['109/07/03',\n", " '6,484,752,215',\n", " '218,879,744,425',\n", " '1,666,680',\n", " '11,909.16',\n", " '104.02'],\n", " ['109/07/06',\n", " '7,916,423,089',\n", " '252,079,466,765',\n", " '1,951,316',\n", " '12,116.70',\n", " '207.54'],\n", " ['109/07/07',\n", " '7,651,045,729',\n", " '277,506,544,486',\n", " '1,994,922',\n", " '12,092.97',\n", " '-23.73'],\n", " ['109/07/08',\n", " '6,363,746,201',\n", " '242,676,395,267',\n", " '1,755,000',\n", " '12,170.19',\n", " '77.22'],\n", " ['109/07/09',\n", " '6,645,387,543',\n", " '252,727,573,213',\n", " '1,866,152',\n", " '12,192.69',\n", " '22.50'],\n", " ['109/07/10',\n", " '7,031,694,732',\n", " '261,020,496,174',\n", " '1,983,065',\n", " '12,073.68',\n", " '-119.01'],\n", " ['109/07/13',\n", " '6,140,389,276',\n", " '211,132,055,829',\n", " '1,586,140',\n", " '12,211.56',\n", " '137.88'],\n", " ['109/07/14',\n", " '6,197,831,696',\n", " '205,369,887,777',\n", " '1,561,071',\n", " '12,209.01',\n", " '-2.55'],\n", " ['109/07/15',\n", " '6,756,734,156',\n", " '240,427,292,308',\n", " '1,778,651',\n", " '12,202.85',\n", " '-6.16'],\n", " ['109/07/16',\n", " '5,770,300,669',\n", " '199,619,270,942',\n", " '1,466,907',\n", " '12,157.74',\n", " '-45.11'],\n", " ['109/07/17',\n", " '5,938,809,215',\n", " '200,271,062,950',\n", " '1,595,717',\n", " '12,181.56',\n", " '23.82'],\n", " ['109/07/20',\n", " '5,326,683,162',\n", " '176,439,351,236',\n", " '1,378,130',\n", " '12,174.54',\n", " '-7.02'],\n", " ['109/07/21',\n", " '6,781,208,219',\n", " '225,623,414,631',\n", " '1,684,747',\n", " '12,397.55',\n", " '223.01'],\n", " ['109/07/22',\n", " '6,475,848,930',\n", " '226,256,572,816',\n", " '1,619,267',\n", " '12,473.27',\n", " '75.72'],\n", " ['109/07/23',\n", " '6,566,842,345',\n", " '228,150,200,225',\n", " '1,573,096',\n", " '12,413.04',\n", " '-60.23'],\n", " ['109/07/24',\n", " '7,302,839,893',\n", " '268,423,485,119',\n", " '1,868,849',\n", " '12,304.04',\n", " '-109.00'],\n", " ['109/07/27',\n", " '6,497,324,062',\n", " '256,612,208,060',\n", " '1,698,001',\n", " '12,588.30',\n", " '284.26'],\n", " ['109/07/28',\n", " '7,749,667,366',\n", " '348,922,817,780',\n", " '2,066,032',\n", " '12,586.73',\n", " '-1.57'],\n", " ['109/07/29',\n", " '5,900,556,154',\n", " '221,220,518,609',\n", " '1,504,202',\n", " '12,540.97',\n", " '-45.76'],\n", " ['109/07/30',\n", " '5,882,978,873',\n", " '215,707,482,486',\n", " '1,489,304',\n", " '12,722.92',\n", " '181.95'],\n", " ['109/07/31',\n", " '5,953,761,412',\n", " '210,436,131,573',\n", " '1,422,266',\n", " '12,664.80',\n", " '-58.12']]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stock_json['data']" ] }, { "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>0</th>\n", " <th>1</th>\n", " <th>2</th>\n", " <th>3</th>\n", " <th>4</th>\n", " <th>5</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>109/07/01</td>\n", " <td>5,812,063,202</td>\n", " <td>193,056,259,836</td>\n", " <td>1,471,747</td>\n", " <td>11,703.42</td>\n", " <td>82.18</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>109/07/02</td>\n", " <td>6,091,006,206</td>\n", " <td>191,309,888,383</td>\n", " <td>1,487,513</td>\n", " <td>11,805.14</td>\n", " <td>101.72</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>109/07/03</td>\n", " <td>6,484,752,215</td>\n", " <td>218,879,744,425</td>\n", " <td>1,666,680</td>\n", " <td>11,909.16</td>\n", " <td>104.02</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>109/07/06</td>\n", " <td>7,916,423,089</td>\n", " <td>252,079,466,765</td>\n", " <td>1,951,316</td>\n", " <td>12,116.70</td>\n", " <td>207.54</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>109/07/07</td>\n", " <td>7,651,045,729</td>\n", " <td>277,506,544,486</td>\n", " <td>1,994,922</td>\n", " <td>12,092.97</td>\n", " <td>-23.73</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>109/07/08</td>\n", " <td>6,363,746,201</td>\n", " <td>242,676,395,267</td>\n", " <td>1,755,000</td>\n", " <td>12,170.19</td>\n", " <td>77.22</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>109/07/09</td>\n", " <td>6,645,387,543</td>\n", " <td>252,727,573,213</td>\n", " <td>1,866,152</td>\n", " <td>12,192.69</td>\n", " <td>22.50</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>109/07/10</td>\n", " <td>7,031,694,732</td>\n", " <td>261,020,496,174</td>\n", " <td>1,983,065</td>\n", " <td>12,073.68</td>\n", " <td>-119.01</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>109/07/13</td>\n", " <td>6,140,389,276</td>\n", " <td>211,132,055,829</td>\n", " <td>1,586,140</td>\n", " <td>12,211.56</td>\n", " <td>137.88</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>109/07/14</td>\n", " <td>6,197,831,696</td>\n", " <td>205,369,887,777</td>\n", " <td>1,561,071</td>\n", " <td>12,209.01</td>\n", " <td>-2.55</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>109/07/15</td>\n", " <td>6,756,734,156</td>\n", " <td>240,427,292,308</td>\n", " <td>1,778,651</td>\n", " <td>12,202.85</td>\n", " <td>-6.16</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>109/07/16</td>\n", " <td>5,770,300,669</td>\n", " <td>199,619,270,942</td>\n", " <td>1,466,907</td>\n", " <td>12,157.74</td>\n", " <td>-45.11</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>109/07/17</td>\n", " <td>5,938,809,215</td>\n", " <td>200,271,062,950</td>\n", " <td>1,595,717</td>\n", " <td>12,181.56</td>\n", " <td>23.82</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>109/07/20</td>\n", " <td>5,326,683,162</td>\n", " <td>176,439,351,236</td>\n", " <td>1,378,130</td>\n", " <td>12,174.54</td>\n", " <td>-7.02</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>109/07/21</td>\n", " <td>6,781,208,219</td>\n", " <td>225,623,414,631</td>\n", " <td>1,684,747</td>\n", " <td>12,397.55</td>\n", " <td>223.01</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>109/07/22</td>\n", " <td>6,475,848,930</td>\n", " <td>226,256,572,816</td>\n", " <td>1,619,267</td>\n", " <td>12,473.27</td>\n", " <td>75.72</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>109/07/23</td>\n", " <td>6,566,842,345</td>\n", " <td>228,150,200,225</td>\n", " <td>1,573,096</td>\n", " <td>12,413.04</td>\n", " <td>-60.23</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>109/07/24</td>\n", " <td>7,302,839,893</td>\n", " <td>268,423,485,119</td>\n", " <td>1,868,849</td>\n", " <td>12,304.04</td>\n", " <td>-109.00</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>109/07/27</td>\n", " <td>6,497,324,062</td>\n", " <td>256,612,208,060</td>\n", " <td>1,698,001</td>\n", " <td>12,588.30</td>\n", " <td>284.26</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>109/07/28</td>\n", " <td>7,749,667,366</td>\n", " <td>348,922,817,780</td>\n", " <td>2,066,032</td>\n", " <td>12,586.73</td>\n", " <td>-1.57</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>109/07/29</td>\n", " <td>5,900,556,154</td>\n", " <td>221,220,518,609</td>\n", " <td>1,504,202</td>\n", " <td>12,540.97</td>\n", " <td>-45.76</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>109/07/30</td>\n", " <td>5,882,978,873</td>\n", " <td>215,707,482,486</td>\n", " <td>1,489,304</td>\n", " <td>12,722.92</td>\n", " <td>181.95</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>109/07/31</td>\n", " <td>5,953,761,412</td>\n", " <td>210,436,131,573</td>\n", " <td>1,422,266</td>\n", " <td>12,664.80</td>\n", " <td>-58.12</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 0 1 2 3 4 5\n", "0 109/07/01 5,812,063,202 193,056,259,836 1,471,747 11,703.42 82.18\n", "1 109/07/02 6,091,006,206 191,309,888,383 1,487,513 11,805.14 101.72\n", "2 109/07/03 6,484,752,215 218,879,744,425 1,666,680 11,909.16 104.02\n", "3 109/07/06 7,916,423,089 252,079,466,765 1,951,316 12,116.70 207.54\n", "4 109/07/07 7,651,045,729 277,506,544,486 1,994,922 12,092.97 -23.73\n", "5 109/07/08 6,363,746,201 242,676,395,267 1,755,000 12,170.19 77.22\n", "6 109/07/09 6,645,387,543 252,727,573,213 1,866,152 12,192.69 22.50\n", "7 109/07/10 7,031,694,732 261,020,496,174 1,983,065 12,073.68 -119.01\n", "8 109/07/13 6,140,389,276 211,132,055,829 1,586,140 12,211.56 137.88\n", "9 109/07/14 6,197,831,696 205,369,887,777 1,561,071 12,209.01 -2.55\n", "10 109/07/15 6,756,734,156 240,427,292,308 1,778,651 12,202.85 -6.16\n", "11 109/07/16 5,770,300,669 199,619,270,942 1,466,907 12,157.74 -45.11\n", "12 109/07/17 5,938,809,215 200,271,062,950 1,595,717 12,181.56 23.82\n", "13 109/07/20 5,326,683,162 176,439,351,236 1,378,130 12,174.54 -7.02\n", "14 109/07/21 6,781,208,219 225,623,414,631 1,684,747 12,397.55 223.01\n", "15 109/07/22 6,475,848,930 226,256,572,816 1,619,267 12,473.27 75.72\n", "16 109/07/23 6,566,842,345 228,150,200,225 1,573,096 12,413.04 -60.23\n", "17 109/07/24 7,302,839,893 268,423,485,119 1,868,849 12,304.04 -109.00\n", "18 109/07/27 6,497,324,062 256,612,208,060 1,698,001 12,588.30 284.26\n", "19 109/07/28 7,749,667,366 348,922,817,780 2,066,032 12,586.73 -1.57\n", "20 109/07/29 5,900,556,154 221,220,518,609 1,504,202 12,540.97 -45.76\n", "21 109/07/30 5,882,978,873 215,707,482,486 1,489,304 12,722.92 181.95\n", "22 109/07/31 5,953,761,412 210,436,131,573 1,422,266 12,664.80 -58.12" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.DataFrame.from_dict(stock_json['data'])" ] }, { "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>0</th>\n", " <th>1</th>\n", " <th>2</th>\n", " <th>3</th>\n", " <th>4</th>\n", " <th>5</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>109/07/01</td>\n", " <td>5,812,063,202</td>\n", " <td>193,056,259,836</td>\n", " <td>1,471,747</td>\n", " <td>11,703.42</td>\n", " <td>82.18</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>109/07/02</td>\n", " <td>6,091,006,206</td>\n", " <td>191,309,888,383</td>\n", " <td>1,487,513</td>\n", " <td>11,805.14</td>\n", " <td>101.72</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>109/07/03</td>\n", " <td>6,484,752,215</td>\n", " <td>218,879,744,425</td>\n", " <td>1,666,680</td>\n", " <td>11,909.16</td>\n", " <td>104.02</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>109/07/06</td>\n", " <td>7,916,423,089</td>\n", " <td>252,079,466,765</td>\n", " <td>1,951,316</td>\n", " <td>12,116.70</td>\n", " <td>207.54</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>109/07/07</td>\n", " <td>7,651,045,729</td>\n", " <td>277,506,544,486</td>\n", " <td>1,994,922</td>\n", " <td>12,092.97</td>\n", " <td>-23.73</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 0 1 2 3 4 5\n", "0 109/07/01 5,812,063,202 193,056,259,836 1,471,747 11,703.42 82.18\n", "1 109/07/02 6,091,006,206 191,309,888,383 1,487,513 11,805.14 101.72\n", "2 109/07/03 6,484,752,215 218,879,744,425 1,666,680 11,909.16 104.02\n", "3 109/07/06 7,916,423,089 252,079,466,765 1,951,316 12,116.70 207.54\n", "4 109/07/07 7,651,045,729 277,506,544,486 1,994,922 12,092.97 -23.73" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stock_df = pd.DataFrame.from_dict(stock_json['data'])\n", "stock_df.head()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['日期', '成交股數', '成交金額', '成交筆數', '發行量加權股價指數', '漲跌點數']" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stock_json['fields']" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "stock_df.columns = stock_json['fields']" ] }, { "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>日期</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>0</th>\n", " <td>109/07/01</td>\n", " <td>5,812,063,202</td>\n", " <td>193,056,259,836</td>\n", " <td>1,471,747</td>\n", " <td>11,703.42</td>\n", " <td>82.18</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>109/07/02</td>\n", " <td>6,091,006,206</td>\n", " <td>191,309,888,383</td>\n", " <td>1,487,513</td>\n", " <td>11,805.14</td>\n", " <td>101.72</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>109/07/03</td>\n", " <td>6,484,752,215</td>\n", " <td>218,879,744,425</td>\n", " <td>1,666,680</td>\n", " <td>11,909.16</td>\n", " <td>104.02</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>109/07/06</td>\n", " <td>7,916,423,089</td>\n", " <td>252,079,466,765</td>\n", " <td>1,951,316</td>\n", " <td>12,116.70</td>\n", " <td>207.54</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>109/07/07</td>\n", " <td>7,651,045,729</td>\n", " <td>277,506,544,486</td>\n", " <td>1,994,922</td>\n", " <td>12,092.97</td>\n", " <td>-23.73</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 日期 成交股數 成交金額 成交筆數 發行量加權股價指數 漲跌點數\n", "0 109/07/01 5,812,063,202 193,056,259,836 1,471,747 11,703.42 82.18\n", "1 109/07/02 6,091,006,206 191,309,888,383 1,487,513 11,805.14 101.72\n", "2 109/07/03 6,484,752,215 218,879,744,425 1,666,680 11,909.16 104.02\n", "3 109/07/06 7,916,423,089 252,079,466,765 1,951,316 12,116.70 207.54\n", "4 109/07/07 7,651,045,729 277,506,544,486 1,994,922 12,092.97 -23.73" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stock_df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 2: Download multi months data in TAIEX (台股 加權股價指數)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "url = \"https://www.twse.com.tw/exchangeReport/FMTQIK?response=json&date=20200701\"" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "month_list = pd.date_range('2020-06-01','2020-08-01', freq='MS').strftime(\"%Y%m%d\").tolist() " ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "20200601\n", "20200701\n", "20200801\n" ] } ], "source": [ "for month in month_list:\n", " print(month) " ] }, { "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", " </tr>\n", " </thead>\n", " <tbody>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ "Empty DataFrame\n", "Columns: []\n", "Index: []" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.DataFrame()\n", "df" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "for month in month_list:\n", " url = \"https://www.twse.com.tw/exchangeReport/FMTQIK?response=json&date=\" + month\n", " res = r.get(url)\n", " stock_json = res.json()\n", " stock_df = pd.DataFrame.from_dict(stock_json['data'])\n", " df = df.append(stock_df, ignore_index = True)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "df.columns = ['日期', '成交股數', '成交金額', '成交筆數', '發行量加權股價指數', '漲跌點數']" ] }, { "cell_type": "code", "execution_count": 19, "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>日期</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>0</th>\n", " <td>109/06/01</td>\n", " <td>4,975,164,301</td>\n", " <td>169,563,746,947</td>\n", " <td>1,350,613</td>\n", " <td>11,079.02</td>\n", " <td>136.86</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>109/06/02</td>\n", " <td>4,974,734,421</td>\n", " <td>182,409,278,902</td>\n", " <td>1,399,684</td>\n", " <td>11,127.93</td>\n", " <td>48.91</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>109/06/03</td>\n", " <td>6,431,206,610</td>\n", " <td>214,594,995,112</td>\n", " <td>1,670,723</td>\n", " <td>11,320.16</td>\n", " <td>192.23</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>109/06/04</td>\n", " <td>5,944,102,520</td>\n", " <td>203,655,766,408</td>\n", " <td>1,550,402</td>\n", " <td>11,393.23</td>\n", " <td>73.07</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>109/06/05</td>\n", " <td>5,782,637,500</td>\n", " <td>181,156,372,573</td>\n", " <td>1,522,634</td>\n", " <td>11,479.40</td>\n", " <td>86.17</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 日期 成交股數 成交金額 成交筆數 發行量加權股價指數 漲跌點數\n", "0 109/06/01 4,975,164,301 169,563,746,947 1,350,613 11,079.02 136.86\n", "1 109/06/02 4,974,734,421 182,409,278,902 1,399,684 11,127.93 48.91\n", "2 109/06/03 6,431,206,610 214,594,995,112 1,670,723 11,320.16 192.23\n", "3 109/06/04 5,944,102,520 203,655,766,408 1,550,402 11,393.23 73.07\n", "4 109/06/05 5,782,637,500 181,156,372,573 1,522,634 11,479.40 86.17" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "def get_stock_data(start_year, start_month, end_year, end_month):\n", " start_date = str(date(start_year, start_month, 1))\n", " end_date = str(date(end_year, end_month, 1))\n", " month_list = pd.date_range(start_date, end_date, freq='MS').strftime(\"%Y%m%d\").tolist()\n", " \n", " df = pd.DataFrame()\n", " for month in month_list:\n", " url = \"https://www.twse.com.tw/exchangeReport/FMTQIK?response=json&date=\" + month\n", " res = r.get(url)\n", " stock_json = res.json()\n", " stock_df = pd.DataFrame.from_dict(stock_json['data'])\n", " df = df.append(stock_df, ignore_index = True)\n", " \n", " df.columns = ['日期', '成交股數', '成交金額', '成交筆數', '發行量加權股價指數', '漲跌點數']\n", " return df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Part 3: Save the dataframe as csv file" ] }, { "cell_type": "code", "execution_count": 21, "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>日期</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>0</th>\n", " <td>108/07/01</td>\n", " <td>4,985,631,880</td>\n", " <td>145,664,096,932</td>\n", " <td>1,089,572</td>\n", " <td>10,895.46</td>\n", " <td>164.63</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>108/07/02</td>\n", " <td>4,295,548,703</td>\n", " <td>120,716,164,596</td>\n", " <td>991,072</td>\n", " <td>10,865.12</td>\n", " <td>-30.34</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>108/07/03</td>\n", " <td>4,246,162,907</td>\n", " <td>112,714,237,324</td>\n", " <td>938,659</td>\n", " <td>10,743.77</td>\n", " <td>-121.35</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>108/07/04</td>\n", " <td>3,797,646,624</td>\n", " <td>98,158,438,333</td>\n", " <td>828,014</td>\n", " <td>10,775.90</td>\n", " <td>32.13</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>108/07/05</td>\n", " <td>3,400,302,424</td>\n", " <td>86,511,212,135</td>\n", " <td>752,681</td>\n", " <td>10,785.73</td>\n", " <td>9.83</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>108/07/08</td>\n", " <td>3,738,945,153</td>\n", " <td>97,082,027,949</td>\n", " <td>815,372</td>\n", " <td>10,751.22</td>\n", " <td>-34.51</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>108/07/09</td>\n", " <td>3,474,464,386</td>\n", " <td>94,204,036,152</td>\n", " <td>836,475</td>\n", " <td>10,702.78</td>\n", " <td>-48.44</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>108/07/10</td>\n", " <td>4,044,852,809</td>\n", " <td>104,197,474,125</td>\n", " <td>932,562</td>\n", " <td>10,798.48</td>\n", " <td>95.70</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>108/07/11</td>\n", " <td>4,997,530,807</td>\n", " <td>132,057,394,072</td>\n", " <td>1,071,497</td>\n", " <td>10,843.42</td>\n", " <td>44.94</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>108/07/12</td>\n", " <td>4,559,013,456</td>\n", " <td>122,217,270,421</td>\n", " <td>1,031,495</td>\n", " <td>10,824.35</td>\n", " <td>-19.07</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>108/07/15</td>\n", " <td>4,625,135,650</td>\n", " <td>120,541,529,871</td>\n", " <td>1,005,175</td>\n", " <td>10,876.43</td>\n", " <td>52.08</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>108/07/16</td>\n", " <td>4,451,418,488</td>\n", " <td>119,695,164,249</td>\n", " <td>1,037,335</td>\n", " <td>10,886.05</td>\n", " <td>9.62</td>\n", " </tr>\n", " <tr>\n", " <th>12</th>\n", " <td>108/07/17</td>\n", " <td>4,588,257,766</td>\n", " <td>116,341,167,900</td>\n", " <td>1,048,002</td>\n", " <td>10,828.48</td>\n", " <td>-57.57</td>\n", " </tr>\n", " <tr>\n", " <th>13</th>\n", " <td>108/07/18</td>\n", " <td>4,212,328,479</td>\n", " <td>106,205,765,697</td>\n", " <td>961,380</td>\n", " <td>10,799.28</td>\n", " <td>-29.20</td>\n", " </tr>\n", " <tr>\n", " <th>14</th>\n", " <td>108/07/19</td>\n", " <td>4,502,161,924</td>\n", " <td>123,566,684,603</td>\n", " <td>982,410</td>\n", " <td>10,873.19</td>\n", " <td>73.91</td>\n", " </tr>\n", " <tr>\n", " <th>15</th>\n", " <td>108/07/22</td>\n", " <td>4,435,604,953</td>\n", " <td>118,654,132,818</td>\n", " <td>977,980</td>\n", " <td>10,944.53</td>\n", " <td>71.34</td>\n", " </tr>\n", " <tr>\n", " <th>16</th>\n", " <td>108/07/23</td>\n", " <td>4,564,947,566</td>\n", " <td>127,879,150,427</td>\n", " <td>1,077,697</td>\n", " <td>10,947.26</td>\n", " <td>2.73</td>\n", " </tr>\n", " <tr>\n", " <th>17</th>\n", " <td>108/07/24</td>\n", " <td>4,789,346,753</td>\n", " <td>133,129,096,409</td>\n", " <td>1,132,545</td>\n", " <td>10,935.76</td>\n", " <td>-11.50</td>\n", " </tr>\n", " <tr>\n", " <th>18</th>\n", " <td>108/07/25</td>\n", " <td>5,034,848,310</td>\n", " <td>133,885,703,398</td>\n", " <td>1,131,686</td>\n", " <td>10,941.41</td>\n", " <td>5.65</td>\n", " </tr>\n", " <tr>\n", " <th>19</th>\n", " <td>108/07/26</td>\n", " <td>4,227,775,498</td>\n", " <td>111,794,836,905</td>\n", " <td>1,002,794</td>\n", " <td>10,891.98</td>\n", " <td>-49.43</td>\n", " </tr>\n", " <tr>\n", " <th>20</th>\n", " <td>108/07/29</td>\n", " <td>3,873,144,739</td>\n", " <td>105,524,746,606</td>\n", " <td>945,531</td>\n", " <td>10,885.73</td>\n", " <td>-6.25</td>\n", " </tr>\n", " <tr>\n", " <th>21</th>\n", " <td>108/07/30</td>\n", " <td>4,493,608,915</td>\n", " <td>131,409,613,891</td>\n", " <td>1,099,181</td>\n", " <td>10,830.90</td>\n", " <td>-54.83</td>\n", " </tr>\n", " <tr>\n", " <th>22</th>\n", " <td>108/07/31</td>\n", " <td>4,476,398,294</td>\n", " <td>131,643,019,317</td>\n", " <td>1,046,160</td>\n", " <td>10,823.81</td>\n", " <td>-7.09</td>\n", " </tr>\n", " <tr>\n", " <th>23</th>\n", " <td>108/08/01</td>\n", " <td>4,521,619,307</td>\n", " <td>131,058,984,590</td>\n", " <td>1,098,159</td>\n", " <td>10,731.75</td>\n", " <td>-92.06</td>\n", " </tr>\n", " <tr>\n", " <th>24</th>\n", " <td>108/08/02</td>\n", " <td>5,675,601,956</td>\n", " <td>159,939,135,883</td>\n", " <td>1,300,394</td>\n", " <td>10,549.04</td>\n", " <td>-182.71</td>\n", " </tr>\n", " <tr>\n", " <th>25</th>\n", " <td>108/08/05</td>\n", " <td>4,911,728,030</td>\n", " <td>129,390,816,837</td>\n", " <td>1,107,939</td>\n", " <td>10,423.41</td>\n", " <td>-125.63</td>\n", " </tr>\n", " <tr>\n", " <th>26</th>\n", " <td>108/08/06</td>\n", " <td>6,008,242,875</td>\n", " <td>146,038,029,501</td>\n", " <td>1,232,634</td>\n", " <td>10,394.75</td>\n", " <td>-28.66</td>\n", " </tr>\n", " <tr>\n", " <th>27</th>\n", " <td>108/08/07</td>\n", " <td>4,468,033,535</td>\n", " <td>121,765,614,143</td>\n", " <td>1,059,318</td>\n", " <td>10,386.18</td>\n", " <td>-8.57</td>\n", " </tr>\n", " <tr>\n", " <th>28</th>\n", " <td>108/08/08</td>\n", " <td>4,470,132,577</td>\n", " <td>124,081,823,011</td>\n", " <td>998,888</td>\n", " <td>10,494.49</td>\n", " <td>108.31</td>\n", " </tr>\n", " <tr>\n", " <th>29</th>\n", " <td>108/08/12</td>\n", " <td>4,517,408,511</td>\n", " <td>126,685,737,957</td>\n", " <td>1,065,930</td>\n", " <td>10,472.36</td>\n", " <td>-22.13</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>33</th>\n", " <td>108/08/16</td>\n", " <td>4,700,960,825</td>\n", " <td>120,048,343,262</td>\n", " <td>1,133,574</td>\n", " <td>10,420.89</td>\n", " <td>93.76</td>\n", " </tr>\n", " <tr>\n", " <th>34</th>\n", " <td>108/08/19</td>\n", " <td>4,574,050,378</td>\n", " <td>120,476,924,084</td>\n", " <td>1,068,019</td>\n", " <td>10,488.75</td>\n", " <td>67.86</td>\n", " </tr>\n", " <tr>\n", " <th>35</th>\n", " <td>108/08/20</td>\n", " <td>4,542,661,753</td>\n", " <td>121,491,792,456</td>\n", " <td>1,070,480</td>\n", " <td>10,522.50</td>\n", " <td>33.75</td>\n", " </tr>\n", " <tr>\n", " <th>36</th>\n", " <td>108/08/21</td>\n", " <td>3,932,448,282</td>\n", " <td>111,080,424,760</td>\n", " <td>1,006,299</td>\n", " <td>10,525.80</td>\n", " <td>3.30</td>\n", " </tr>\n", " <tr>\n", " <th>37</th>\n", " <td>108/08/22</td>\n", " <td>4,396,250,909</td>\n", " <td>123,271,367,108</td>\n", " <td>1,072,360</td>\n", " <td>10,529.78</td>\n", " <td>3.98</td>\n", " </tr>\n", " <tr>\n", " <th>38</th>\n", " <td>108/08/23</td>\n", " <td>3,942,656,466</td>\n", " <td>110,007,554,049</td>\n", " <td>947,669</td>\n", " <td>10,538.11</td>\n", " <td>8.33</td>\n", " </tr>\n", " <tr>\n", " <th>39</th>\n", " <td>108/08/26</td>\n", " <td>4,862,207,637</td>\n", " <td>117,049,586,345</td>\n", " <td>1,016,154</td>\n", " <td>10,354.57</td>\n", " <td>-183.54</td>\n", " </tr>\n", " <tr>\n", " <th>40</th>\n", " <td>108/08/27</td>\n", " <td>4,120,194,542</td>\n", " <td>123,691,150,076</td>\n", " <td>894,549</td>\n", " <td>10,387.23</td>\n", " <td>32.66</td>\n", " </tr>\n", " <tr>\n", " <th>41</th>\n", " <td>108/08/28</td>\n", " <td>3,597,431,879</td>\n", " <td>102,092,710,347</td>\n", " <td>878,572</td>\n", " <td>10,434.29</td>\n", " <td>47.06</td>\n", " </tr>\n", " <tr>\n", " <th>42</th>\n", " <td>108/08/29</td>\n", " <td>3,866,814,680</td>\n", " <td>104,248,701,178</td>\n", " <td>937,813</td>\n", " <td>10,462.43</td>\n", " <td>28.14</td>\n", " </tr>\n", " <tr>\n", " <th>43</th>\n", " <td>108/08/30</td>\n", " <td>5,323,560,006</td>\n", " <td>148,217,313,012</td>\n", " <td>1,199,598</td>\n", " <td>10,618.05</td>\n", " <td>155.62</td>\n", " </tr>\n", " <tr>\n", " <th>44</th>\n", " <td>108/09/02</td>\n", " <td>4,333,278,342</td>\n", " <td>105,848,766,031</td>\n", " <td>981,744</td>\n", " <td>10,634.85</td>\n", " <td>16.80</td>\n", " </tr>\n", " <tr>\n", " <th>45</th>\n", " <td>108/09/03</td>\n", " <td>4,043,809,186</td>\n", " <td>105,576,630,318</td>\n", " <td>949,727</td>\n", " <td>10,558.21</td>\n", " <td>-76.64</td>\n", " </tr>\n", " <tr>\n", " <th>46</th>\n", " <td>108/09/04</td>\n", " <td>4,338,123,349</td>\n", " <td>107,093,494,944</td>\n", " <td>972,295</td>\n", " <td>10,657.31</td>\n", " <td>99.10</td>\n", " </tr>\n", " <tr>\n", " <th>47</th>\n", " <td>108/09/05</td>\n", " <td>6,013,120,362</td>\n", " <td>154,662,076,294</td>\n", " <td>1,261,814</td>\n", " <td>10,756.93</td>\n", " <td>99.62</td>\n", " </tr>\n", " <tr>\n", " <th>48</th>\n", " <td>108/09/06</td>\n", " <td>4,827,692,321</td>\n", " <td>131,307,111,626</td>\n", " <td>1,107,361</td>\n", " <td>10,780.64</td>\n", " <td>23.71</td>\n", " </tr>\n", " <tr>\n", " <th>49</th>\n", " <td>108/09/09</td>\n", " <td>4,543,925,038</td>\n", " <td>116,733,239,498</td>\n", " <td>1,027,773</td>\n", " <td>10,801.14</td>\n", " <td>20.50</td>\n", " </tr>\n", " <tr>\n", " <th>50</th>\n", " <td>108/09/10</td>\n", " <td>4,475,712,468</td>\n", " <td>121,338,149,239</td>\n", " <td>986,052</td>\n", " <td>10,753.58</td>\n", " <td>-47.56</td>\n", " </tr>\n", " <tr>\n", " <th>51</th>\n", " <td>108/09/11</td>\n", " <td>4,310,865,154</td>\n", " <td>119,937,917,952</td>\n", " <td>974,736</td>\n", " <td>10,790.35</td>\n", " <td>36.77</td>\n", " </tr>\n", " <tr>\n", " <th>52</th>\n", " <td>108/09/12</td>\n", " <td>4,330,422,356</td>\n", " <td>120,872,609,647</td>\n", " <td>962,901</td>\n", " <td>10,827.55</td>\n", " <td>37.20</td>\n", " </tr>\n", " <tr>\n", " <th>53</th>\n", " <td>108/09/16</td>\n", " <td>4,390,073,832</td>\n", " <td>119,576,475,670</td>\n", " <td>1,005,025</td>\n", " <td>10,898.13</td>\n", " <td>70.58</td>\n", " </tr>\n", " <tr>\n", " <th>54</th>\n", " <td>108/09/17</td>\n", " <td>4,238,580,734</td>\n", " <td>117,546,611,937</td>\n", " <td>1,001,017</td>\n", " <td>10,874.50</td>\n", " <td>-23.63</td>\n", " </tr>\n", " <tr>\n", " <th>55</th>\n", " <td>108/09/18</td>\n", " <td>4,380,465,735</td>\n", " <td>130,465,246,047</td>\n", " <td>1,113,809</td>\n", " <td>10,929.45</td>\n", " <td>54.95</td>\n", " </tr>\n", " <tr>\n", " <th>56</th>\n", " <td>108/09/19</td>\n", " <td>4,094,709,966</td>\n", " <td>114,671,100,910</td>\n", " <td>922,567</td>\n", " <td>10,894.70</td>\n", " <td>-34.75</td>\n", " </tr>\n", " <tr>\n", " <th>57</th>\n", " <td>108/09/20</td>\n", " <td>4,712,806,256</td>\n", " <td>147,979,569,707</td>\n", " <td>1,015,743</td>\n", " <td>10,929.69</td>\n", " <td>34.99</td>\n", " </tr>\n", " <tr>\n", " <th>58</th>\n", " <td>108/09/23</td>\n", " <td>3,976,565,745</td>\n", " <td>106,841,123,621</td>\n", " <td>978,964</td>\n", " <td>10,919.02</td>\n", " <td>-10.67</td>\n", " </tr>\n", " <tr>\n", " <th>59</th>\n", " <td>108/09/24</td>\n", " <td>3,872,481,764</td>\n", " <td>109,707,784,147</td>\n", " <td>1,013,261</td>\n", " <td>10,918.01</td>\n", " <td>-1.01</td>\n", " </tr>\n", " <tr>\n", " <th>60</th>\n", " <td>108/09/25</td>\n", " <td>3,880,868,893</td>\n", " <td>106,259,302,170</td>\n", " <td>954,407</td>\n", " <td>10,873.69</td>\n", " <td>-44.32</td>\n", " </tr>\n", " <tr>\n", " <th>61</th>\n", " <td>108/09/26</td>\n", " <td>3,878,756,606</td>\n", " <td>116,018,960,126</td>\n", " <td>945,745</td>\n", " <td>10,871.99</td>\n", " <td>-1.70</td>\n", " </tr>\n", " <tr>\n", " <th>62</th>\n", " <td>108/09/27</td>\n", " <td>4,211,145,537</td>\n", " <td>124,771,598,230</td>\n", " <td>1,031,089</td>\n", " <td>10,829.68</td>\n", " <td>-42.31</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "<p>63 rows × 6 columns</p>\n", "</div>" ], "text/plain": [ " 日期 成交股數 成交金額 成交筆數 發行量加權股價指數 漲跌點數\n", "0 108/07/01 4,985,631,880 145,664,096,932 1,089,572 10,895.46 164.63\n", "1 108/07/02 4,295,548,703 120,716,164,596 991,072 10,865.12 -30.34\n", "2 108/07/03 4,246,162,907 112,714,237,324 938,659 10,743.77 -121.35\n", "3 108/07/04 3,797,646,624 98,158,438,333 828,014 10,775.90 32.13\n", "4 108/07/05 3,400,302,424 86,511,212,135 752,681 10,785.73 9.83\n", "5 108/07/08 3,738,945,153 97,082,027,949 815,372 10,751.22 -34.51\n", "6 108/07/09 3,474,464,386 94,204,036,152 836,475 10,702.78 -48.44\n", "7 108/07/10 4,044,852,809 104,197,474,125 932,562 10,798.48 95.70\n", "8 108/07/11 4,997,530,807 132,057,394,072 1,071,497 10,843.42 44.94\n", "9 108/07/12 4,559,013,456 122,217,270,421 1,031,495 10,824.35 -19.07\n", "10 108/07/15 4,625,135,650 120,541,529,871 1,005,175 10,876.43 52.08\n", "11 108/07/16 4,451,418,488 119,695,164,249 1,037,335 10,886.05 9.62\n", "12 108/07/17 4,588,257,766 116,341,167,900 1,048,002 10,828.48 -57.57\n", "13 108/07/18 4,212,328,479 106,205,765,697 961,380 10,799.28 -29.20\n", "14 108/07/19 4,502,161,924 123,566,684,603 982,410 10,873.19 73.91\n", "15 108/07/22 4,435,604,953 118,654,132,818 977,980 10,944.53 71.34\n", "16 108/07/23 4,564,947,566 127,879,150,427 1,077,697 10,947.26 2.73\n", "17 108/07/24 4,789,346,753 133,129,096,409 1,132,545 10,935.76 -11.50\n", "18 108/07/25 5,034,848,310 133,885,703,398 1,131,686 10,941.41 5.65\n", "19 108/07/26 4,227,775,498 111,794,836,905 1,002,794 10,891.98 -49.43\n", "20 108/07/29 3,873,144,739 105,524,746,606 945,531 10,885.73 -6.25\n", "21 108/07/30 4,493,608,915 131,409,613,891 1,099,181 10,830.90 -54.83\n", "22 108/07/31 4,476,398,294 131,643,019,317 1,046,160 10,823.81 -7.09\n", "23 108/08/01 4,521,619,307 131,058,984,590 1,098,159 10,731.75 -92.06\n", "24 108/08/02 5,675,601,956 159,939,135,883 1,300,394 10,549.04 -182.71\n", "25 108/08/05 4,911,728,030 129,390,816,837 1,107,939 10,423.41 -125.63\n", "26 108/08/06 6,008,242,875 146,038,029,501 1,232,634 10,394.75 -28.66\n", "27 108/08/07 4,468,033,535 121,765,614,143 1,059,318 10,386.18 -8.57\n", "28 108/08/08 4,470,132,577 124,081,823,011 998,888 10,494.49 108.31\n", "29 108/08/12 4,517,408,511 126,685,737,957 1,065,930 10,472.36 -22.13\n", ".. ... ... ... ... ... ...\n", "33 108/08/16 4,700,960,825 120,048,343,262 1,133,574 10,420.89 93.76\n", "34 108/08/19 4,574,050,378 120,476,924,084 1,068,019 10,488.75 67.86\n", "35 108/08/20 4,542,661,753 121,491,792,456 1,070,480 10,522.50 33.75\n", "36 108/08/21 3,932,448,282 111,080,424,760 1,006,299 10,525.80 3.30\n", "37 108/08/22 4,396,250,909 123,271,367,108 1,072,360 10,529.78 3.98\n", "38 108/08/23 3,942,656,466 110,007,554,049 947,669 10,538.11 8.33\n", "39 108/08/26 4,862,207,637 117,049,586,345 1,016,154 10,354.57 -183.54\n", "40 108/08/27 4,120,194,542 123,691,150,076 894,549 10,387.23 32.66\n", "41 108/08/28 3,597,431,879 102,092,710,347 878,572 10,434.29 47.06\n", "42 108/08/29 3,866,814,680 104,248,701,178 937,813 10,462.43 28.14\n", "43 108/08/30 5,323,560,006 148,217,313,012 1,199,598 10,618.05 155.62\n", "44 108/09/02 4,333,278,342 105,848,766,031 981,744 10,634.85 16.80\n", "45 108/09/03 4,043,809,186 105,576,630,318 949,727 10,558.21 -76.64\n", "46 108/09/04 4,338,123,349 107,093,494,944 972,295 10,657.31 99.10\n", "47 108/09/05 6,013,120,362 154,662,076,294 1,261,814 10,756.93 99.62\n", "48 108/09/06 4,827,692,321 131,307,111,626 1,107,361 10,780.64 23.71\n", "49 108/09/09 4,543,925,038 116,733,239,498 1,027,773 10,801.14 20.50\n", "50 108/09/10 4,475,712,468 121,338,149,239 986,052 10,753.58 -47.56\n", "51 108/09/11 4,310,865,154 119,937,917,952 974,736 10,790.35 36.77\n", "52 108/09/12 4,330,422,356 120,872,609,647 962,901 10,827.55 37.20\n", "53 108/09/16 4,390,073,832 119,576,475,670 1,005,025 10,898.13 70.58\n", "54 108/09/17 4,238,580,734 117,546,611,937 1,001,017 10,874.50 -23.63\n", "55 108/09/18 4,380,465,735 130,465,246,047 1,113,809 10,929.45 54.95\n", "56 108/09/19 4,094,709,966 114,671,100,910 922,567 10,894.70 -34.75\n", "57 108/09/20 4,712,806,256 147,979,569,707 1,015,743 10,929.69 34.99\n", "58 108/09/23 3,976,565,745 106,841,123,621 978,964 10,919.02 -10.67\n", "59 108/09/24 3,872,481,764 109,707,784,147 1,013,261 10,918.01 -1.01\n", "60 108/09/25 3,880,868,893 106,259,302,170 954,407 10,873.69 -44.32\n", "61 108/09/26 3,878,756,606 116,018,960,126 945,745 10,871.99 -1.70\n", "62 108/09/27 4,211,145,537 124,771,598,230 1,031,089 10,829.68 -42.31\n", "\n", "[63 rows x 6 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "get_stock_data(start_year = 2019, start_month = 7, end_year = 2019, end_month = 9)" ] }, { "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>日期</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>0</th>\n", " <td>108/07/01</td>\n", " <td>4,985,631,880</td>\n", " <td>145,664,096,932</td>\n", " <td>1,089,572</td>\n", " <td>10,895.46</td>\n", " <td>164.63</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>108/07/02</td>\n", " <td>4,295,548,703</td>\n", " <td>120,716,164,596</td>\n", " <td>991,072</td>\n", " <td>10,865.12</td>\n", " <td>-30.34</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>108/07/03</td>\n", " <td>4,246,162,907</td>\n", " <td>112,714,237,324</td>\n", " <td>938,659</td>\n", " <td>10,743.77</td>\n", " <td>-121.35</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>108/07/04</td>\n", " <td>3,797,646,624</td>\n", " <td>98,158,438,333</td>\n", " <td>828,014</td>\n", " <td>10,775.90</td>\n", " <td>32.13</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>108/07/05</td>\n", " <td>3,400,302,424</td>\n", " <td>86,511,212,135</td>\n", " <td>752,681</td>\n", " <td>10,785.73</td>\n", " <td>9.83</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " 日期 成交股數 成交金額 成交筆數 發行量加權股價指數 漲跌點數\n", "0 108/07/01 4,985,631,880 145,664,096,932 1,089,572 10,895.46 164.63\n", "1 108/07/02 4,295,548,703 120,716,164,596 991,072 10,865.12 -30.34\n", "2 108/07/03 4,246,162,907 112,714,237,324 938,659 10,743.77 -121.35\n", "3 108/07/04 3,797,646,624 98,158,438,333 828,014 10,775.90 32.13\n", "4 108/07/05 3,400,302,424 86,511,212,135 752,681 10,785.73 9.83" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "stock = get_stock_data(start_year = 2019, start_month = 7, end_year = 2019, end_month = 9)\n", "stock.head()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "stock.to_csv(\"TAIEX.csv\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 }