[Streamlit] 기본 문법

이수진·2023년 12월 9일
0
post-custom-banner

프로젝트를 진행할 때, 만든 모델을 다른 사람에게 공유하고, 보여주고 싶은 경우 사용할 수 있는 대시보드

간단하게 실행 가능한 도구 = streamlit
python으로 web 구현하기

Streamlit

제목 설정하기

타이틀

st.title("Title")

헤더

st.header("Header")

서브헤더

st.subheader("subheader")

텍스트 작성

st.title("Text")

캐싱

  • 특정 버튼 누를 때 데이터 불러오기 -> 데이터 반복으로 불러오기 X -> 중간에 캐싱하면 속도 개선 가능
  • 데코레이터 사용해 캐싱 진행
    * 데코레이터란?
    함수를 장식하는 도구
    def 함수(함수)
    - 함수 이름 확인
    • 함수 구성하는 코드 확인
    • 함수 호출 시 사용한 매개변수
      => 위 세개 확인해 로컬에 저장, 다시 호출시 캐싱 사용 가능하면 사용
@st.cache
def load_data():
	return data

위젯

  • 버튼 만들기
  if st.button("click button"):
      st.write("Data Loading..")
      load_data()
  • 체크박스
  checkbox_btn = st.checkbox('Checktbox Button', value = True) #디폴트 체크
	
  if checkbox_btn:
      st.write('Great!')
  • 라디오 버튼
  selected_item = st.radio("Radio Part", ("A", "B", "C"))
	
  if selected_item == "A":
      st.write("A!!")
  elif selected_item == "B":
      st.write("B!")
  elif selected_item == "C":
      st.write("C!")

첫 요소가 디폴트로 선택된다.

  • 선택박스
  option = st.selectbox('Please select in selectbox!',
                       ('kyle', 'seongyun', 'zzsza'))
	
  st.write('You selected:', option)
  • 다중 선택박스
  multi_select = st.multiselect('Please select somethings in multi selectbox!',
                                ['A', 'B', 'C', 'D'])
	
  st.write('You selected:', multi_select)

결과가 배열로 나온다.

  • 슬라이더
  values = st.slider('Select a range of values', 0.0, 100.0, (25.0, 75.0))
  st.write('Values:', values)

데이터 입력

#텍스트 데이터
  st.text_input(value)
#텍스트 데이터를 암호로 사용 
  st.text_input(label, value, type="password")
# 숫자 데이터 
  st.number_input(label, value)
# 여러줄의 텍스트 데이터
  st.text_area(label, value)
#날짜 입력
  st.date_input(label, value)
#시간 입력
  st.time_input(label, value) 

데이터 출력

  st.write("st.dataframe api") #st.dataframe 사용하면 인터렉티브 테이블
  df = pd.DataFrame(np.random.randn(5, 2), columns=('col %d' % i for i in range(2)))
  st.dataframe(df.style.highlight_max(axis=0)) #최대값에 하이라이트 
	
  st.write("st.table api") #st.table 사용하면 static한 테이블
  st.table(df)

차트 출력

st.line_chart(df)
st.area_chart(df)
st.bar_chart(df)
st.pyplot(df)
st.altair_chart(df)
st.vega_lite_chart(df)
st.plotly_chart(df)
st.bokeh_chart(df)
st.pydeck_chart(df)
st.graphviz_chart(df)
st.map(df)

progress, status

st.success("성공메세지")
st.error("error")
st.warning("Warning")
st.info("info")

import time
# 코드 실행 도중에 출력하는 메세지
with st.spinner("코드 실행중"):
	time.sleep(5) 
st.success("완료")

이미지, 비디오, 오디오

from PIL import Image
image = Image.open("img.jpg")
st.image(image)


video = open("videpo.mp4", "rb")
video_bytes = video.read()
st.video(video_bytes)


audio = open("audio.ogg", 'rb')
audio_bytes = audio.read()
st.audio(audio_bytes, format = 'audio/ogg')

사이드바, 레이아웃

#웹페이지 왼쪽에 사이드바 추가
add_selectbox = st.sidebar.selectbox("왼쪽 사이드바 Select Box", ("A", "B", "C"))

#st.beta_columns 사용해 레이아웃 나누기
col1, col2, col3 = st.beta_columns(3)

#첫번째 열
with col1:
   st.header("A cat")
   st.image("https://static.streamlit.io/examples/cat.jpg", use_column_width=True)

#두번째 열 
with col2:
   st.header("Button")
   if st.button("Button!!"):
       st.write("Yes")

#세번째 열
with col3:
	st.header("Chart Data")
	chart_data = pd.DataFrame(np.random.randn(50, 3), columns=["a", "b", "c"])
	st.bar_chart(chart_data)

https://cheat-sheet.streamlit.app/

streamlit 배포

  1. Heroku
    https://www.heroku.com/
  2. streamlit 자체 제공 기능
  3. 깃헙
profile
뇽안
post-custom-banner

0개의 댓글