【Python株価分析・深掘り編】yfinanceとpandas_ta入門!ツールを支える強力ライブラリを徹底解説
「あの株価分析ツール、どうやってインターネットから株価データを取ってきてるの?」
「移動平均線やMACDの計算が、たった1行で書けるなんて、どんな魔法?」
こんにちは! Pythonプログラミング探検隊、隊長のPythonistaです! 先日公開した「Pythonで作る株価買いシグナル自動検出ツール」の記事は、楽しんでいただけましたでしょうか? 複数のライブラリを組み合わせて、実用的なツールを完成させることができましたね。
記事を読んでいただいた方、あるいは実際にコードを動かしてみた方の中には、「あのスクリプトを裏で支えているyfinance
やpandas_ta
といったライブラリは、一体何者なんだろう?」と疑問に思った方も多いかもしれません。
今回の「深掘り編」では、そんな皆さんの知的好奇心にお応えして、あの便利ツールを可能にしている2つの超強力な外部ライブラリ、yfinance
とpandas_ta
に焦点を当て、その基本的な使い方をじっくりと解説していきます。この2つの「武器」を理解すれば、あのツールを自分なりにカスタマイズしたり、全く新しい金融データ分析ツールを作ったりするための、大きなヒントが得られますよ!
1. yfinance
:Yahoo! Financeのデータを手軽に取得
私たちの分析は、まずデータがなければ始まりません。yfinance
は、世界中の投資家が利用するYahoo! Financeの豊富な株価データを、Pythonから驚くほど簡単に取得できるようにしてくれるライブラリです。
1.1. インストール
まずはpipでインストールしましょう。ターミナルやコマンドプロンプトで以下を実行します。
pip install yfinance
1.2. 基本的な使い方 (yf.download()
)
yfinance
の最も基本的な機能が、download()
関数です。これを使うと、指定した銘柄(ティッカー)の過去の株価データをPandasのDataFrameとして直接取得できます。
import yfinance as yf
# 例として、トヨタ自動車(7203.T)の2024年1月1日以降の株価データを取得
# 東証の銘柄は末尾に ".T" をつけます
ticker_code = '7203.T'
start_date = '2024-01-01'
try:
df_toyota = yf.download(ticker_code, start=start_date, progress=False)
print(f"\n--- {ticker_code} の株価データ (yfinance) ---")
# .head()で最初の5行、.tail()で最後の5行を表示
print("最初の5日間:")
print(df_toyota.head())
print("\n直近の5日間:")
print(df_toyota.tail())
except Exception as e:
print(f"エラー: データの取得に失敗しました - {e}")
実行結果 (例):
--- 7203.T の株価データ (yfinance) ---
最初の5日間:
Open High Low Close Volume
Date
2024-01-04 2580.000000 2635.00000 2573.50000 2623.50000 18195800
... (中略) ...
直近の5日間:
Open High Low Close Volume
Date
2025-06-16 3105.000000 3130.00000 3096.00000 3125.00000 15000000
... (中略) ...
このように、たった1行のコードで、日付をインデックスとし、始値(Open), 高値(High), 安値(Low), 終値(Close), 出来高(Volume)を含む、整形されたDataFrameが手に入ります。これがyfinance
の強力さです。
2. pandas_ta
:テクニカル指標の計算を完全自動化!
株価データを取得したら、次に行うのはテクニカル分析です。移動平均線(SMA)、MACD、RSIといった指標を自前で計算しようとすると、Pandasの.rolling()
や.ewm()
などを使って複雑な数式を組む必要があります。
pandas_ta
は、その面倒な作業を全て肩代わりしてくれる、まさに「魔法」のようなライブラリです。
2.1. インストール
pip install pandas-ta
2.2. 魔法の.ta
アクセサの使い方
pandas_ta
をインポートすると、PandasのDataFrameオブジェクトに.ta
という特別な「アクセサ」が追加されます。これを通じて、100種類以上のテクニカル指標をメソッドとして呼び出すだけで、計算結果が新しい列としてDataFrameに自動的に追加されます。
import yfinance as yf
import pandas_ta as ta
# まずはyfinanceでデータを取得
df = yf.download('7203.T', period='6mo', progress=False)
# --- pandas_taでテクニカル指標を追加 ---
# 1. 単純移動平均線 (SMA) を追加 (期間: 25日と75日)
df.ta.sma(length=25, append=True)
df.ta.sma(length=75, append=True)
# 2. RSIを追加 (期間: 14日)
df.ta.rsi(length=14, append=True)
# 3. MACDを追加 (デフォルト設定)
df.ta.macd(append=True)
# 結果を確認 (後ろの方の行に計算結果が入っている)
print("\n--- テクニカル指標が追加されたDataFrame ---")
print(df.tail())
実行結果 (例):
--- テクニカル指標が追加されたDataFrame ---
Open High Low Close Volume SMA_25 SMA_75 RSI_14 MACD_12_26_9 MACDh_12_26_9 MACDs_12_26_9
Date
2025-06-16 3105.0 3130.0 3096.0 3125.0 15000000 3050.6 2980.1 58.23 25.123 5.432 19.691
... (以下略) ...
どうでしょうか? df.ta.指標名()
というメソッドを呼び出すだけで、SMA_25
やRSI_14
、MACD関連の3つの列などが自動で追加されました。append=True
が、計算結果を元のDataFrameに直接追加してくれる便利なオプションです。
3. なぜこの2つを組み合わせるのか?
もうお分かりですね。この2つのライブラリは、株価分析のワークフローにおいて完璧なコンビネーションを形成します。
yfinance
(データ取得担当)
→
pandas_ta
(指標計算担当)
この流れを使うことで、分析ロジックの構築に集中する前に必要な「データ収集」と「データ加工」のステップを、数行のコードで完了させることができます。私たちの「株価買いシグナル自動検出ツール」は、まさにこの強力な連携の上に成り立っていたのです。
import yfinance as yf
import pandas_ta as ta
# 1. yfinanceでデータを取得
df_stock = yf.download("9984.T", period="1y", progress=False)
# 2. pandas_taでテクニカル指標を一括で追加
# カスタム戦略を作成して、複数の指標を一度に追加することも可能
custom_strategy = ta.Strategy(
name="My Custom Strategy",
description="SMA, RSI, and MACD",
ta=[
{"kind": "sma", "length": 50},
{"kind": "rsi"},
{"kind": "macd"},
]
)
df_stock.ta.strategy(custom_strategy)
print("\n--- カスタム戦略で指標を追加したDataFrame ---")
print(df_stock.tail())
まとめ:強力なライブラリで、分析作業を加速しよう!
今回は、私たちの株価分析ツールを裏側で支える、yfinance
とpandas_ta
という2つの強力なライブラリに焦点を当てて解説しました。
yfinance
: 最新の株価データを、Pandas DataFrameとして手軽に取得できる。pandas_ta
: 取得したDataFrameに、100種類以上のテクニカル指標をわずか1行のコードで追加できる。
プログラミングの大きな魅力の一つは、優れたライブラリを活用することで、複雑な処理を自分で実装することなく、その恩恵を受けられる点にあります。今回の2つのライブラリは、まさにその好例です。
これらのツールの使い方をマスターしたことで、あなたは以前作成した株価分析ツールをさらに自由にカスタマイズしたり、全く新しい分析手法を試したりする準備が整いました。ぜひ、色々な銘柄やテクニカル指標で試してみてください!
その他の投稿はこちら
コメント
コメントを投稿