【Python】株価データを自動で取得する方法
Pythonを使って株で儲ける勉強を始めました(笑)。
まずは株価を自動で取得する方法の備忘録です。
pandas_datareader と yfinance の2つライブラリを使って、米国Yahoo! Finance から株価の日足データを取得します。
【動作環境】
・Windows11 Home
・Anaconda 2.4.2 / Python 3.9.17
・pandas_datareader 0.10.0
・yfinance 0.2.27
Pandas_datareader のインストール
pandas_datareader はAnaconda用ライブラリがないので、pipでインストールします。
pip install pandas-datareader
pandas_datareader の公式ページに、Yahoo! Financeからデータを取得するサンプルコードが記載されていますが、試してみたところエラーで取得できません。
次に説明するyfinance と合わせて使うことで株価の取得ができる様になります。
yfinance のインストール
yfinance は pandas_datareader にオーバーライドして、Yahoo! Financeから株価を取得するためのライブラリです。
Anaconda用があるので私はこちらをインストールしますが、もちろん pip でもインストールできます。
conda install -c conda-forge yfinance
Github の yfinance 公式ページに、yfainance を pandas_datareader にオーバーライドさせて使うサンプルソースが公開されているので、これを使ってみます。
株価を自動取得するサンプルコード
下のサンプルプログラムは、2000年1月1日から今日までの東京証券取引所のソニーの株価を取得し、csvファイルに保存します。
from pandas_datareader import data as pdr
import yfinance as yf
import datetime
code = '6758.T'#ソニー
csv_name = code + '.csv'
start = datetime.datetime(2000, 1, 1)#開始日
end = datetime.date.today()#終了日を本日に設定
yf.pdr_override()#pandas_datareaderにyfinanceをオーバーライドする
data = pdr.get_data_yahoo(code, start, end)
data.to_csv(csv_name)
print(data.head())
print(data.tail())
確認のためにデータの最初と最後の5つも表示しており、Jupyter Notebookでは次の様に表示されました。
[*********************100%***********************] 1 of 1 completed
Open High Low Close Adj Close Volume
Date
2000-01-04 15000.0 16125.0 4975.0 15350.0 12885.990234 8794200
2000-01-05 13850.0 13850.0 13850.0 13850.0 11626.772461 2073200
2000-01-06 13550.0 13625.0 12850.0 12850.0 10787.291016 9919800
2000-01-07 11850.0 12050.0 11850.0 11850.0 9947.810547 9360200
2000-01-11 12850.0 12850.0 12850.0 12850.0 10787.291016 2482600
Open High Low Close Adj Close Volume
Date
2023-08-04 12890.0 12990.0 12845.0 12925.0 12925.0 2027500
2023-08-07 12820.0 12975.0 12785.0 12915.0 12915.0 1724600
2023-08-08 12950.0 13015.0 12840.0 12975.0 12975.0 2060800
2023-08-09 12875.0 13045.0 12860.0 12985.0 12985.0 2253800
2023-08-10 12385.0 12635.0 12115.0 12565.0 12565.0 7794900
csvファイルを読み出すときの注意点
保存したcsvファイルを自動取得データと同じ形でDataframeに取り込むには、
・’Date’をインデックスにする(index_col=0)
・’Date’をdatetimeに変換(parse_dates=True)
という作業が必要になります。
import pandas as pd
import datetime
code = '6758.T'#ソニー
csv_name = code + '.csv'
#データをdfに取り込む
data = pd.read_csv(csv_name, index_col=0, parse_dates=True, infer_datetime_format=True)
#データの確認
print(data.head())
print(data.tail())
まとめ
pandas_datareader と yfinance の2つライブラリを使って、株価データを取得することができました。
これを使ってどうすれば儲けることができるのか!
次はバックテストのやり方を勉強します。