スポンサーリンク
Pythonstreamlit

Streamlitで連動コンボボックスを作成する基本と実例

Python
この記事は約5分で読めます。

1. はじめに

Webアプリでよく見かける「連動コンボボックス」。たとえば「都道府県を選ぶと市区町村が変わる」「カテゴリを選ぶと商品が絞られる」といった動的な選択UIです。今回は、Python製の軽量Webフレームワーク「Streamlit」を使って、業種ごとに銘柄を絞り込み、企業情報を表示するアプリを作成します。

2. Streamlitとは?

Streamlitは、PythonコードだけでインタラクティブなWebアプリを構築できるツールです。データ分析、ダッシュボード、業務支援ツールなどに最適で、以下のように簡単にインストールできます。

pip install streamlit

特徴:

  • UIがシンプルで直感的
  • 再実行型で動的な更新が可能
  • データサイエンスや業務ツールに最適

3. 今回のテーマ:業種 × 銘柄 × 企業情報

今回作成するアプリでは、以下のような連動構成を実現します:

こんな感じです。

  • 業種を選ぶと、その業種に属する銘柄が絞り込まれる
  • 銘柄を選ぶと、企業情報(コード・社名・業種・銘柄名)が表示される
  • すべての操作と情報表示はStreamlitのサイドバー(サブメニュー)に集約

4. 使用するデータ:日経225銘柄一覧(CSV)

このアプリでは、日経平均株価を構成する「日経225銘柄」の企業情報をCSV形式で使用します。データは以下のような構成です:

コード銘柄名社名業種
7203トヨタトヨタ自動車(株)自動車
9432NTTNTT(株)通信

このCSVファイル(例:nikkei225_stocks.csv)は、以下のブログで紹介されているPythonスクレイピング手法を参考にして取得・整形しました:

実装コード:Streamlitで連動コンボボックスを作成

import streamlit as st
import pandas as pd

# ページ設定:ワイド表示
st.set_page_config(page_title="企業情報ビューア", layout="wide")

# CSV読み込み
df = pd.read_csv("nikkei225_stocks.csv")

# サイドバーにUIを配置(業種 → 銘柄 → 企業情報)
with st.sidebar:
    st.header("📊 業種と銘柄の選択")

    # 業種を降順で表示
    industries = sorted(df["業種"].unique(), reverse=True)
    selected_industry = st.selectbox("業種を選択", industries)

    # 業種に応じた銘柄名を表示
    filtered_df = df[df["業種"] == selected_industry]
    selected_brand = st.selectbox("銘柄名を選択", filtered_df["銘柄名"])

    # 選択された企業情報を表示
    selected_row = filtered_df[filtered_df["銘柄名"] == selected_brand].iloc[0]
    st.markdown("---")
    st.subheader("🏢 選択された企業情報")
    st.markdown(f"### 🏷️ 銘柄名:**{selected_row['銘柄名']}**")
    st.markdown(f"### 📌 コード:**{selected_row['コード']}**")
    st.markdown(f"### 🏢 社名:**{selected_row['社名']}**")
    st.markdown(f"### 📂 業種:**{selected_row['業種']}**")

# メイン画面は案内用に使用
st.title("企業情報ビューア")
st.write("サイドバーから業種と銘柄を選択すると、企業情報が表示されます。")

6. コンポーネント解説

✅ st.set_page_config

ページのレイアウトやタイトルを設定。layout="wide" にすると横幅を広く使える。

✅ st.sidebar

サイドバーにUIを配置するためのブロック。フィルターや設定項目に最適。

✅ st.selectbox

選択肢から1つを選ぶドロップダウン。選択値に応じて他のUIを動的に変化させられる。

7. 応用アイデア

  • 都道府県 → 市区町村
  • 商品カテゴリ → 商品名
  • 国 → 州 → 都市
  • 学部 → 学科 → コース
  • 銘柄 → 株価チャート → 財務情報

8. おわりに

Streamlitを使えば、Pythonだけで動的なUIを簡単に構築できます。連動コンボボックスは業務ツールやデータ分析アプリでも活躍する機能です。今回のような企業情報ビューアは、CSVさえあればすぐに応用可能です。ぜひ自分のデータに合わせてカスタマイズしてみてください!

コメント

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