반응형
# Streamlit 상호작용 하는 버튼 이용하기
웹에서는 로그인을 위해 사용하는 로그인 버튼이나,
주소 입력시 여러 지역 중 내 거주 지역을 선택하는 등등 많은 것들의 기능이 있습니다.
이번 포스팅에서는 웹에서 활용 할 수 있는 버튼들을 다룹니다.
설명보다는 눈으로 보고 이해하는게 빠를 것 같으니 바로 소스코드와 실행화면과 함께 출력
# Visual Studio Code에서 Streamlit 상호작용 버튼 이용하기
라이브러리 호출 및 CSV파일 데이터프레임화
import streamlit as st
import pandas as pd
df = pd.read_csv('data2/iris.csv')
버튼
- 버튼을 누를시 정해진 작업 수행
- .button('버튼이름')
- 예시) 버튼을 누를시 특정 컬럼의 문자열을 대문자로 변경해보기
if st.button('대문자') :
st.write(df['species'].str.upper().head(3))
라디오 버튼
- 여러 선택지 중에 하나를 선택하여 선택된 작업 수행
- .radio('보여줄 메시지', '선택지1, 선택지2...')
- 예시) 라디오 버튼으로 특정컬럼을 이용하여 오름차순, 내림차순 정렬 해보기
my_order = ['오름차순', '내림차순'] #라디오 버튼에 보여줄 텍스트
status = st.radio('정렬방법선택', my_order) # 라디오 버튼의 상태 변수화
if status == my_order[0] : # 첫번째 선택시 오름차순
st.write(df.sort_values('petal_length'))
elif status == my_order[1] : # 두번째 선택시 내림차순
st.write(df.sort_values('petal_length', ascending=False))
체크 박스
- 체크와 체크를 해제 할 수 있게 하여 예/아니오 상황만으로 작업 수행
- .checkbox('보여줄 메시지')
- 예시) 체크박스 체크시 데이터프레임 헤드 5개 보여주기
해제시 헤드를 숨겼다고 텍스트 출력하기
- 예시) 체크박스 체크시 데이터프레임 헤드 5개 보여주기
if st.checkbox('헤드 5개 보기'):
st.write(df.head())
else :
st.text('헤드를 숨겼습니다.')
셀렉트 박스
- 여러개의 목록을 보여주고 그 중 하나를 선택, 선택된 작업 수행
- .selectbox('보여줄 메시지', '리스트1, 리스트2...')
- 예시) 목록 중에서 하나 선택하면 그에 따른 메시지 출력하기
language = ['Python', 'C', 'Java', 'Go', 'PHP']
my_choice = st.selectbox('좋아하는 언어 선택', language)
if my_choice == language[0] :
st.write("파이썬 선택")
# 이후 생략
멀티 셀렉트
- 여러개의 목록에서 하나 이상을 선택
- .multiselect('보여줄 메시지', '리스트1, 리스트2...')
- 예시) 데이터프레임의 컬럼을 목록화하여 보고싶은 컬럼 선택하여 보기
columns_list = df.columns #데이터프레임의 컬럼명을 저장
choice_list = st.multiselect('컬럼을 선택하세요', columns_list)
st.write( df[choice_list] )
슬라이더
- 숫자를 조정하는데 주로 사용, 조정된 숫자로 작업 수행
- .slider('보여줄 메시지', 시작값, 끝값, 기본값, 단위값)
- 예시) 1부터 120까지 나이를 조정할 수 있게 하고, 기본값은 30, 1씩 이동
age = st.slider('나이', 1, 120, 30, 10) # 시작값, 끝값, 기본값, 스텝
st.text('제가 선택한 나이는 {}입니다.'.format(age))
사이드 바
- 화면 왼쪽에 프레임을 나누어 따로 표기
- .sidebar ~ : 왼쪽 프레임에서 할 행동 표시
- 오른쪽 프레임에 표시하고 싶은데 능력이 모자란건지 홈페이지에서도 못찾겠음
https://docs.streamlit.io/- 예시) 새로운 왼쪽 프레임에 안녕하세요와 버튼 생성하기
st.sidebar.text('안녕하세요')
st.sidebar.button('버튼')
익스팬더
- 활성화시 숨겨져 있던 정해진 작업을 수행 (확장 개념, =더보기 느낌)
- .expander('보여줄 메시지')
- 'hello' 문구 출력시 데이터프레임의 헤드 5개 출력
with st.expander('Hello') :
st.text('변경')
st.write(df)
반응형