Pythonで株価データを取得する方法

株価分析のツールを作ろうと思ったとき、まず最初にぶつかるのが「株価データってどうやって取得するの?」という問題です。

そんな問題もPythonを使えば、無料かつ数行のコードで株価データを取得することができます。

この記事では、ライブラリを使った株価データ取得のやり方を解説します。

この記事には下の内容が書かれているよ。
今後、テクニカル分析や売買ロジックを作るための土台になるからね。
  • Pythonで株価データを取得できる。
  • 取得したデータの中身が理解できる。
  • 取得したデータをCSVとして保存できる。
目次

今回使うライブラリ「yfinance」の特徴

今回は「yfinance」というライブラリを使います。

yfinanceはYahoo Financeが提供している豊富な金融データを無料で簡単に取得できるライブラリです。

[yfinance]の特徴をまとめてみたよ。確認してみてね。

【yfinanceの特徴】

  • APIキーの取得や複雑な認証プロセスがなく、無料ですぐに利用可能
  • 米国株、日本株、ETF、為替、暗号資産のデータを時系列に取得可能
  • [pip]コマンド一つでインストール完了

環境準備

まずは必要なライブラリをインストールします。
インストールは非常に簡単でターミナルやコマンドプロンプトで以下のコマンドを実行すればOKです。

コマンドプロンプトを立ち上げて下のコマンドを実行してみてね
pip install yfinance pandas

今回は「pandas」も一緒にインストールしています。pandasは、取得した株価データを表形式で扱い、加工・分析・可視化まで行うためのライブラリです。

株価データを取得してみる

実際にコードを書きながら、株価データを取得する手順を説明していきます。

1.ライブラリのインポート

まず、プログラムの最初に今回使用する「yfinance」、「pandas」をインポートします。

import yfinance as yf
import pandas as pd

2.銘柄を指定

次に取得したい銘柄を指定します。
今回はマネックスグループ(8698.T)の株価を取得してみます。

ポイントとして4桁の証券コードの後ろに「.T」を付けることだよ
# マネックスグループの証券コード+「.T」
ticker = "8698.T"

# Tickerオブジェクトを作成
monex = yf.Ticker(ticker)

3.株価データの取得

history()」メソッドを使って株価データを取得します。
まずはhistoryメソッドの主な引数をご紹介します。

引数名説明設定例
start開始日(YYYY-MM-DD)2026-01-01
end終了日(YYYY-MM-DD)2026-03-31
period取得期間(startと同時使用不可)1d, 5d, 1mo, 3mo, 6mo, 1y, 2y, 5y, 10y, ytd, max (最大)
interval時間足(データの間隔)1m, 5m, 15m, 30m, 60m, 90m, 1h, 1d, 1wk, 1mo

期間を指定

historyの引数「start」、「end」の期間を指定して株価を取得します。

# 取得期間を指定してデータを取得(start: 開始日, end: 終了日)
df = monex.history(start='2026-01-01', end='2026-03-31')

# 取得したデータを出力
print(df)

実行結果:

                                 Open        High         Low       Close   Volume  Dividends  Stock Splits
Date
2026-01-05 00:00:00+09:00  726.898136  729.833122  718.093179  727.876465  1825400        0.0           0.0
2026-01-06 00:00:00+09:00  733.746421  756.247978  732.768092  754.291321  3473500        0.0           0.0
2026-01-07 00:00:00+09:00  744.508068  754.291354  742.551411  747.443054  1418800        0.0           0.0
2026-01-08 00:00:00+09:00  742.551381  743.529710  723.963139  724.941467  1979400        0.0           0.0
2026-01-09 00:00:00+09:00  728.854778  731.789763  716.136506  723.963135  2590100        0.0           0.0

過去何カ月分指定

historyの引数「period」を指定して株価を取得します。

# periodを使って過去6ヶ月分のデータを取得
df = monex.history(period='6mo')

# 取得したデータを出力
print(df)

実行結果:

                                 Open        High         Low       Close   Volume  Dividends  Stock Splits
