Python環境構築ガイド|株価分析のライブラリとvenv設定

Windows / Mac別必要ライブラリ全部 準備・環境構築

本記事は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.exepython3.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機械学習前処理だけでも便利
jupyterNotebook環境試行錯誤に向く
requestsAPI呼び出しJ-Quantsなどで使用
python-dotenvAPIキーの管理キーの直書きを防ぐ
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’列がMultiIndexget_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の比較記事にまとめています。

タイトルとURLをコピーしました