【Streamlit】データフレームの列を選択してグラフ表示する方法:st.selectboxで動的に切り替えよう

Streamlit
この記事は約6分で読めます。

こんにちは、JS2IIUです。
以前の記事でグラフを表示する方法データフレームの表示について紹介しました。今回はそれらを組み合わせてインタラクティブなグラフ描画をStreamlit上で実現したいと思います。今回もよろしくお願いします。

✅ はじめに

Streamlit は、Python だけで簡単に Web アプリを作ることができる、とても便利なライブラリです。

今回ご紹介するのは、データフレームの中から列を選択して、選んだ列のグラフを動的に表示するアプリの作り方です。

  • 気温・湿度・風速などのデータがあった場合…
  • 「気温」を選べば気温のグラフを表示
  • 「湿度」に切り替えれば、そのグラフに変更

というように、選択に応じて表示するグラフを切り替えられるインタラクティブなアプリを作ります。今回作成するアプリのイメージは以下のとおりです。

🧰 ステップ1:必要なライブラリのインポート

まずは必要なライブラリを読み込みましょう。

Python
import streamlit as st
import pandas as pd
import numpy as np
  • streamlit:Web アプリ作成に必要なメインライブラリ
  • pandas:表(データフレーム)を扱うためのライブラリ
  • numpy:ランダムな数値データを作るために使います

📊 ステップ2:サンプルデータの作成と表示

次に、Streamlit アプリで使うサンプルデータを用意します。

Python
# データ作成
df = pd.DataFrame({
    '気温': np.random.randint(15, 30, size=10),
    '湿度': np.random.randint(40, 90, size=10),
    '風速': np.random.randint(0, 10, size=10),
})

# データを表示
st.write("サンプルデータ", df)

このコードでは、10行分の気温・湿度・風速のランダムなデータを生成し、それを Streamlit アプリ上に表形式で表示しています。

🔄 ステップ3:表示したい列を選択するためのUIを作る

次に、表示したいデータ列を選ぶための セレクトボックス(プルダウンメニュー) を追加します。

Python
# ユーザーに列を選んでもらう
selected_column = st.selectbox("グラフに表示する列を選んでください", df.columns)
  • st.selectbox は選択式の UI を作るウィジェットです。
  • 第二引数に df.columns を渡すことで、データフレームの列名を自動的に選択肢として表示してくれます。

選んだ列名(「気温」や「湿度」など)は、変数 selected_column に保存されます。

📈 ステップ4:選択した列のグラフを表示する

ここで、選ばれた列のグラフを表示してみましょう。Streamlit には便利なグラフ表示用の関数がいくつかあります。

Python
# グラフの種類を選ぶ
chart_type = st.radio("グラフの種類を選択", ("折れ線グラフ", "棒グラフ"))

# 選んだ列のグラフを表示
if chart_type == "折れ線グラフ":
    st.line_chart(df[selected_column])
else:
    st.bar_chart(df[selected_column])

このコードで行っていることは次のとおりです:

  1. st.radio によって「折れ線グラフ」と「棒グラフ」のどちらを表示するかを選択できるようにしています。
  2. 選択に応じて、st.line_chart または st.bar_chart を使ってグラフを表示しています。

💡 すべてをまとめたコード

ここまでの内容を一つのファイルにまとめた、完成コードを以下に掲載します。

Python
import streamlit as st
import pandas as pd
import numpy as np

# データ作成
df = pd.DataFrame({
    '気温': np.random.randint(15, 30, size=10),
    '湿度': np.random.randint(40, 90, size=10),
    '風速': np.random.randint(0, 10, size=10),
})

# データを表示
st.write("サンプルデータ", df)

# 列選択 UI
selected_column = st.selectbox("グラフに表示する列を選んでください", df.columns)

# グラフの種類を選択
chart_type = st.radio("グラフの種類を選択", ("折れ線グラフ", "棒グラフ"))

# グラフの表示
if chart_type == "折れ線グラフ":
    st.line_chart(df[selected_column])
else:
    st.bar_chart(df[selected_column])

このコードを app.py という名前で保存し、ターミナルから以下のコマンドで実行してみましょう。

Bash
streamlit run app.py

ブラウザが自動的に開き、アプリが表示されます。選んだ列とグラフの種類に応じて、グラフがリアルタイムで更新されることを確認してください。

✅ まとめ

今回は、Streamlit を使って以下の機能を持つアプリを作成しました:

  • サンプルのデータフレームを作成し表示
  • st.selectbox で列を選んで表示
  • st.line_chartst.bar_chart で選択された列のグラフを表示
  • st.radio でグラフの種類を選べるように拡張

このように、ほんの数行のコードでインタラクティブなグラフ表示ができるのが Streamlit の大きな魅力です。

🔗 参考リンク

最後に書籍のPRです。
24年9月に出版された「ハイパーモダンPython-信頼性の高いワークフローを構築するモダンテクニック」、Claudio Jolowicz著、嶋田、鈴木訳。開発環境の構築、プロジェクトの管理、テストに関して実践的な内容でとても参考になる一冊です。Poetryについても詳しく説明されています。ぜひ手に取ってみてください。

最後まで読んでいただきありがとうございます。

コメント

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