Skip to content

[설명] Streamlit Selectbox: 사용법, 매개변수 및 예제

Streamlit은 파이썬 개발자가 데이터 애플리케이션을 만드는 방식을 혁신했습니다. 이 강력한 오픈 소스 라이브러리를 사용하면 몇 줄의 코드로 데이터 스크립트를 공유 가능한 웹 앱으로 변환할 수 있습니다. Streamlit의 주요 기능 중 하나인 st.selectbox은 다양한 용도로 활용되고 널리 사용되는 반응형 위젯 중 하나로 인해 눈에 띕니다.

st.selectbox은 Streamlit 앱에서 선택 상자를 표시하는 위젯입니다. 사용자는 드롭다운 메뉴에서 옵션을 선택할 수 있으며, 이는 앱의 상호 작용성을 향상시키는 데 탁월한 도구입니다. 그럼 어떻게 작동하며 어떻게 최대한 활용할 수 있을까요? 이제 함께 알아보겠습니다.

Streamlit 앱을 Tableau로 손쉽게 변환할 수 있는 멋진 데이터 분석 및 데이터 시각화 도구인 PyGWalker을 들어보셨나요?

PyGWalker (opens in a new tab)는 Streamlit 앱을 손쉽게 Tableau와 유사한 사용자 인터페이스로 변환하는 데 도움이 되는 Python 라이브러리입니다. Coding is Fun (opens in a new tab)의 Sven이 만든 이 멋진 데이터 시각화 Python 라이브러리를 통해 Streamlit 앱을 강화하는 자세한 단계를 확인해보세요!


PyGWalker 커뮤니티에 큰 공헌을 한 Sven (opens in a new tab)에게 특별히 감사드립니다!

더 많은 PyGWalker 예제는 PyGWalker GitHub 페이지 (opens in a new tab)에서 확인할 수 있습니다.

st.selectbox 이해하기

st.selectbox이란?

st.selectbox은 Streamlit에서 선택 상자 위젯을 생성하는 함수입니다. 이는 사용자에게 옵션 목록을 표시하는 사용자 인터페이스 요소입니다. 사용자는 목록에서 한 가지 옵션을 선택할 수 있으며, 선택한 옵션은 데이터 필터링, 모델 선택 또는 시각화 조작과 같은 다양한 목적으로 앱에서 사용할 수 있습니다.

import streamlit as st
 
option = st.selectbox(
    '어떻게 연락드릴까요?',
    ('이메일', '집 전화', '휴대폰')
)
st.write('선택한 옵션:', option)

이 예제에서 st.selectbox은 '이메일', '집 전화', '휴대폰' 세 가지 옵션을 가진 선택 상자를 생성합니다. 선택한 옵션은 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의 일반적인 사용법 중 하나는 사용자가 데이터를 필터링할 수 있도록 하는 것입니다. 예를 들어, 각국에 대한 정보를 포함하는 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를 사용하여 사용자가 다른 분류기 중에서 선택할 수 있도록 할 수 있습니다.

import streamlit as st
from sklearn.ensemble import RandomForestClassifier
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는 또 다른 유용한 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의 기능 중 하나는 사용자가 텍스트를 입력하여 옵션을 검색할 수 있는 기능입니다. 이는 선택 상자에 많은 수의 옵션이 있는 경우 매우 유용할 수 있습니다. 그러나 특정 경우에는 이 기능을 비활성화하고 싶을 수도 있습니다. 현재 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)

위 예제에서는 'Option 2'가 기본적으로 선택되고 있습니다. 이는 index 매개변수에 1이 전달되었기 때문입니다.

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)는 Streamlit 앱을 손쉽게 Tableau처럼 UI를 적용할 수 있도록 도와주는 Python 라이브러리입니다.

PyGWalker for Data visualization in 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에서 텍스트 검색 기능을 비활성화하는 내장된 방법을 제공하지 않습니다. 그러나 향후 버전에서 이는 변경될 수 있습니다.