Python/Streamlit

[Streamlit] 기본 API reference (기본 기능)

CocoJamjam 2023. 4. 24. 12:34
728x90
반응형

이번 글에서는 Streamlit의 기본적인 기능에 대해 알아보도록 하자.

 각 명령어들의 자세한 옵션 및 설명은 Streamlit 홈페이지 (링크)에서 확인 가능하니 참고하도록 하자.

목차

  • 강조 문구
    • 제목 넣기
    • 텍스트 넣기
    • Header
    • SubHeader
    • Markdown
    • 색상이 들어간 텍스트 Feature ( Progress, Status 메시지 )
  • 텍스트 넣기 st.write( )
  • 도움말 확인
  • 위젯 만들기
    • 버튼 만들기
    • 체크 박스 만들기
    • 라디오 버튼 만들기
    • 선택 박스 만들기
    • 다중 선택 박스 만들기
    • 슬라이더 만들기
  • 데이터 불러오기
  • 데이터 출력
  • 각종 콘텐츠 출력 (이미지, 비디오, 오디오)
  • 차트 출력
  • 사이드바, 레이아웃

 


# -*- coding:UTF-8 -*-
import streamlit as st
import pandas as pd
from utils import p_lans
from PIL import Image

1. 강조 문구

  • 제목 넣기
  • 텍스트 넣기
  • Header
  • SubHeader
  • Markdown
  • 색상이 들어간 텍스트 Feature ( Progress, Status 메시지 )
def main():
    st.title("Hello World!")

if __name__ == '__main__':
    main()

    # text
    st.text('This is so {}'.format("good"))

    # Header
    st.header('This is subHeader')

    # Subheader
    st.subheader('This is Markdown')

    # Markdown
    st.markdown('## This is Markdown')

    # 색상이 들어간 텍스트 feature
    st.success('성공')
    st.warning('경고')
    st.info('정보와 관련된 탭')
    st.error('에러 메시지')
    st.exception('예외 처리')

강조 문구

2. 텍스트 넣기 ( st.write( ) )

 # st.write()
    st.write('일반 텍스트')
    st.write(1+2)
    st.write(dir(str))

    st.title(':sunglasses:')

st.write( ) 활용

3. 도움말

   # Help
    st.help(range)

도움말

4. 위젯 만들기

  • 버튼 만들기
  • 체크 박스 만들기
  • 라디오 버튼 만들기
  • 선택 박스 만들기
  • 다중 선택 박스 만들기
  • 슬라이더 만들기
 # 위젯, button 기능 활용
    name = "Choi"
    if st.button('Submit'):
        st.write(f'name: {name.upper}')
        
    # RadioButton
    s_state = st.radio('Status', ('활성화', '비활성화'))
    if s_state == '활성화':
        st.success('활성화 상태')
    else:
        st.error('비활성화 상태')

    # Check Box
    if st.checkbox('show/hide'):
        st.text('무언가를 보여줘!!')

    # Select Box
    choice = st.selectbox('프로그래밍 언어', p_lans)
    st.write(f'{choice} 언어를 선택함')

    # multiple selection
    lans = ("영어", "일본어", "중국어", "독일어")
    myChoice = st.multiselect("언어선택", lans, default="중국어")
    st.write("선택", myChoice)

    # Slider
    age = st.slider('나이', 1, 120)
    st.write(age)

위젯 활용하기

5. 데이터 불러오기

 # 데이터 불러오기
    iris = pd.read_csv('data/iris.csv')

6. 데이터 출력

    st.title('IRIS 테이블')
    st.dataframe(iris, 500, 400)    # data, Height, Width

    st.title('table()')
    st.table(iris)

    st.title('write()')
    st.write(iris)

    myCode = """
    def hello():
        print("hi")
    """

    st.code(myCode, language="Python")

7. 각종 콘텐츠 출력 (이미지, 비디오, 오디오)

    # 이미지 가져오기
    img = Image.open('data/dad.jpg')
    st.image(img)

    url = 'https://static.ebs.co.kr/images/public/lectures/2014/06/19/10/bhpImg/44deb98d-1c50-4073-9bd7-2c2c28d65f9e.jpg'
    st.image(url)

    # 비디오 출력
    with open('data/secret_of_success.mp4', 'rb') as rb:
        video_file = rb.read()
        st.video(video_file)

    # 오디오 출력
    with open('data/song.mp3','rb') as rb:
        audio_file = rb.read()
        st.audio(audio_file, format="audio/mp3")

8. 차트 출력

  • 현재 Matplotlib, Altair, Deck.gl, Plot.ly, Bokeh, Graphviz 등을 사용해 시각화함
    • 대부분 df를 넣으면 바로 시각화할 수 있음
  • st.line_chart
  • st.area_chart
  • st.bar_chart
  • st.pyplot
  • st.altair_chart
  • st.vega_lite_chart
  • st.plotly_chart
  • st.bokeh_chart
  • st.pydeck_chart
  • st.graphviz_chart
  • st.map

9. 사이드바, 레이아웃

  • column
if __name__ == "__main__":
    main()

# 4:9로 분할하여 컬럼 생성
col1,col2 = st.columns([4,9])

# column 1 내용
with col1 :
  st.title('Here is column1')

# column 2 에 담을 내용
with col2 :
  st.title('Here is column2')
  st.checkbox('This is checkbox1 in col2 ')


# with 구문 말고 다르게 사용 가능 ( = with col2:)
col1.subheader(' I am column1 Subheader !! ')
col2.checkbox('This is checkbox2 in col2 ')

  • tab
if __name__ == "__main__":
    main()

# 탭 생성 : 탭 이름 => Tab A, Tab B
tab1, tab2 = st.tabs(['Tab A', 'Tab B'])

# tab A 내용
with tab1:
    st.write('hello')

# tab B 내용
with tab2:
    st.write('hi')

  • sidebar
add_selectbox = st.sidebar.selectbox("왼쪽 사이드바 Select Box", ("A", "B", "C"))

 

출처 및 참고사이트 : 

https://blog.zarathu.com/posts/2023-02-01-streamlit/#streamlit-%EB%94%B0%EB%9D%BC-%ED%95%B4%EB%B3%B4%EA%B8%B0

 

https://zzsza.github.io/mlops/2021/02/07/python-streamlit-dashboard/

 

728x90
반응형

'Python > Streamlit' 카테고리의 다른 글

[Streamlit] 설치 및 시작하기 / GitHub로 배포하기  (0) 2023.04.21