Pythonでサクッと株価データをゲットする方法
Pythonを使って株価分析をしてみたい方向けの記事になります。
Pandas Datareaderというライブラリーを使って
サクッと株価データをゲットする方法をご紹介します。
✅ Pandas Datareaderってどんなライブラリー?
Pandas Datareaderは、
株価、為替レート、経済指標などのデータを簡単に取得し、
PandasのDataFrame形式で扱うことができるライブラリーです。
データソースとして、
Stooq、
Yahoo ファイナンス,
Google ファナンス,
Quandl
などをサポートしています。
この記事では、
データソースとして、
StooqとYahooファイナンスを使っていきます。
📈"Stooq"でゲットしよう
TOPIX(東証株価指数)の1年分の株価を取得します。
1️⃣必要なライブラリーをインポートします
import pandas_datareader.data as web
from datetime import date
import pandas as pd
2️⃣データソース、取得期間、株価ティッカーコードの指定をします。
データソースは、"Stooq"
取得期間は、2023年4月1日〜2024年3月29日
取得する株価は、TOPIX(ティッカー:^TPX)とします。
# データソース
source = 'stooq'
# 取得期間
dt_s = date(2023, 4 1)
dt_e = date(2024, 3, 29)
# 株価ティッカー
symbol = '^TPX'
3️⃣DataReaderに引数を与えて実行します。
実行結果をデータフレームで取得します。
df_topix = web.DataReader(symbol, source, dt_s, dt_e)
df_topix = df_topix.sort_values("Date").reset_index()
df_topix
実行結果
TOPIXの値動きが取得できていますね。
📈 "Yahooファイナンス"でゲットしよう
日経平均株価の1年分の株価を取得します。
1️⃣ライブラリーのインポートと、データソースのインスタンス化をします
import yfinance as yf
yf.pdr_override()
2️⃣取得期間、ティッカーの指定をします。
取得期間は、2021年4月1日〜2024年3月29日
取得する株価は、日経平均株価(ティッカー:^N225)とします。
# 取得期間
dt_s = date(2023, 4, 1)
dt_e = date(2024, 3, 30) #エンドは最終日+1日
# 株価ティッカー
ticker = '^N225'
3️⃣DataReaderに引数を与えて実行します。
実行結果をデータフレームで取得します。
df = web.get_data_yahoo(tickers=ticker,start=dt_s,end=dt_e).reset_index()
df
実行結果
Yahooファイナンスの場合、
Adj Closeというカラムがあります。
これは、株価の分割・併合があった場合の
調整後株価になります。
基本的にはこのAdj Closeを使うと良いでしょう
🌈 複数銘柄の株価情報をまとめてゲットしよう
ここまでは1銘柄の株価を取得してきましたが、
最後に、複数銘柄の株価をまとめて取得してみましょう。
Yahooファイナンスを使います。
▶️▶️証券コードのファイル
以下のファイルは、東証プライム市場に上場している銘柄の証券コード(Code)と企業名(CompanyName)が格納されたCSVファイルです。
このCSVファイルに格納されている企業の
株価を取得していきます。
1️⃣CSVファイルの読み込み&codeリストの作成
まず、CSVファイルを読み込み、
codeというリストに証券コードを格納します。
df_code = pd.read_csv("/content/prime_code.csv")
code = df_code["Code"].tolist()
code
2️⃣取得開始日と終了日を設定したうえで、以下のコードを実行します
from tqdm import tqdm
# 開始日と終了日を設定
dt_s = date(2023,4,1)
dt_e = date(2024,3,30) #エンドは最終日+1日
# 株価データを格納するDataFrameを作成
stock_data = pd.DataFrame()
# 各銘柄について株価データを取得し、DataFrameに追加
for c in tqdm(code):
try:
data = web.get_data_yahoo(f"{c}.T",start=dt_s,end=dt_e).reset_index()
stock_data["Date"] = data["Date"]
stock_data[c] = data[["Adj Close"]]
except Exception as e:
print(e)
#欠損データは削除します
stock_data.dropna(axis=1,inplace=True)
stock_data
実行結果
1,646銘柄の株価が取得できました。
🎉Stooqで取得したTOPIXデータとマージしてみます
stock_data = pd.merge(
stock_data,
df_topix[["Date","Close"]],
how="left",
on="Date"
)
stock_data = stock_data.rename(columns={"Close":"TOPIX"})
stock_data
TOPIXとマージできましたね
🎁おまけ 為替情報をゲットする
Yahooファイナンスなら
米ドル円などの為替情報も簡単にゲットできます
1996年11月からの
米ドル円の月足データを取得してみました。
ティッカーは、"USDJPY=X"を指定します。
get_data_yahooの引数として、interval="1mo"を指定します。
# 取得期間
dt_s = date(1996, 11, 1)
dt_e = date(2024, 3, 30) #エンドは最終日+1日
ticker = "USDJPY=X"
df = web.get_data_yahoo(tickers=ticker,start=dt_s,end=dt_e,interval='1mo').reset_index()
df
出力結果
ちゃんとゲットできていますね
さいごに
Pythonを最大限活用して、
良き投資ライフを!!
よろしければサポートお願いします! いただいたサポートはクリエイターとしての活動費に使わせていただきます!