Python で過去の株価データを CSVデータで取得する
Python のライブラリーを使えば簡単に株価をダウンロードすることができます
yfinance
Yahoo!ファイナンスAPI を使用する Python ライブラリです
Yahoo!、Y!Finance、Yahoo! financeは、Yahoo!ファイナンスの登録商標です。 Yahoo!の利用規約を参照してください。 ダウンロードされた実際のデータを使用する権利の詳細。- Yahoo!ファイナンスAPIは、個人使用のみを目的としています。 |
Yahoo Developer API Terms of Use | Yahoo
GitHub – ranaroussi/yfinance: Download market data from Yahoo! Finance’s API
Reliably download historical market data from with Python | Ran Aroussi (Official Website)
Python の 環境構築
Windows の環境構築
ライブラリーが競合する可能性がある場合に仮想環境を構築した方が良いです
yfinance のインストールと使い方
インストールは"WinPython Command Prompt.exe"を実行した後
pip install yfinance
プログラムを作成し実行するには"Spyder.exe"または"Jupyter Notebook.exe"を使うと良いです
データを取得するソース
開始日と終了日または機関を指定してデータをダウンロードします。取得する間隔も指定します
#ライブラリのインポート
import pandas as pd
import yfinance as yf
import datetime
#ターゲットを指定
tickers = "AMZN AAPL"
st='2024-01-01'
ed=datetime.date.today()
#株価データを取得
data = yf.download(tickers=tickers, start=st, end=ed, auto_adjust=True)
print(data)
#data.to_csv('ticker.csv')
# 日経平均株価のデータを取得
tickers = "^N225"
#tickers = "^DJI" # ダウ
#tickers = "^GSPC" # S&P500
#tickers = "^IXIC" # ナスダック
data = yf.download(ticker , period= "7d", interval = "1d")
print(data)
#data.to_csv('ticker.csv')
# # トヨタ自動車の株価データを取得
tickers = "7203.T"
data = yf.download(tickers, period= "7d", interval = "1d")
print(data)
#data.to_csv('ticker.csv')
銘柄コードの書いてあるテキストファイルを読んで CSV データをダウンロードする
銘柄コードや期間と間隔変更して使用してください
サーバーに負荷がかからないように大量のデータはお控えください
import pandas as pd
import yfinance as yf
#tickers = ['AAPL', 'MSFT']
df2 = pd.read_csv('N225.txt', header=None)
tickers = df2.to_numpy().tolist()
print(tickers)
df = pd.DataFrame()
for ticker in tickers:
data = yf.download(ticker, group_by="Ticker", period='2d')
data['tick'] = "ticker"
df = pd.concat([df, data])
df["tick"] = df["tick"].replace(["ticker"], [ticker])
df.to_csv('ticker.csv')
入力データ
7203.T
1332.T
出力データのサンプル架空のデータです
Date,Open,High,Low,Close,Adj Close,Volume,tick
2025-02-29,3560.0,3629.0,3540.0,3621.0,3621.0,143900,1000.T
パラメーター
tickers : str, list
ダウンロードするティッカーのリスト
period : str
Valid periods: 1d,5d,1mo,3mo,6mo,1y,2y,5y,10y,ytd,max
有効期間: 1日、5日、1ヶ月、3ヶ月、6ヶ月、1年、2年、5年、10年、年月、最大
期間パラメータを使用するか、開始と終了を使用します
interval : str
Valid intervals: 1m,2m,5m,15m,30m,60m,90m,1h,1d,5d,1wk,1mo,3mo
有効な間隔: 1分、2分、5分、15分、30分、60分、90分、1時間、1日、5日、1週間、1ヶ月、3ヶ月
日中データは過去 60 日間延長できません
start: str
ダウンロード開始日文字列 (YYYY-MM-DD) または _datetime (両端を含む)。
デフォルトは99年前です
例えば。 start="2020-01-01" の場合、最初のデータ ポイントは "2020-01-01" になります。
end: str
ダウンロード終了日文字列 (YYYY-MM-DD) または _datetime (排他的)。
デフォルトは現在です
例えば。 end="2023-01-01" の場合、最後のデータ ポイントは "2022-12-31" になります。
group_by : str
「ティッカー」または「列」でグループ化(デフォルト)
prepost : bool
市場前と市場後のデータを結果に含めますか?
デフォルトはFalseです
auto_adjust: bool
すべてのOHLCを自動的に調整しますか? デフォルトはFalseです
repair: bool
通貨単位の 100 倍の取り違えを検出し、修復を試みます
デフォルトはFalseです
keepna: bool
Yahoo から返された NaN 行を保持しますか?
デフォルトはFalseです
actions: bool
配当+株式分割データをダウンロードします。 デフォルトはFalseです
threads: bool / int
一括ダウンロードに使用するスレッドの数。 デフォルトはTrueです
ignore_tz: bool
異なるタイムゾーンを組み合わせる場合は、日時のその部分を無視してください。
デフォルトは間隔によって異なります。 日中 = false。 Day+ = True
proxy: str
オプション。 プロキシサーバーのURLスキーム。 デフォルトはなしです
rounding: bool
オプション。 値を小数点以下 2 桁に四捨五入しますか?
show_errors: bool
オプション。 Falseの場合はエラーを出力しません
非推奨、将来のバージョンでは削除される予定です
session: None or Session
そうでない場合は、指定された回数の後に応答の待機を停止します。
秒。 (0.01 など、1 秒未満の場合もあります)
オプション。 すべてのリクエストに使用される独自のセッション オブジェクトを渡します
Google Colaboratory
Colab(正式名称「Colaboratory」)では、ブラウザ上で Python を記述、実行できます。以下の機能を使用できます。
- 環境構築が不要
- GPU に料金なしでアクセス
- 簡単に共有
https://colab.research.google.com/notebooks/welcome.ipynb?hl=ja
!pip install yfinance
import pandas as pd
import yfinance as yf
#tickers = ['AAPL', 'MSFT']
df2 = pd.read_csv('/content/N225.txt', header=None)
tickers = df2.to_numpy().tolist()
print(tickers)
df = pd.DataFrame()
for ticker in tickers:
data = yf.download(ticker, group_by="Ticker", period='2d')
data['tick'] = "ticker"
df = pd.concat([df, data])
df["tick"] = df["tick"].replace(["ticker"], [ticker])
df.to_csv('/content/ticker.csv')
ディスカッション
コメント一覧
まだ、コメントがありません