Python:TOPIX に含まれる銘柄の配当利回りを取得する

日本取引所グループで公開されていた“構成銘柄別ウエイト一覧(1月末現在)”に、配当利回りの列を付与してみました。

  • 銘柄コードの終わりが “.0″ だったので、”.T” に置換。それで良いのか未検証。
  • 配当利回り等の値は Yahoo Finance から取得。

Yahoo ファイナンス JAPAN で見られる株式ランキングの値と異なっていたので、終値と一株配当も付与してみました。
※ 作成したソースコード及びその結果の一覧は保証しません。

配当利回りなどの列を追加した一覧をダウンロード(2024/03/16 作成)

import pandas as pd
import yfinance as yf

# TOPIX 構成銘柄別ウエイト一覧(1月末現在)
csv_url = (
    "https://www.jpx.co.jp/markets/indices/topix/"
    "tvdivq00000030ne-att/topixweight_j.csv"
)
df = pd.read_csv(csv_url, encoding="shift_jis")

# 不要な列を削除
df = df.drop(columns=["日付"])
df = df.drop(columns=["ニューインデックス区分"])
# "コード"列が数字で始まっている行のみにし、".0"を".T"に置換
df = df[df["コード"].astype(str).str.match("^\\d")]
df["コード"] = df["コード"].astype(str).str.replace("\\.0$", ".T", regex=True)

# 銘柄コード毎に次の値を格納
# - 配当利回り
# - 終値
# - 一株配当
dividend_yields = []
close_prices = []
dividends_per_share = []
for code in df["コード"]:
    stock_info = yf.Ticker(code)
    dividend_yield = stock_info.info.get("dividendYield", None)
    dividend_yields.append(dividend_yield)
    close_price = stock_info.history(period="1d").iloc[-1]["Close"]
    close_prices.append(close_price)
    dividend_per_share = stock_info.info.get("dividendRate", None)
    dividends_per_share.append(dividend_per_share)
df["配当利回り"] = dividend_yields
df["終値"] = close_prices
df["一株配当"] = dividends_per_share

# CSVファイルに出力
output_csv = "topixweight_j_with_some_value.csv"
df.to_csv(output_csv, index=False)
Pythonでできる! 株価データ分析 (Amazon)
Docker Desktop for Windows/Macでつくるクリーンな開発環境構築入門(Python版) (Amazon)
ファイナンス機械学習 (Amazon)
アセットマネージャーのためのファイナンス機械学習 (Amazon)

コメント