[설명] 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 라이브러리입니다.
자주 묻는 질문
-
Streamlit에서 st.selectbox의 기본값은 무엇인가요? 기본적으로 st.selectbox는 옵션 목록에서 첫 번째 옵션을 선택합니다. 그러나
index
매개변수를 사용하여 다른 기본 옵션을 지정할 수 있습니다. -
st.selectbox에서 옵션의 표시를 어떻게 사용자 정의할 수 있나요? st.selectbox에서 옵션의 표시를 사용자 정의하기 위해
format_func
매개변수를 사용할 수 있습니다.format_func
은 옵션을 매개변수로 받아들이고 해당 옵션의 문자열 표현을 반환하는 함수입니다. -
st.selectbox에서 텍스트 검색 기능을 비활성화할 수 있나요? 현재 Streamlit에서는 st.selectbox에서 텍스트 검색 기능을 비활성화하는 내장된 방법을 제공하지 않습니다. 그러나 향후 버전에서 이는 변경될 수 있습니다.