{ "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": [ "" ] }, "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分公告匯率換算後加入成交金額。
公告匯率請參考本公司首頁>產品與服務>交易系統>雙幣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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012345
0109/07/015,812,063,202193,056,259,8361,471,74711,703.4282.18
1109/07/026,091,006,206191,309,888,3831,487,51311,805.14101.72
2109/07/036,484,752,215218,879,744,4251,666,68011,909.16104.02
3109/07/067,916,423,089252,079,466,7651,951,31612,116.70207.54
4109/07/077,651,045,729277,506,544,4861,994,92212,092.97-23.73
5109/07/086,363,746,201242,676,395,2671,755,00012,170.1977.22
6109/07/096,645,387,543252,727,573,2131,866,15212,192.6922.50
7109/07/107,031,694,732261,020,496,1741,983,06512,073.68-119.01
8109/07/136,140,389,276211,132,055,8291,586,14012,211.56137.88
9109/07/146,197,831,696205,369,887,7771,561,07112,209.01-2.55
10109/07/156,756,734,156240,427,292,3081,778,65112,202.85-6.16
11109/07/165,770,300,669199,619,270,9421,466,90712,157.74-45.11
12109/07/175,938,809,215200,271,062,9501,595,71712,181.5623.82
13109/07/205,326,683,162176,439,351,2361,378,13012,174.54-7.02
14109/07/216,781,208,219225,623,414,6311,684,74712,397.55223.01
15109/07/226,475,848,930226,256,572,8161,619,26712,473.2775.72
16109/07/236,566,842,345228,150,200,2251,573,09612,413.04-60.23
17109/07/247,302,839,893268,423,485,1191,868,84912,304.04-109.00
18109/07/276,497,324,062256,612,208,0601,698,00112,588.30284.26
19109/07/287,749,667,366348,922,817,7802,066,03212,586.73-1.57
20109/07/295,900,556,154221,220,518,6091,504,20212,540.97-45.76
21109/07/305,882,978,873215,707,482,4861,489,30412,722.92181.95
22109/07/315,953,761,412210,436,131,5731,422,26612,664.80-58.12
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012345
0109/07/015,812,063,202193,056,259,8361,471,74711,703.4282.18
1109/07/026,091,006,206191,309,888,3831,487,51311,805.14101.72
2109/07/036,484,752,215218,879,744,4251,666,68011,909.16104.02
3109/07/067,916,423,089252,079,466,7651,951,31612,116.70207.54
4109/07/077,651,045,729277,506,544,4861,994,92212,092.97-23.73
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
日期成交股數成交金額成交筆數發行量加權股價指數漲跌點數
0109/07/015,812,063,202193,056,259,8361,471,74711,703.4282.18
1109/07/026,091,006,206191,309,888,3831,487,51311,805.14101.72
2109/07/036,484,752,215218,879,744,4251,666,68011,909.16104.02
3109/07/067,916,423,089252,079,466,7651,951,31612,116.70207.54
4109/07/077,651,045,729277,506,544,4861,994,92212,092.97-23.73
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
日期成交股數成交金額成交筆數發行量加權股價指數漲跌點數
0109/06/014,975,164,301169,563,746,9471,350,61311,079.02136.86
1109/06/024,974,734,421182,409,278,9021,399,68411,127.9348.91
2109/06/036,431,206,610214,594,995,1121,670,72311,320.16192.23
3109/06/045,944,102,520203,655,766,4081,550,40211,393.2373.07
4109/06/055,782,637,500181,156,372,5731,522,63411,479.4086.17
\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
日期成交股數成交金額成交筆數發行量加權股價指數漲跌點數
0108/07/014,985,631,880145,664,096,9321,089,57210,895.46164.63
1108/07/024,295,548,703120,716,164,596991,07210,865.12-30.34
2108/07/034,246,162,907112,714,237,324938,65910,743.77-121.35
3108/07/043,797,646,62498,158,438,333828,01410,775.9032.13
4108/07/053,400,302,42486,511,212,135752,68110,785.739.83
5108/07/083,738,945,15397,082,027,949815,37210,751.22-34.51
6108/07/093,474,464,38694,204,036,152836,47510,702.78-48.44
7108/07/104,044,852,809104,197,474,125932,56210,798.4895.70
8108/07/114,997,530,807132,057,394,0721,071,49710,843.4244.94
9108/07/124,559,013,456122,217,270,4211,031,49510,824.35-19.07
10108/07/154,625,135,650120,541,529,8711,005,17510,876.4352.08
11108/07/164,451,418,488119,695,164,2491,037,33510,886.059.62
12108/07/174,588,257,766116,341,167,9001,048,00210,828.48-57.57
13108/07/184,212,328,479106,205,765,697961,38010,799.28-29.20
14108/07/194,502,161,924123,566,684,603982,41010,873.1973.91
15108/07/224,435,604,953118,654,132,818977,98010,944.5371.34
16108/07/234,564,947,566127,879,150,4271,077,69710,947.262.73
17108/07/244,789,346,753133,129,096,4091,132,54510,935.76-11.50
18108/07/255,034,848,310133,885,703,3981,131,68610,941.415.65
19108/07/264,227,775,498111,794,836,9051,002,79410,891.98-49.43
20108/07/293,873,144,739105,524,746,606945,53110,885.73-6.25
21108/07/304,493,608,915131,409,613,8911,099,18110,830.90-54.83
22108/07/314,476,398,294131,643,019,3171,046,16010,823.81-7.09
23108/08/014,521,619,307131,058,984,5901,098,15910,731.75-92.06
24108/08/025,675,601,956159,939,135,8831,300,39410,549.04-182.71
25108/08/054,911,728,030129,390,816,8371,107,93910,423.41-125.63
26108/08/066,008,242,875146,038,029,5011,232,63410,394.75-28.66
27108/08/074,468,033,535121,765,614,1431,059,31810,386.18-8.57
28108/08/084,470,132,577124,081,823,011998,88810,494.49108.31
29108/08/124,517,408,511126,685,737,9571,065,93010,472.36-22.13
.....................
33108/08/164,700,960,825120,048,343,2621,133,57410,420.8993.76
34108/08/194,574,050,378120,476,924,0841,068,01910,488.7567.86
35108/08/204,542,661,753121,491,792,4561,070,48010,522.5033.75
36108/08/213,932,448,282111,080,424,7601,006,29910,525.803.30
37108/08/224,396,250,909123,271,367,1081,072,36010,529.783.98
38108/08/233,942,656,466110,007,554,049947,66910,538.118.33
39108/08/264,862,207,637117,049,586,3451,016,15410,354.57-183.54
40108/08/274,120,194,542123,691,150,076894,54910,387.2332.66
41108/08/283,597,431,879102,092,710,347878,57210,434.2947.06
42108/08/293,866,814,680104,248,701,178937,81310,462.4328.14
43108/08/305,323,560,006148,217,313,0121,199,59810,618.05155.62
44108/09/024,333,278,342105,848,766,031981,74410,634.8516.80
45108/09/034,043,809,186105,576,630,318949,72710,558.21-76.64
46108/09/044,338,123,349107,093,494,944972,29510,657.3199.10
47108/09/056,013,120,362154,662,076,2941,261,81410,756.9399.62
48108/09/064,827,692,321131,307,111,6261,107,36110,780.6423.71
49108/09/094,543,925,038116,733,239,4981,027,77310,801.1420.50
50108/09/104,475,712,468121,338,149,239986,05210,753.58-47.56
51108/09/114,310,865,154119,937,917,952974,73610,790.3536.77
52108/09/124,330,422,356120,872,609,647962,90110,827.5537.20
53108/09/164,390,073,832119,576,475,6701,005,02510,898.1370.58
54108/09/174,238,580,734117,546,611,9371,001,01710,874.50-23.63
55108/09/184,380,465,735130,465,246,0471,113,80910,929.4554.95
56108/09/194,094,709,966114,671,100,910922,56710,894.70-34.75
57108/09/204,712,806,256147,979,569,7071,015,74310,929.6934.99
58108/09/233,976,565,745106,841,123,621978,96410,919.02-10.67
59108/09/243,872,481,764109,707,784,1471,013,26110,918.01-1.01
60108/09/253,880,868,893106,259,302,170954,40710,873.69-44.32
61108/09/263,878,756,606116,018,960,126945,74510,871.99-1.70
62108/09/274,211,145,537124,771,598,2301,031,08910,829.68-42.31
\n", "

63 rows × 6 columns

\n", "
" ], "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": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
日期成交股數成交金額成交筆數發行量加權股價指數漲跌點數
0108/07/014,985,631,880145,664,096,9321,089,57210,895.46164.63
1108/07/024,295,548,703120,716,164,596991,07210,865.12-30.34
2108/07/034,246,162,907112,714,237,324938,65910,743.77-121.35
3108/07/043,797,646,62498,158,438,333828,01410,775.9032.13
4108/07/053,400,302,42486,511,212,135752,68110,785.739.83
\n", "
" ], "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 }