Date
2025-10-03 00:00:00+09:00  792.446151  803.207766  787.554508  788.532837  1335700        0.0           0.0
2025-10-06 00:00:00+09:00  802.229431  810.056060  790.489488  802.229431  2285000        0.0           0.0
2025-10-07 00:00:00+09:00  812.012756  821.796043  811.034428  812.012756  2224800        0.0           0.0
2025-10-08 00:00:00+09:00  807.121092  822.774349  806.142763  821.796021  1877200        0.0           0.0
2025-10-09 00:00:00+09:00  819.839377  840.384277  818.861048  840.384277  3489300        0.0           0.0

4.取得したデータの中身を確認

取得したデータの中身を確認します。

                                 Open        High         Low       Close   Volume  Dividends  Stock Splits
Date
2026-01-05 00:00:00+09:00  726.898136  729.833122  718.093179  727.876465  1825400        0.0           0.0
2026-01-06 00:00:00+09:00  733.746421  756.247978  732.768092  754.291321  3473500        0.0           0.0
2026-01-07 00:00:00+09:00  744.508068  754.291354  742.551411  747.443054  1418800        0.0           0.0
2026-01-08 00:00:00+09:00  742.551381  743.529710  723.963139  724.941467  1979400        0.0           0.0
2026-01-09 00:00:00+09:00  728.854778  731.789763  716.136506  723.963135  2590100        0.0           0.0
各列の内容を下にまとめたから確認してね
項目説明
Date日付 / データフレームのインデックス
Open始値 / その日の最初に成立した売買価格
High高値 / その日の最も高かった株価
Low安値 / その日の取引で一番安かった株価
Close終値 / その日の取引で最後に成立した株価
Volume出来高 / 取引が成立した株式数
Dividends配当金
Stock Splits株式分割

5.CSV形式で保存

最後に「to_csv()」関数を使用してCSV形式で保存します。
to_csvメソッドの主な引数をご紹介します。

引数名説明設定例
path_or_bufファイルパス“data/result.csv”
sep区切り文字を指定‘,’(デフォルト値) ‘\t’
na_rep欠損値(NaN)の置換文字列
columns書き出す列を制限(リスト)[‘Open’,’High’]
header列名を出力するかまたは列名のリストTrue/False
indexインデックス(行番号)を出力するかTrue/False
encoding文字コード‘utf-8’, ‘utf_8_sig’, ‘shift_jis’

実際にCSVを出力してみます。

# 相対パス「data/result.csv」にcsvファイル出力
df.to_csv(path_or_buf="data/result.csv", index=False)

出力結果:

Open,High,Low,Close,Volume,Dividends,Stock Splits
792.4461512411795,803.2077656407511,787.5545083322833,788.5328369140625,1335700,0.0,0.0
802.2294311523438,810.056059748952,790.4894882574314,802.2294311523438,2285000,0.0,0.0
812.0127563476562,821.7960425687123,811.0344277255506,812.0127563476562,2224800,0.0,0.0
807.1210915701729,822.7743491036551,806.1427629743304,821.7960205078125,1877200,0.0,0.0
819.8393765006548,840.38427734375,818.8610478890788,840.38427734375,3489300,0.0,0.0
829.6226555406325,831.5793127470963,804.1861118566037,808.0994262695312,2396200,0.0,0.0

まとめ

今回はPythonで株価データを取得する方法を解説しました。
ポイントは以下の通りです。

  • 株価データはPythonで簡単に取得できる。
  • yfinanceを使えば無料で株価データを取得できる。
  • 取得したデータは分析に活用できる。

【投資に関する免責事項】
本ブログで紹介している株価解析ツールによるスコアリングおよび銘柄分析は、あくまで個人の学習・研究および技術検証を目的としたものであり、特定の銘柄の売買を推奨するものではありません。

ツールの算出結果や掲載情報の正確性については万全を期しておりますが、その内容を保証するものではありません。投資の最終決定は、必ずご自身の判断と責任において行っていただきますようお願いいたします。

万一、本ブログの情報に基づいて被ったいかなる損害についても、当サイトおよび運営者は一切の責任を負いかねますのであらかじめご了承ください。

目次