【Python】pandas_datareaderで株価を取得!

Python


こんにちは、とりりんです。

今回はPythonを使って株価データを取得する方法を紹介します。

こんな方向けに書いています!

  • プログラミング勉強中の方
  • データ解析をしている方
  • データを使って練習したい方
  • 投資×プログラミングを実行したい方

是非最後まで読んでいただけると嬉しいです!

スポンサーリンク


Pythonから株価をダウンロード!

株価データを取得するのってWebからどーのこーのしなければならないため、めんどくさいなぁと思っていました。

しかし、Pythonでpandas_datareader.stooqを使えば簡単に出来ちゃいました!

データ元はStooqです。

Pythonのソースコード

まず全部のっけちゃいます!

argparseなどをpipでインストールしないと動かないかもしれません。

import argparse
import pandas_datareader.stooq as web
      
from datetime import datetime
      
      
def main():
    args = Parse()
      
    GetStockPrice(args)
      
      
    
def Parse():
    """
    Get CommandLine Arguments
    
    Note:
        Input Date: YYYYMMDD
    """

    parser = argparse.ArgumentParser()
    parser.add_argument("start", type=str)
    parser.add_argument("end", type=str)
    parser.add_argument("-b", "--brand", type=str, default="TSLA")
    parser.add_argument("-s", "--savePath", type=str, default="./stock.csv")
    
    args = parser.parse_args()
    
    return args



def GetStockPrice(args):
    """
    Get Daily Stock Price Between $start and $end

    Args:
        args (argparse): CommandLine Arguments
    """

    # str -> datetime
    start = datetime.strptime(args.start, "%Y%m%d")
    end = datetime.strptime(args.end,  "%Y%m%d")

    # データ読み込み&保存
    data = web.StooqDailyReader(args.brand, start=start, end=end)
    reader = data.read()
    reader.to_csv(args.savePath)


    
if __name__ == "__main__":
    main()

コマンドライン引数を用いているため面倒くさいことになってますが、使い方は簡単です。

基本は、python [ファイル名] [コマンドライン引数]です。

スポンサーリンク

では、各関数に関して説明します。

def Parse():
    """
    Get CommandLine Arguments
    
    Note:
        Input Date: YYYYMMDD
    """

    parser = argparse.ArgumentParser()
    parser.add_argument("start", type=str)
    parser.add_argument("end", type=str)
    parser.add_argument("-b", "--brand", type=str, default="TSLA")
    parser.add_argument("-s", "--savePath", type=str, default="./stock.csv")
    
    args = parser.parse_args()
    
    return args

コマンドライン引数に関しては、Parse()で取得します。

コマンドライン引数の設定は10~13行目で指定しています。

コマンドライン引数には取得したい株価データの開始時刻と終了時刻は入れてください(これらは必須)。

形式はYYYYMMDD(例えば、20211031)です。

また、コマンドライン引数には銘柄と保存ファイルパスを指定可能(オプションなので任意)です。

これらは指定する必要はありませんが、指定しない場合はデフォルト値(銘柄はテスラ、保存ファイルパスはstock.csv)が入ってしまいます。

スポンサーリンク


変更したい場合は、コマンドライン引数に-b AAPLみたいな感じで入れてください。

def GetStockPrice(args):
    """
    Get Daily Stock Price Between $start and $end

    Args:
        args (argparse): CommandLine Arguments
    """

    # str -> datetime
    start = datetime.strptime(args.start, "%Y%m%d")
    end = datetime.strptime(args.end,  "%Y%m%d")

    # データ読み込み&保存
    data = web.StooqDailyReader(args.brand, start=start, end=end)
    reader = data.read()
    reader.to_csv(args.savePath)

次にGetStockPrice(args)関数の説明です。

こちらが本題で、先ほど入力したコマンドライン引数の情報を用いて、株価データを取得します。

まず、時刻はYYYYMMDDと文字列で取得したため、strptimeでdatetime型に直す必要があります(10, 11行目)。

その後、pandas_datareader.stooq.StooqDailyReaderで株価データを取得します(14~16行目)。

この処理はインターネットに接続されている必要があります。

その後、取得したデータを読み込み、csv形式のファイルに保存するだけです。

実質3行!簡単に実装できました!

pandas_datareader.stooq.StooqDailyReaderは日足データが取得できますが、週足等の対応もしているんですかね。

まとめ

今回は株価データをPythonで取得する方法を紹介しました!

pandas_datareader.stooqを使えばすごい簡単に実装可能なので、株価データを使ったデータ解析などをしたい方は是非使ってみてください!

最後までご覧いただき、ありがとうございました!


Python


伊藤園の「株価」は「気温」と関係ある?

↓とりりんを応援して頂けると嬉しいです!↓
にほんブログ村 投資ブログ お金(投資)へ
にほんブログ村

スポンサーリンク



コメント

タイトルとURLをコピーしました