Tech`s Report

【Python】yahooAPIを使用して株価取得(Python)

フリーエンジニア向け案件を紹介【BTCエージェント】

yahooAPIを使用して米国株の情報を取得する方法をご紹介します。
 

 

事前準備

yahooAPIを使用するために、コマンドプロンプトから下記コードを入力しライブラリをインストールしてください。既に下記ライブラリをインストール済の方は不要です。

・yahoo-finance-api2のインストール

pip install yahoo-finance-api2

 

・pandas-datareaderのインストール

pip install pandas-datareader

 

そもそもPythonの開発環境を持っていないという方はこちらを参考に無料構築してみてください。
https://yu-report.com/entry/pythonInstall
 

サンプルコード

実装

from yahoo_finance_api2 import share
from yahoo_finance_api2.exceptions import YahooFinanceError
import pandas as pd


# ティッカーコード格納
my_share = share.Share('ZM')

# yahooAPIの使用
symbol_data = my_share.get_historical(share.PERIOD_TYPE_WEEK, 1,
                                        share.FREQUENCY_TYPE_DAY, 1)
# レスポンスの成型
df = pd.DataFrame(symbol_data.values(), index=symbol_data.keys()).T

# 出力
print(df.close[int(len(df))-1])

補足説明

yahooAPIの使用
# yahooAPIの使用
symbol_data = my_share.get_historical(share.PERIOD_TYPE_WEEK, 1,
                                        share.FREQUENCY_TYPE_DAY, 1)

「get_historical」の引数で取得期間などを選択可能です。

レスポンスの成形
# レスポンスの成型
df = pd.DataFrame(symbol_data.values(), index=symbol_data.keys()).T

レスポンスの値はそのままだと数字の羅列のため成形します。

ちなみに
レスポンス値をそのまま出力すると以下のようになります。

{'timestamp': [1603114200000, 1603200600000, 1603287000000, 1603373400000, 1603459800000], 'open': [572.5, 572.3300170898438, 535.8800048828125, 521.780029296875, 522.3300170898438], 'high': [588.8400268554688, 575.6900024414062, 551.6599731445312, 530.4299926757812, 527.0], 'low': [562.5499877929688, 534.5900268554688, 511.7799987792969, 503.4700012207031, 
505.4100036621094], 'close': [568.3400268554688, 537.02001953125, 513.1900024414062, 520.5399780273438, 511.5199890136719], 'volume': [15193200, 12098200, 9215400, 8100900, 5333400]}

 

そして成型後は以下になります。

      timestamp        open        high         low       close      volume
0  1.603114e+12  572.500000  588.840027  562.549988  568.340027  15193200.0
1  1.603201e+12  572.330017  575.690002  534.590027  537.020020  12098200.0
2  1.603287e+12  535.880005  551.659973  511.779999  513.190002   9215400.0
3  1.603373e+12  521.780029  530.429993  503.470001  520.539978   8100900.0
4  1.603460e+12  522.330017  527.000000  505.410004  511.519989   5333400.0

 
 

任意の値の取り出し

今回は前日の終値(close)をを取得してます。

# 出力
print(df.close[int(len(df))-1])

配列なので「df.close[4]」で前日の終値(close)を取得可能ですが、上記のように配列のサイズ-1でもOKです。

以上で、米国株の前日終値を取得可能です。
是非使用してみてください。