こんにちは、JS2IIUです。
NISAをやっていて株価が気になってしまう方もいるかもしれません。StreamlitとWEB APIを組み合わせることで簡単に株価を表示するアプリが作成できます。今回もよろしくお願いします。
1. はじめに
この記事では、PythonとStreamlitを使って簡単な株価可視化アプリを作成する方法を、初心者にもわかりやすく解説していきます。
この記事のゴール:
- 無料のAPIを使って株価データを取得し、
- Streamlitでインタラクティブなグラフ表示アプリを作ること。
PythonやStreamlitにまだ不慣れな方でも、ステップバイステップで丁寧に解説していきますので、安心して読み進めてください。
2. 必要なツールとライブラリ
Pythonの準備
まずは、Pythonがパソコンにインストールされている必要があります。
インストールがまだの方は、以下の公式サイトから最新版をダウンロードしてください:
必要なライブラリのインストール
以下のコマンドをターミナルやコマンドプロンプトで実行して、必要なライブラリをインストールします。
pip install streamlit pandas yfinanceそれぞれのライブラリの役割:
| ライブラリ名 | 用途 |
|---|---|
| streamlit | WebアプリのUI構築 |
| pandas | データの操作と加工 |
| yfinance | Yahoo! Financeから株価データを取得 |
3. 公開API(yfinance)を使って株価データを取得する
yfinanceとは?
yfinanceは、Yahoo! Financeから株価データを取得できるPythonライブラリです。無料で使え、使い方もシンプルなので、初心者におすすめです。
yfinance documentation — yfinance
株価データの取得例
以下のコードは、Apple(AAPL)の2023年の株価データを取得し、最初の5行を表示するものです。
import yfinance as yf
# AAPL(Apple)の株価データを2023年の期間で取得
data = yf.download("AAPL", start="2023-01-01", end="2023-12-31")
# 最初の5行を表示
print(data.head())出力結果は以下のような形式になります:
Open High Low Close Adj Close Volume
Date
2023-01-03 130.279999 130.899994 124.169998 125.0699 124.105438 112117500
2023-01-04 126.889999 127.830002 125.119995 126.3600 125.383148 89113600
...他のAPIの選択肢(参考)
yfinance以外のAPIもぜひトライして見てください。それぞれ異なったサービスを提供しています。
| API名 | 特徴 |
|---|---|
| Alpha Vantage | 無料プランあり・APIキー必要 |
| IEX Cloud | 無料枠あり・リアルタイム対応 |
| Finnhub | 経済ニュースも取得可能 |
- Free Stock APIs in JSON & Excel | Alpha Vantage
- iexcloud.io – iexcloud リソースおよび情報
- Finnhub Stock APIs – Real-time stock prices, Company fundamentals, Estimates, and Alternative data.
4. Streamlitでアプリの土台を作る
Streamlitでは、PythonコードだけでWebアプリを作ることができます。
まずは、最小限のStreamlitアプリを作ってみましょう。
基本構造
import streamlit as st
st.title("株価可視化アプリ")ユーザー入力のUIを追加
symbol = st.text_input("銘柄コードを入力してください(例:AAPL)", "AAPL")これで、ユーザーが任意の銘柄コードを入力できるようになります。
さらに、日付の入力も追加できます:
start_date = st.date_input("開始日", value=pd.to_datetime("2023-01-01"))
end_date = st.date_input("終了日", value=pd.to_datetime("2023-12-31"))5. 株価データを可視化する
もっとも簡単な方法:st.line_chart
import pandas as pd
import yfinance as yf
import streamlit as st
# ユーザー入力
symbol = st.text_input("銘柄コードを入力してください", "AAPL")
start_date = st.date_input("開始日", pd.to_datetime("2023-01-01"))
end_date = st.date_input("終了日", pd.to_datetime("2023-12-31"))
# データ取得
data = yf.download(symbol, start=start_date, end=end_date)
# 折れ線グラフ表示(終値)
st.line_chart(data["Close"])銘柄コードを色々と変えてみましょう。データが読み込まれてグラフが更新されます。

カスタマイズ可能な方法:plotly
import plotly.express as px
fig = px.line(data, x=data.index, y="Close", title=f"{symbol}の株価推移")
st.plotly_chart(fig)6. 完成アプリの全体コード
以下は、これまでの内容をすべてまとめた完成コードです:
import streamlit as st
import pandas as pd
import yfinance as yf
import plotly.express as px
# タイトル
st.title("📈 株価可視化アプリ")
# ユーザー入力
symbol = st.text_input("銘柄コードを入力してください(例:AAPL)", "AAPL")
start_date = st.date_input("開始日", pd.to_datetime("2023-01-01"))
end_date = st.date_input("終了日", pd.to_datetime("2023-12-31"))
# データ取得
if symbol:
data = yf.download(symbol, start=start_date, end=end_date)
if not data.empty:
# カラムがMultiIndexの場合に対応(列名を平坦化)
if isinstance(data.columns, pd.MultiIndex):
data.columns = data.columns.get_level_values(0)
st.write(f"表示中のデータ:{symbol}")
st.dataframe(data)
# グラフ描画
fig = px.line(data, x=data.index, y="Close", title=f"{symbol}の終値推移")
st.plotly_chart(fig)
else:
st.warning("データが取得できませんでした。銘柄コードを確認してください。")

yfinance.download()は複数銘柄に対応しており、銘柄を1つだけ渡してもMultiIndexになることがあります。- 今回のように、
symbolが1つでもdata.columnsがMultiIndexのままになっていることがあるため、それを単層に変換してから使うのが安全です。
7. Streamlitアプリの実行方法とTips
アプリの起動方法
保存したPythonファイル(例:stock_app.py)を、以下のコマンドで実行します:
streamlit run stock_app.pyブラウザが自動で開き、アプリが表示されます。
よくあるエラーと対処法
| エラー内容 | 対処法 |
|---|---|
| データが取得できない | 銘柄コードが間違っている可能性。例:日本株は7203.Tのように証券コード+.Tの形式 |
| モジュールがない | pip installコマンドでモジュールを再インストールする |
8. おわりに
この記事では、PythonとStreamlitを使って株価を可視化するシンプルなWebアプリを作成しました。
学べたこと:
- 株価データAPI(yfinance)の使い方
- StreamlitでのUI作成とグラフ表示
発展アイデア:
- 移動平均線の追加
- 出来高グラフの追加
- 複数銘柄を比較表示
興味がある方は、Streamlitの他のコンポーネントも活用して、さらに便利なアプリに進化させてみてください!
9. 参考リンク
最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。Poetryについても詳しく説明されています。ぜひ手に取ってみてください。
最後まで読んでいただきありがとうございます。


コメント