獲取股票資料庫的方式,大概有下列幾種:
1.向Bloomberg、CMoney等機構購買數據資料
2.網路爬蟲
3.yfinance API (Yahoo股價資料庫) (最簡單)
本篇就講解如何用 yfinance 來取得美股的資料
首先,用 pip 安裝 yfinance 套件
pip install yfinance
接著我用蘋果(美股代號:AAPL)做範例,
import yfinance as yf
aapl = yf.Ticker("AAPL")
price_data = aapl.history(period="max")
print price_data
輸出結果:
資料是從 1980~現在,所以資料相當多,通常我只要取得前一天的價格來做參考,
以將 period="max" 改為 "1d"
import yfinance as yf
aapl = yf.Ticker("AAPL")
price_data = aapl.history(period="1d")
print price_data
輸出結果:
資料欄位分別是開盤價,當日最高價,當日最低價,收盤價,交易量等資訊,
如果只想要取得收盤價格可以 print price_data.Close
import yfinance as yf
aapl = yf.Ticker("AAPL")
price_data = aapl.history(period="1d")
print price_data.Close
輸出結果:
那如果要同時關注多個公司股價呢? 例如,我想同時取得蘋果(AAPL),微軟(MSFT),特斯拉(TSLA), 亞馬遜(AMZN)的前一天收盤價格該怎麼做?
首先將這些美股代碼放進一個 list,然後用迴圈去遍歷這些美股代號取得報價
import yfinance as yf
stock_lst = ['AAPL', 'MSFT', 'TSLA', 'AMZN']
for name in stock_lst:
hist = yf.Ticker(name)
price = hist.history(period='1d')
print name, price.Close
輸出結果:
import yfinance as yf
stock_lst = ['AAPL', 'MSFT', 'TSLA', 'AMZN']
for name in stock_lst:
hist = yf.Ticker(name)
price = hist.history(period='1d')
print '%4s:'%name, '%7.2f'%price.Close
print
輸出結果:
是不是很簡單呢!
另外一種方式是用 download 一次取得多筆股價,資料以panda dataframe 儲存
import yfinance as yf
df = yf.download('AAPL MSFT TSLA AMAZ', period='1d')
print df.Close
輸出結果:
輸出至 csv 的檔案,可以藉由 Excel 開啟,範例中我將 df 資料存到 price.csv 檔案中
import yfinance as yf
import pandas as pd
df = yf.download('AAPL MSFT TSLA AMZN', period='1d')
print df.Close
df.Close.to_csv('price.csv')
也可以自訂期間
df = yf.download('AAPL MSFT TSLA AMZN', start='2021-10-20', end='2021-11-06')
另外可以參考R的做法: