Skip to content

[解説] Streamlit Selectbox: 使用方法、パラメータ、例

Streamlitは、Python開発者がデータアプリケーションを作成する方法に革命をもたらしました。コードのわずか数行でデータスクリプトを共有可能なWebアプリに変換することができる強力なオープンソースライブラリです。Streamlitの最も重要な機能の1つは、その対話型ウィジェットであり、その中でもst.selectboxはその汎用性と広範な使用方法で際立っています。

st.selectboxは、Streamlitアプリケーションにセレクトボックスを表示するウィジェットです。ユーザーはドロップダウンメニューからオプションを選択できるため、アプリの対話性を向上させるための優れたツールです。しかし、それはどのように機能し、それを最大限に活用する方法はどうでしょうか?早速探ってみましょう。

あなたは、この素晴らしいデータ分析とデータビジュアライゼーションツールを聞いたことがありますか?それは、Streamlit AppをTableauのようなUIに簡単に埋め込むことができる便利なPythonライブラリ、PyGWalker (opens in a new tab)です。

Coding is FunのSvenが制作した素晴らしいビデオ (opens in a new tab)をチェックして、この強力なData Visualization Python Libraryを使ってStreamlitアプリにパワーを与えるための詳細な手順をご覧ください!


PyGWalkerコミュニティへのSvenと彼の素晴らしい貢献 (opens in a new tab)に特別な感謝を申し上げます!

