1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

株式の全コード一覧を取得したい!東証公式ExcelをGoogleドライブにCSV保存する方法

1
Posted at

はじめに

Google Colabを使って日本株のデータ分析(yfinanceでの株価取得など)を始めようとしたとき、誰もが最初にぶつかるのが「全銘柄の株式コード一覧(ティッカーリスト)をどこから取得するか?」という問題です。

有志のデータもありますが、更新停止リスクや正確性を考慮すると、日本取引所グループ(JPX)が公式に提供しているデータを利用するのが最も安全で確実な正攻法です。

しかし、公式データはExcel形式(.xls)で提供されており、毎回重いファイルを読み込むのは非効率です。さらにGoogle Colabの初期状態では、接続が切れるたびにファイルを再アップロードする必要があります。

そこで本記事では、ダウンロードした公式ExcelをGoogleドライブ上に配置し、扱いやすいCSVに変換して同じフォルダに永久保存する実用的なコードをご紹介します。

手順1:Googleドライブに専用フォルダを作り、Excelを配置する

最新のマスターデータを手動でダウンロードしてGoogle ドライブに集約します。

  1. 日本取引所グループの統計資料ページにアクセスします。

  2. ページ内にある「東証上場銘柄一覧」のExcelファイル(data_j.xls)をパソコンにダウンロードしてください。
    image.png

  3. ご自身のGoogle ドライブの直下に、専用のフォルダ(例:investment など)を作成します。

  4. 作成したフォルダの中に、ダウンロードした data_j.xls をアップロードします。

この配置にしておくことで、Google Colabの接続が切れるたびにExcelファイルをアップロードし直す手間が完全にゼロになります。

手順2:ExcelをCSVに変換してGoogleドライブに保存する

配置ができたら、Google Colabで以下のコードを実行します。
ファイル名や保存先のパスはコード上部の「設定(メンテナンス用変数)」にまとめているため、ご自身が作成したフォルダ名に合わせて簡単にカスタマイズ可能です。

# 必要なライブラリのインストール
!pip install pandas xlrd openpyxl

import pandas as pd
import os
from google.colab import drive

# === 設定(メンテナンス用変数) ===
# ※「your_folder_name」の部分をご自身が作成したGoogleドライブのフォルダ名に書き換えてください
EXCEL_FILE_PATH = '/content/drive/MyDrive/your_folder_name/data_j.xls'
DRIVE_CSV_PATH = '/content/drive/MyDrive/your_folder_name/jpx_stock_codes.csv'
# =================================

def convert_jpx_excel_to_csv_to_drive():
    # 1. GoogleドライブをColabにマウント(連携)
    if not os.path.exists('/content/drive'):
        print("Googleドライブに連携します...")
        drive.mount('/content/drive')

    # 2. Googleドライブ上のファイルの存在確認
    if not os.path.exists(EXCEL_FILE_PATH):
        print(f"エラー: '{EXCEL_FILE_PATH}' が見つかりません。")
        print("パスの設定や、Excelファイルが正しく配置されているか確認してください。")
        return

    print("Excelファイルを読み込んでいます...")
    try:
        # JPXのExcelデータはそのまま綺麗に読み込めるため、シンプルにロードします
        df = pd.read_excel(EXCEL_FILE_PATH)
    except Exception as e:
        print(f"読み込みエラー: {e}")
        return

    # 3. データ構造の整形
    # yfinance等で扱いやすいように「.T」をつけたTicker列を作成
    if 'コード' in df.columns:
        df['Ticker'] = df['コード'].astype(str) + '.T'
    
    # 分析に使いやすい必要な列だけを抽出
    target_cols = ['Ticker', 'コード', '銘柄名', '市場・商品区分', '33業種区分']
    available_cols = [col for col in target_cols if col in df.columns]
    df_save = df[available_cols]

    # 4. GoogleドライブにCSVとして保存
    if not df_save.empty:
        print(f"Googleドライブへの保存を開始します: {DRIVE_CSV_PATH}")
        df_save.to_csv(DRIVE_CSV_PATH, index=False, encoding='utf-8-sig')
        print(f"\n変換完了! '{os.path.basename(DRIVE_CSV_PATH)}' を保存しました。")
        display(df_save.head())
    else:
        print("エラー: 保存するデータがありません。")

# 実行
convert_jpx_excel_to_csv_to_drive()

💡 実行時の注意点
実行すると「Googleドライブへのアクセスを許可しますか?」という画面が表示されます。ご自身のアカウントを選択してアクセスを許可してください。

スクリーンショット 2026-06-11 16.03.44.png

コードのポイント

  1. 完全なドライブ完結型: Excelの読み込み元も、CSVの出力先もすべてGoogleドライブ上の指定フォルダに完結しています。Colab側のローカルストレージを一切汚さず、セッション切れの手間もありません。
  2. メンテナンス性の向上: パスをグローバル変数(EXCEL_FILE_PATH など)として外に出しています。別のフォルダで管理したくなった場合も、ここを書き換えるだけでOKです。
  3. 無駄のないシンプル構造: JPXの最新ExcelデータはPandasでそのまま正確にヘッダーを認識して読み込めるため、余計な行削除やヘッダーの再設定処理を省き、エラーの起きにくい綺麗なコードに仕上げています。

次回からの使い方(超高速読み込み)

一度GoogleドライブにこのCSVを作ってしまえば、次回からは別のノートブックを開いた際でも、以下の数行だけで一瞬で株式コード一覧を呼び出せるようになります。

from google.colab import drive
import pandas as pd

# ドライブをマウント
drive.mount('/content/drive')

# Googleドライブの指定フォルダからCSVを読み込む
df_stocks = pd.read_csv('/content/drive/MyDrive/your_folder_name/jpx_stock_codes.csv')

重いExcelを触る必要はもうありません。月1回、JPXのデータが更新された時だけ今回のコードを回してドライブのCSVを上書きすれば、常に最新のマスターデータで分析が可能です。

ぜひこのCSVを活用して、yfinanceでの株価スクリーニングやバックテストに役立ててください!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?