eightban's memo

残しておきたい記事をまとめてみました。このブログに書いてあるドキュメントやブログで配布しているファイルの使用によって発生するいかなる損害に対してもこのブログの管理者は責任を負いません。使用する場合は自己責任のもとに使用してください。

Python

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')

CSV データの加工をバッチ処理で行う

-Python,

Copyright© eightban's memo , 2024 All Rights Reserved Powered by STINGER.