さらに、PyGWalkerのGitHubページ(https://github.com/Kanaries/pygwalker)で、PyGWalkerのさらなる例もご確認いただけます。 (opens in a new tab)

st.selectboxの理解

st.selectboxとは何ですか?

st.selectboxは、セレクトボックスウィジェットを作成するStreamlitの関数です。ユーザーインターフェース要素であり、ユーザーにオプションのリストを表示します。ユーザーはリストから1つのオプションを選択でき、そのオプションはデータのフィルタリング、モデルの選択、視覚化の制御など、さまざまな目的でアプリで使用することができます。

import streamlit as st
 
option = st.selectbox(
    'どのように連絡を希望しますか?',
    ('Eメール', '自宅の電話', '携帯電話')
)
st.write('選択したオプション:', option)

この例では、st.selectboxは3つのオプション:'Eメール'、'自宅の電話'、および'携帯電話'を持つセレクトボックスを作成しています。選択したオプションは変数optionに格納され、コードの他の場所で使用することができます。

st.selectboxのパラメータ

st.selectboxには、動作を制御するためのいくつかのパラメータがあります。

  • label:セレクトボックスのラベルとして使用される文字列です。
  • options:セレクトボックスに表示するオプションのリストです。これは有効なPythonのリストや配列のようなオブジェクトである場合があります。
  • index:デフォルトで選択されるオプションのインデックスです。指定しない場合、最初のオプションがデフォルトで選択されます。
  • format_func:オプションを引数として受け取り、それの文字列表現を返す関数です。特定の方法でオプションを表示したい場合に使用します。

st.selectboxは何を返しますか?

st.selectboxは現在選択されているオプションを返します。これは、提供したオプションに応じて文字列、数値、または他の型のオブジェクトであることがあります。この返された値は、アプリ内で使用するために使用できます。たとえば、データフレームをフィルタリングするため、視覚化を制御するため、計算をトリガするためなどです。

st.selectboxの使用方法

st.selectboxの使用方法

st.selectboxの使用方法は簡単です。まず、Streamlitライブラリをインポートする必要があります。次に、ラベルとオプションのパラメータを指定してst.selectboxを呼び出すことができます。選択されたオプションは関数によって返されます。

import streamlit as st
 
## オプションを定義
options = ['オプション1', 'オプション2', 'オプション3']
 
## セレクトボックスを作成
selected_option = st.selectbox('オプションを選択してください:', options)
 
## 選択したオプションを表示
st.write('選択したオプション:', selected_option)

この例では、セレクトボックスには'オプション1'、'オプション2'、および'オプション3'のオプションが表示されます。

st.selectboxの使用例

Streamlitのst.selectboxは、さまざまなシナリオで使用できる汎用的なウィジェットです。使用例をいくつか見て、その使用方法をよりよく理解してみましょう。

例1:データのフィルタリング

st.selectboxの一般的な使用例の1つは、ユーザーがデータをフィルタリングできるようにすることです。たとえば、さまざまな国に関する情報を含むDataFrameがある場合、st.selectboxを使用してユーザーが国を選択し、その国のデータのみを表示できるようにすることができます。

import streamlit as st
import pandas as pd
 
## データを読み込む
data = pd.read_csv('data.csv')
 
## 国のリストを取得する
countries = data['Country'].unique()
 
## セレクトボックスを作成
selected_country = st.selectbox('国を選択してください:', countries)
 
## データをフィルタリングする
filtered_data = data[data['Country'] == selected_country]
 
## フィルタリングされたデータを表示する
st.write(filtered_data)

この例では、st.selectboxを使用してDataFrameから一意の国を持つドロップダウンメニューが作成されます。ユーザーの選択は、DataFrameをフィルタリングして選択された国のデータのみを表示するために使用されます。

例2:モデルの選択

st.selectboxの別の一般的な使用例は、機械学習アプリケーションです。ここでは、ユーザーがモデルを選択できるようにst.selectboxを使用することができます。たとえば、分類アプリを構築している場合、ユーザーが異なる分類器の間で選択できるようにst.selectboxを使用できます。

import streamlit as st
from sklearn.ensemble import RandomForestClassifier

次のように、このマークダウンファイルの日本語翻訳を提供します。もしフロントマターがある場合は、languageパラメータをjaに設定してください。

from sklearn.svm import SVC
 
## モデルを定義する
models = {
    'ランダムフォレスト': RandomForestClassifier(),
    'SVM': SVC()
}
 
## セレクトボックスを作成する
selected_model = st.selectbox('モデルを選択してください:', list(models.keys()))
 
## 選択されたモデルを取得する
model = models[selected_model]
 
## モデルを使用する...

この例では、st.selectboxを使用して利用可能なモデルのドロップダウンメニューを作成しています。ユーザーの選択は、辞書から対応するモデルを取得するために使用されます。

他のStreamlitウィジェットの探索

st.selectboxはパワフルなウィジェットですが、Streamlitには他にも多くのウィジェットがあり、インタラクティブなアプリケーションを作成するために使用することができます。いくつかのウィジェットを探ってみましょう。

st.checkbox

st.checkboxは、もう1つ便利なStreamlitウィジェットです。ユーザーはチェックボックスをオンまたはオフにすることができます。st.selectboxと同様に、st.checkboxはチェックボックスの現在の状態を返します。

import streamlit as st
 
## チェックボックスを作成する
is_checked = st.checkbox('チェックしてください')
 
## チェックボックスの状態を表示する
st.write('チェックボックスは', 'チェック済み' if is_checked else '未チェック')

st.slider

st.sliderは、スライダーを作成するウィジェットです。ユーザーはスライダーを移動させて指定された範囲内の値を選択することができます。st.sliderはスライダーの現在の値を返します。

import streamlit as st
 
## スライダーを作成する
value = st.slider('値を選択してください', 0, 100, 50)
 
## 選択された値を表示する
st.write('選択した値は:', value)

これらは、Streamlitで利用可能な多くのウィジェットの一部です。これらのウィジェットを組み合わせることで、高度にインタラクティブでユーザーフレンドリーなアプリケーションを作成することができます。

応用的な使用方法と注意点

Streamlitのst.selectboxはパワフルなウィジェットですが、最大限に活用するためにはいくつかの応用的な使用方法と注意点を知っておく必要があります。

st.selectboxでのテキスト検索の有効化/無効化

st.selectboxの特徴の1つは、ユーザーがテキストを入力してオプションを検索できる機能です。オプションの数が多い場合には非常に便利ですが、一部の場合ではこの機能を無効にしたい場合があります。現時点では、Streamlitはst.selectboxでテキスト検索を無効にするための組み込みの方法を提供していませんが、将来のバージョンで変更される可能性があります。

デフォルト値とインデックス

デフォルトでは、st.selectboxはリストの最初のオプションを選択します。ただし、indexパラメータを使用することでデフォルトで選択されるオプションを変更することができます。indexパラメータにはデフォルトで選択されるオプションのインデックスを示す整数を指定します。

import streamlit as st
 
# デフォルトで 'Option 2' を選択するセレクトボックスを作成する
selected_option = st.selectbox('オプションを選択してください:', ['オプション 1', 'オプション 2', 'オプション 3'], index=1)
 
# 選択されたオプションを表示する
st.write('選択したオプションは:', selected_option)

この例では、'オプション 2' がデフォルトで選択されています。これは、そのインデックス(1)が index パラメータに渡されているためです。

format_funcを使用したカスタムフォーマット

st.selectboxでは、format_funcパラメータを使用してオプションの表示方法をカスタマイズすることができます。format_funcは、オプションを入力として受け取り、その文字列表現を返す関数です。

import streamlit as st
 
# フォーマット関数を定義する
def format_func(option):
    return option.upper()
 
# カスタムフォーマットを使用してセレクトボックスを作成する
selected_option = st.selectbox('オプションを選択してください:', ['オプション 1', 'オプション 2', 'オプション 3'], format_func=format_func)
 
# 選択されたオプションを表示する
st.write('選択したオプションは:', selected_option)

この例では、format_funcパラメータによってオプションが大文字で表示されています。

まとめ

Streamlitのst.selectboxは、Pythonアプリケーションのインタラクティビティを大幅に向上させる柔軟でパワフルなウィジェットです。データの可視化ツール、機械学習アプリケーション、その他のタイプのインタラクティブなアプリケーションの構築においても、st.selectboxを使用することでアプリケーションをより使いやすく直感的にすることができます。ぜひ、st.selectboxを試して、Streamlitアプリケーションの改善にどのように役立つかを確認してみてください!

StreamlitのアプリをTableauのようなデータ分析・データ可視化ツールに変える素晴らしいツール、PyGWalkerをご存知ですか?

PyGWalker (opens in a new tab)は、簡単にTableauのようなUIを自分のStreamlitアプリに組み込むのに役立つPythonライブラリです。

PyGWalkerでStreamlitでのデータ可視化 (opens in a new tab)

よくある質問

  1. Streamlitでのst.selectboxのデフォルト値は何ですか? デフォルトでは、st.selectboxはリストの最初のオプションを選択します。ただし、indexパラメータを使用して異なるデフォルトオプションを指定することができます。

  2. st.selectboxでオプションの表示をカスタマイズするにはどうすればよいですか? st.selectboxでは、format_funcパラメータを使用してオプションの表示をカスタマイズすることができます。format_funcは、オプションを入力として受け取り、その文字列表現を返す関数です。

  3. st.selectboxのテキスト検索機能を無効にすることはできますか? 現時点では、Streamlitはst.selectboxのテキスト検索機能を無効にするための組み込みの方法を提供していません。ただし、将来のバージョンで変更される可能性があります。