株価分析のツールを作ろうと思ったとき、まず最初にぶつかるのが「株価データってどうやって取得するの?」という問題です。
そんな問題もPythonを使えば、無料かつ数行のコードで株価データを取得することができます。
この記事では、ライブラリを使った株価データ取得のやり方を解説します。

今後、テクニカル分析や売買ロジックを作るための土台になるからね。
- Pythonで株価データを取得できる。
- 取得したデータの中身が理解できる。
- 取得したデータをCSVとして保存できる。
今回使うライブラリ「yfinance」の特徴
今回は「yfinance」というライブラリを使います。
yfinanceはYahoo Financeが提供している豊富な金融データを無料で簡単に取得できるライブラリです。



【yfinanceの特徴】
- APIキーの取得や複雑な認証プロセスがなく、無料ですぐに利用可能
- 米国株、日本株、ETF、為替、暗号資産のデータを時系列に取得可能
- [pip]コマンド一つでインストール完了
環境準備
まずは必要なライブラリをインストールします。
インストールは非常に簡単でターミナルやコマンドプロンプトで以下のコマンドを実行すればOKです。



pip install yfinance pandas今回は「pandas」も一緒にインストールしています。pandasは、取得した株価データを表形式で扱い、加工・分析・可視化まで行うためのライブラリです。
株価データを取得してみる
実際にコードを書きながら、株価データを取得する手順を説明していきます。
1.ライブラリのインポート
まず、プログラムの最初に今回使用する「yfinance」、「pandas」をインポートします。
import yfinance as yf
import pandas as pd2.銘柄を指定
次に取得したい銘柄を指定します。
今回はマネックスグループ(8698.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.04.取得したデータの中身を確認
取得したデータの中身を確認します。
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を使えば無料で株価データを取得できる。
- 取得したデータは分析に活用できる。
【投資に関する免責事項】
本ブログで紹介している株価解析ツールによるスコアリングおよび銘柄分析は、あくまで個人の学習・研究および技術検証を目的としたものであり、特定の銘柄の売買を推奨するものではありません。
ツールの算出結果や掲載情報の正確性については万全を期しておりますが、その内容を保証するものではありません。投資の最終決定は、必ずご自身の判断と責任において行っていただきますようお願いいたします。
万一、本ブログの情報に基づいて被ったいかなる損害についても、当サイトおよび運営者は一切の責任を負いかねますのであらかじめご了承ください。





