上一篇的完整程式碼是這樣的
from pandas_datareader import data as web
import datetime as dt
import fix_yahoo_finance as yf
import warnings
warnings.filterwarnings("ignore")
yf.pdr_override()
start = dt.datetime(2000, 1, 1)
end = dt.datetime(2016, 1, 1)
df = web.get_data_yahoo(['2002.TW'],start, end)
df.to_csv(r'f:\2002.TW.csv')
那小小改造一下, 畢竟我很懶, 但又想把整個資料都弄到硬碟裡, 那就隨便弄個迴圈吧
先觀察一下, df = web.get_data_yahoo(['2002.TW'],start, end) 裡面['2002.TW']是一個list, TW表示上市股票
stock = []
for i in range(1101,9999) :
j = str(i) + ".TW"
stock.append(j)
首先弄一個空list, 然後範圍是1101開始, 因為上市股票從1101台泥開始
然後每個i都要加上TW變成j
看一下前五筆資料
然後再寫一個迴圈
for k in stock :
df = web.get_data_yahoo([k],start, end)
if df.empty == False:
df.to_csv(k + '.csv')
else :
pass
因為靠剛剛寫的第一個迴圈, web.get_data_yahoo會把空資料也抓下來
所以多寫df.empty == False, 如果是False就pass
如果需要上櫃, 就把TW改成TWO就可以囉
那因為網友反應有誤, 所以我加上了錯誤的狀況處理, 大家可以跑跑看喔~
from pandas_datareader import data as web
import datetime as dt
import fix_yahoo_finance as yf
import warnings
warnings.filterwarnings("ignore")
yf.pdr_override()
start = dt.datetime(2010, 1, 1)
end = dt.datetime(2016, 12, 31)
stock = []
for i in range(1101,2002) :
j = str(i) + ".TW"
stock.append(j)
for k in stock :
try :
df = web.get_data_yahoo([k],start, end)
if df.empty == False:
df.to_csv(k + '.csv')
else :
pass
except :
pass
留言列表