株価データを使った分析は、投資判断の補助や市場の動向把握に役立ちます。近年では、Pythonを使って誰でも比較的簡単に株価データを取得し、加工・分析できる環境が整っています。本記事では、Pythonを使って株価データを取得し、基本的な分析を行う方法について、実務でそのまま使える形で解説します。
プログラミング初心者の方でも理解できるよう、使用するライブラリや処理の流れを順序立てて説明します。特定の投資判断を推奨するものではなく、あくまで技術的な取得・分析手法の解説に限定しています。
Pythonで株価データを扱うメリット
Pythonはデータ分析分野で広く利用されているプログラミング言語です。株価データの取得・分析においても、以下のような利点があります。
- 無料で利用できるライブラリが充実している
- CSVやExcelなどの形式でデータを扱いやすい
- グラフ描画や統計処理が容易
- 定期実行や自動化に向いている
特に、日々の株価チェックや過去データの集計を手作業で行っている場合、Pythonを使うことで作業時間を大幅に削減できます。
株価データ取得に使用する代表的なライブラリ
Pythonで株価データを取得する際には、以下のようなライブラリがよく使用されます。
- pandas
- yfinance
- matplotlib
本記事では、取得から分析までを一通り実行できるよう、これらを組み合わせて使用します。
ライブラリのインストール
まず、必要なライブラリをインストールします。以下のコマンドをコマンドプロンプトやPowerShellで実行してください。
|
1 |
pip install pandas yfinance matplotlib |
既にインストール済みの場合はスキップして問題ありません。

Pythonで株価データを取得する方法
yfinanceを使った株価データ取得
yfinanceは、公開されている株価データを取得できるライブラリです。以下は、特定銘柄の株価データを取得する基本的な例です。
|
1 2 3 4 5 6 7 8 9 10 11 |
import yfinance as yf # 銘柄コード(例:トヨタ自動車) ticker = "7203.T" # 株価データ取得 stock = yf.Ticker(ticker) df = stock.history(period="1y") # データ確認 print(df.head()) |
このコードでは、指定した銘柄の過去1年分の株価データを取得しています。取得される主な項目は以下の通りです。
- Open(始値)
- High(高値)
- Low(安値)
- Close(終値)
- Volume(出来高)

取得したデータの確認と基本操作
株価データはpandasのDataFrame形式で取得されます。そのため、以下のような操作が可能です。
|
1 2 |
df.info() df.describe() |
これにより、データ件数や欠損値の有無、基本的な統計情報を確認できます。分析前に必ず確認しておくことで、想定外のデータ欠落による誤処理を防げます。
終値を使った基本的な分析
終値の推移を確認する
株価分析の第一歩として、終値の推移を可視化します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
import yfinance as yf import matplotlib.pyplot as plt # 日本語フォント指定(Windows) plt.rcParams["font.family"] = "Meiryo" ticker = "7203.T" df = yf.Ticker(ticker).history(period="1y") plt.figure() plt.plot(df.index, df["Close"]) plt.title("終値の推移") plt.xlabel("日付") plt.ylabel("終値(円)") plt.show() |
グラフ化することで、価格の上昇・下降トレンドや急変動を視覚的に確認できます。

移動平均線を使った分析
移動平均線は、一定期間の平均価格を算出し、価格の流れを滑らかに表示する手法です。
|
1 2 |
df["MA25"] = df["Close"].rolling(window=25).mean() df["MA75"] = df["Close"].rolling(window=75).mean() |
移動平均線を終値と一緒に表示します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
import yfinance as yf import matplotlib.pyplot as plt # 日本語フォント(Windows) plt.rcParams["font.family"] = "Meiryo" # 銘柄コード ticker = "7203.T" # 株価データ取得(過去1年) df = yf.Ticker(ticker).history(period="1y") # 移動平均線の計算 df["MA25"] = df["Close"].rolling(window=25).mean() df["MA75"] = df["Close"].rolling(window=75).mean() # グラフ描画 plt.figure() plt.plot(df.index, df["Close"], label="終値") plt.plot(df.index, df["MA25"], label="25日移動平均") plt.plot(df.index, df["MA75"], label="75日移動平均") plt.title("終値と移動平均線の推移") plt.xlabel("日付") plt.ylabel("株価(円)") plt.legend() plt.grid(True) plt.show() |
短期・中期の価格傾向を同時に確認できるため、分析の基礎としてよく利用されます。
これで結構見栄えも良くなって株式分析にも使用しやすい形式になってきます。

出来高を用いた補助的な確認
価格だけでなく、出来高も併せて確認することで、値動きの背景を把握しやすくなります。
- その日に売買された株数
- 価格変動の「背景」を確認するための補助情報
- 価格と出来高は 必ずセットで見る のが基本です
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
import yfinance as yf import matplotlib.pyplot as plt # 日本語フォント(Windows) plt.rcParams["font.family"] = "Meiryo" # 銘柄コード ticker = "7203.T" # 株価データ取得(過去1年) df = yf.Ticker(ticker).history(period="1y") # 移動平均線 df["MA25"] = df["Close"].rolling(window=25).mean() df["MA75"] = df["Close"].rolling(window=75).mean() # 図全体を作成 fig, (ax1, ax2) = plt.subplots(2, 1, sharex=True) # --- 上段:株価 --- ax1.plot(df.index, df["Close"], label="終値") ax1.plot(df.index, df["MA25"], label="25日移動平均") ax1.plot(df.index, df["MA75"], label="75日移動平均") ax1.set_title("株価と移動平均線") ax1.set_ylabel("株価(円)") ax1.legend() ax1.grid(True) # --- 下段:出来高 --- ax2.bar(df.index, df["Volume"]) ax2.set_title("出来高") ax2.set_xlabel("日付") ax2.set_ylabel("出来高") ax2.grid(True) plt.tight_layout() plt.show() |
出来高の急増は、市場参加者の増加を示す指標として利用されます。

データをCSVファイルに保存する
取得・加工した株価データはCSVとして保存できます。
|
1 |
df.to_csv("stock_data.csv", encoding="utf-8-sig") |
Excelなどで再利用したい場合にも便利です。
自動化への応用
Pythonスクリプトをタスクスケジューラなどと組み合わせることで、以下のような自動化が可能です。
- 毎日決まった時間に株価を取得
- 条件に応じてデータを加工
- グラフやCSVを自動生成
日次・週次のレポート作成にも応用できます。
よくある質問(Q & A)
- 株価データはリアルタイムですか?
-
いいえ。取得できるデータはリアルタイムではなく、一定の遅延がある場合があります。用途に応じて確認が必要です。
- 日本株と米国株は両方取得できますか?
-
はい。銘柄コードを正しく指定すれば、複数市場の株価データを取得できます。
- 無料でどこまで使えますか?
-
基本的な取得・分析は無料で行えます。ただし、取得元の仕様変更により制限が変わる可能性があります。
- エラーが出る場合はどうすればいいですか?
-
ライブラリのバージョン確認、銘柄コードの誤り、通信環境などを順に確認してください。
まとめ
Pythonを使えば、株価データの取得から分析、可視化までを一貫して行えます。手作業では時間がかかる作業も、自動化することで効率的に管理できます。まずは基本的な取得とグラフ化から始め、徐々に分析内容を拡張していくのがおすすめです。



