本記事はPython学習・情報提供を目的としています。投資判断はご自身の責任で行ってください。
Pythonで株価分析を始めるとき、最初の壁は環境構築です。ただ、つまずく場所はだいたい決まっています。PATHの設定、仮想環境を作らずにpipで詰まる、そしてグラフの日本語が豆腐(□□□)になる。この3つです。
もう1つ、あとから効いてくる問題があります。バージョンを固定しないと、半年後に同じコードが動かなくなること。yfinanceは列構造が変わり、配当利回りの単位も変わりました。「昨日まで動いていたのに」の原因は、たいてい自分ではなくライブラリ側の更新です。
この記事では、WindowsとMacそれぞれの手順に加えて、再現性を確保するrequirements.txtと日本語フォントの設定まで含めて解説します。
📘 外部参考:venv(Python公式) / pip install(公式) / yfinance(GitHub)
Pythonのインストール
Windowsの場合
公式サイト(python.org)からインストーラを取得します。「Add Python to PATH」のチェックが最重要です。ここを外すと、コマンドプロンプトでpythonが見つかりません。
python --version
py --version
py -0 # インストール済みバージョンの一覧
pythonと打ってMicrosoft Storeが開いてしまう場合は、Windows側のエイリアスが有効になっています。「設定 → アプリ → アプリ実行エイリアス」でpython.exeとpython3.exeをオフにしてください。
複数バージョンを入れているなら、pyランチャーを使うのが確実です。py -3.12 -m venv .venvのように、バージョンを明示して仮想環境を作れます。
Macの場合
# Homebrewのインストール
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install python
python3 --version
which python3 # /opt/homebrew/bin/python3 などになっていればOK
macOSに最初から入っているPythonは使わないでください。システムが使っているもので、ここにライブラリを入れるとOSの動作に影響する可能性があります。which python3が/usr/bin/python3を指しているなら、Homebrew版が優先されていません。
仮想環境は「推奨」ではなく必須
プロジェクトごとに独立した環境を作ります。これは丁寧にやりたい人向けの作法ではなく、作らないと最近のOSではpipが拒否します。
# 作成(プロジェクトのフォルダで実行)
python -m venv .venv
# 有効化(Windows / コマンドプロンプト)
.venv\Scripts\activate.bat
# 有効化(Windows / PowerShell)
.venv\Scripts\Activate.ps1
# 有効化(Mac / Linux)
source .venv/bin/activate
# 抜けるとき
deactivate
PowerShellで「スクリプトの実行が無効になっている」と怒られたら、次を1回だけ実行します。
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
--break-system-packagesを打ちたくなったら黄信号
Macや一部のLinuxでは、仮想環境の外でpip installするとexternally-managed-environmentというエラーが出ます。検索すると--break-system-packagesを付ける回避策が出てきますが、オプション名のとおり、システムのパッケージを壊す可能性があります。
このエラーは「仮想環境を作ってください」というメッセージです。python -m venv .venvを実行すれば、それで解決します。
ライブラリをインストールする
| ライブラリ | 用途 | 備考 |
|---|---|---|
| yfinance | 株価・財務データの取得 | 更新が速い。バージョン固定推奨 |
| pandas | データ操作・集計 | すべての土台 |
| numpy | 数値計算 | pandasが内部で使用 |
| matplotlib | グラフ描画 | 日本語は別途フォント設定が必要 |
| mplfinance | ローソク足チャート | matplotlibのラッパー |
| scipy | 統計・検定 | 相関の信頼区間などに使う |
| scikit-learn | 機械学習 | 前処理だけでも便利 |
| jupyter | Notebook環境 | 試行錯誤に向く |
| requests | API呼び出し | J-Quantsなどで使用 |
| python-dotenv | APIキーの管理 | キーの直書きを防ぐ |
python -m pip install --upgrade pip
pip install yfinance pandas numpy matplotlib mplfinance scipy scikit-learn jupyter requests python-dotenv
バージョンを固定して記録する
ここが、多くの入門記事が飛ばす部分です。インストールできたら必ず記録します。
pip freeze > requirements.txt
これで、別のPCや半年後の自分が同じ環境を再現できます。復元はこの1行です。
pip install -r requirements.txt
requirements.txtの中身は、こんな形になります。
yfinance==0.2.65
pandas==2.2.3
numpy==2.1.3
matplotlib==3.9.2
scipy==1.14.1
なぜ大事か。yfinanceは過去に、複数銘柄取得時の列構造をMultiIndexに変えたり、配当利回りを比率からパーセントに変えたりしています。バージョンを固定していないと、ある日突然インデックスエラーが出たり、利回りが100倍になったりします。
更新するときは意図的に行い、動作確認してからrequirements.txtを作り直します。「なんとなく最新」が一番危険です。
動作確認
import sys
import pandas as pd
import yfinance as yf
print("Python :", sys.version.split()[0])
print("pandas :", pd.__version__)
print("yfinance:", yf.__version__)
df = yf.download("7203.T", period="1mo", auto_adjust=True, progress=False)
if isinstance(df.columns, pd.MultiIndex):
df.columns = df.columns.get_level_values(0)
print(df[["Open", "High", "Low", "Close", "Volume"]].tail())
print("行数:", len(df))
バージョンを最初に表示させています。あとで質問したり検索したりするとき、この3行があるだけで原因の切り分けが早くなります。
MultiIndexを平坦化する処理も入れておきます。単一銘柄でもバージョンによって階層列になるので、これを書いておけばどちらでも動きます。
グラフの日本語が豆腐になる問題
株価分析では必ず遭遇します。matplotlibの既定フォントに日本語が含まれていないため、ラベルが□□□になります。
import matplotlib
import matplotlib.pyplot as plt
from matplotlib import font_manager
def setup_japanese_font() -> str | None:
candidates = [
"Meiryo", "Yu Gothic", "MS Gothic", # Windows
"Hiragino Sans", "Hiragino Maru Gothic Pro", # macOS
"Noto Sans CJK JP", "IPAexGothic", # Linux
]
available = {f.name for f in font_manager.fontManager.ttflist}
for name in candidates:
if name in available:
matplotlib.rcParams["font.family"] = name
matplotlib.rcParams["axes.unicode_minus"] = False
return name
print("日本語フォントが見つかりません")
return None
print("使用フォント:", setup_japanese_font())
axes.unicode_minus = Falseも必須です。これがないと、マイナス記号だけが別のフォントになって欠けます。乖離率やリターンを描くとき、マイナスが消えるのは致命的です。
Google Colabの場合は、日本語フォントが入っていないので追加します。
!apt-get -y install fonts-ipafont-gothic > /dev/null
import matplotlib
matplotlib.rcParams["font.family"] = "IPAGothic"
そもそも環境構築を避けたいなら、Google Colabで始める方法もあります。ブラウザだけで動くので、まず試したい段階ならこちらが手軽です。
APIキーの置き場所を先に決める
J-Quantsや通知系を使うようになると、必ずキーが出てきます。最初に習慣を作っておく方が安全です。
# .env(このファイルは絶対にコミットしない)
JQUANTS_API_KEY=xxxxxxxx
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/...
import os
from dotenv import load_dotenv
load_dotenv()
api_key = os.getenv("JQUANTS_API_KEY")
if not api_key:
raise RuntimeError("JQUANTS_API_KEY が設定されていません")
.gitignoreに.envと.venv/を書いておきます。一度コミットしたキーは、履歴から消しても漏れたものとして扱うしかありません。最初の1分の設定で防げます。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
| ModuleNotFoundError | 仮想環境が有効化されていない | プロンプトに(.venv)が出ているか確認 |
| externally-managed-environment | システム環境にpipしている | venvを作る。--break-system-packagesは使わない |
| pythonでStoreが開く | Windowsのアプリ実行エイリアス | 設定でエイリアスをオフ、またはpyを使う |
| PowerShellでactivate不可 | 実行ポリシー | Set-ExecutionPolicy RemoteSigned |
| ラベルが□□□ | 日本語フォント未設定 | rcParams["font.family"]を指定 |
| KeyError: ‘Close’ | 列がMultiIndex | get_level_values(0)で平坦化 |
| グラフが表示されない | バックエンド未設定 | matplotlib.use("Agg")で画像保存に切替 |
| SSL証明書エラー | プロキシ環境 | pip install --trusted-host pypi.org |
まとめ
環境構築の要点は4つです。PythonをPATHつきで入れる。プロジェクトごとにvenvを作る(推奨ではなく必須)。pip freezeでバージョンを固定して記録する。日本語フォントを最初に設定しておく。
特に3つ目は、あとから効きます。ライブラリ側の仕様変更でコードが壊れたとき、requirements.txtがあれば「動いていたバージョンに戻す」という選択肢が残ります。なければ、原因の特定から始めることになります。
準備ができたら、実際にデータを取得するところから始めましょう。取得手段の比較はyfinance・pandas-datareader・Alpha Vantageの比較記事にまとめています。

