【Plotly入門 #2】株価データを取得して、インタラクティブな時系列チャートを作成しよう

ALL

こんにちは、Tech Samuraiです!
前回の記事「【Plotly入門 #1】データ可視化の新常識!Plotly Expressでインタラクティブなグラフを作ろう」では、Plotly Expressの驚くべき手軽さと、インタラクティブなグラフの楽しさを体験しましたね。

サンプルデータでその威力を知った今、次はいよいよ**現実世界の、リアルタイムで変動するデータ**に挑戦したくなるのが探検家の性(さが)です。今回の冒険のテーマは、**最新の株価データをインターネット経由で取得し、それをプロが使うような本格的な時系列チャートとして可視化する**ことです。

そのための新たな武器として、Yahoo! Financeから株価データを簡単に取得できる**`yfinance`**ライブラリを使います。このプロジェクトを終える頃には、あなたは市場の動向を自分自身の手で分析し、可視化する能力を手に入れているでしょう!


ステップ1:準備 – `yfinance`のインストール

まずは、今回のプロジェクトで株価データを取得するために必要な、`yfinance`ライブラリをインストールしましょう。Ryeを使えば簡単です。

# 前回のプロジェクトフォルダで作業を続けます
rye add yfinance

これだけで、データを取得する準備は完了です。


ステップ2:`yfinance`で株価データを取得する

`yfinance`の使い方は非常にシンプルです。ティッカーシンボル(各企業に割り当てられた銘柄コード)と期間を指定するだけで、株価データをPandasのDataFrameとして取得できます。

今回は、例としてトヨタ自動車(銘柄コード: `7203.T`)の過去1年間の株価データを取得してみましょう。

import yfinance as yf
import pandas as pd # DataFrameの日付を扱うためにインポート

# データの期間を設定
start_date = '2024-09-01'
end_date = '2025-09-06' # 実行日に合わせて調整してください

# yfinanceを使ってトヨタ自動車(7203.T)の株価データをダウンロード
df_toyota = yf.download('7203.T', start=start_date, end=end_date)

# 取得したデータの最初の5行を表示して確認
print(df_toyota.head())

これを実行すると、指定した期間の始値(Open), 高値(High), 安値(Low), 終値(Close)などが格納されたデータが表示されるはずです。


ステップ3:インタラクティブな時系列チャートの作成

データが手に入れば、あとはPlotlyの出番です。まずは、終値(Close)だけをシンプルな折れ線グラフで表示してみましょう。

3.1 折れ線グラフ(基本編)

import yfinance as yf
import pandas as pd
import plotly.express as px

# データの期間を設定
start_date = '2024-09-01'
end_date = '2025-09-06'

# yfinanceを使ってトヨタ自動車(7203.T)の株価データをダウンロード
df_toyota = yf.download('7203.T', start=start_date, end=end_date)

# 取得したデータの最初の5行を表示して確認
print(df_toyota.head())


# --- 注意点 ---
# .squeeze() を使って1次元のSeriesに変換します。
fig = px.line(df_toyota, y=df_toyota['Close'].squeeze(), title='トヨタ自動車 (7203.T) 終値の推移')


# グラフのy軸ラベルを分かりやすく設定
fig.update_layout(yaxis_title='終値 (円)')

# グラフを表示
fig.show()

これだけでも、マウスを乗せると日付と株価が表示され、範囲をドラッグしてズームできる、非常に便利なグラフが作成できます。

3.2 ローソク足チャート(本格編)

株価の分析では、始値・高値・安値・終値を一度に表現できるローソク足チャートがよく使われます。このような専門的なグラフを描くには、Plotly Expressよりも、より詳しい設定が可能なプロ向けの機能である**plotly.graph_objects**を使います。

import yfinance as yf
import plotly.graph_objects as go

# yfinanceからデータをダウンロード
df_toyota = yf.download('7203.T', start='2024-09-01', end='2025-09-06')

# ローソク足チャートを作成
# open, high, low, close の各データに .squeeze() を付けて
# 1次元のデータに変換します。
fig = go.Figure(data=[go.Candlestick(x=df_toyota.index,
                                     open=df_toyota['Open'].squeeze(),
                                     high=df_toyota['High'].squeeze(),
                                     low=df_toyota['Low'].squeeze(),
                                     close=df_toyota['Close'].squeeze())])

# グラフのレイアウトを更新
fig.update_layout(
    title='トヨタ自動車 (7203.T) ローソク足チャート',
    yaxis_title='株価 (円)',
    xaxis_rangeslider_visible=False # 下部のレンジスライダーが不要な場合はFalseに
)

# 見た目の改善:取引のない土日などの日付の隙間を詰める
fig.update_xaxes(type='category')


fig.show()

実行結果:
これを実行すると、金融ニュースで見るような本格的なローソク足チャートが表示されます。グラフの下には、表示期間をインタラクティブに調整できる**レンジスライダー**も自動で追加されていることに注目してください。これこそがPlotlyの真骨頂です!


まとめ:Plotly入門シリーズ完結!

2回にわたるPlotlyの冒険、お疲れ様でした!このシリーズを通して、私たちは以下の旅をしました。

  • 第1回: **Plotly Express**を使い、サンプルデータから驚くほど簡単にインタラクティブなグラフを作成する方法を学んだ。
  • そして今回: **`yfinance`**で現実世界の株価データを取得し、より高度な**`plotly.graph_objects`**を使って、本格的なローソク足チャートとして可視化する方法をマスターした。

あなたはもはや、静的なグラフしか作れない分析者ではありません。データを「見て」「触って」「対話できる」形で表現する、モダンなデータ可視化のスキルを手に入れたのです。

この強力な武器を使って、ぜひあなた自身の興味があるデータを取得し、その中に隠された物語を、インタラクティブなグラフとして描き出してみてください!

コメント

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