[간단 폭속] HTML 파일이 필요없는 Streamlit로 몇 분 만에 웹 앱 만들기

Streamlit은 무엇입니까?


Streamlit는 파이썬 오픈 소스 프레임 워크입니다.

이번 목표



우선은 간단하게 web어플인것 같은 것을 만들어 가고 싶습니다. 웹 앱을 만드는 데 귀찮은 것이 백엔드의 여러 가지 처리와 HTML 파일의 작성이지만, Streamlit은 그 작업을 할 필요가 전혀 없는 것 같습니다. 무려 파이썬 파일 하나로 웹 페이지를 만들 수 있습니다.

추가 (2021/10)



StreamliCloud를 통해 배포까지 쉽게 할 수 있습니다. 소개 기사는 여기

설치



pip를 사용하여 설치할 수 있습니다.
$ pip install streamlit

데모 페이지 시작


$ streamlit hello 

위의 명령으로 http://localhost:8501 에서 바로 데모 화면이 시작됩니다.
간단하네요.


웹페이지 만들기



적절한 디렉토리에 Python 파일을 만듭니다. 파일명은 뭐든지 좋지만, 이번은 공식에 준해 first_app.py 로 합니다.
$ touch first_app.py
$ cd first_app.py 

다음에 이 파일에 기입해 갑니다. 가장 먼저이므로 Helloworld를 표시합시다.

first_app.py
import streamlit as st
st.title('MyApp')
st.write("HelloWorld")
first_app.py 있는 디렉토리에서 다음 명령을 실행
$ streamlit run first_app.py

아마도 웹 페이지에 Helloworld라고 표시됩니다.
HTML이나 CSS 파일을 걸지 않아도, 이런 적은 코드량으로 Web 페이지를 만들 수 있다니 조금 감동이군요.
그 밖에도 헤더나 데이터 프레임도 간단하게 표시할 수 버립니다.

first_app.py
import streamlit as st
import numpy as np
import pandas as pd

st.title("HelloWorld")
st.subheader("This is subheader")
st.write("This is testdata")
st.write(pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
}))


이와 같이 Streamlit에는 st.write()st.title() 와 같은 다양한 메소드가 준비되어 있습니다.
다른 메소드에 대해서는 공식 문서를 참조해 주세요.

magic commands



이것만으로도 HTML 파일 필요없이 프론트 처리를 할 수 있으므로 충분히 편리합니다만,
무려 streamlit에는 실은 보다 획기적인 커멘드가 준비되어 있습니다.

first_app.py
import streamlit as st
import numpy as np
import pandas as pd

"""
# My first app
### This is subheader

This is testdata
"""

st.write(pd.DataFrame({
    'first column': [1, 2, 3, 4],
    'second column': [10, 20, 30, 40]
}))

이렇게 쓰고 앱을 확인해 보면,



오...
Streamlit은 코드 안에 끈적끈적한 코멘트를 잘 읽고,
앱에 써주세요.
공식에서는 magic command라고 부릅니다. 바로 마법입니다.
덧붙여서 Python3 이후가 아니면 움직이지 않는 것 같습니다.

widgets를 사용하여 대화형 앱 만들기



확인란과 선택 상자도 쉽게 추가할 수 있습니다.
시도에 선택 상자에서 도쿄 또는 오사카를 선택하여지도에 점을 흩어서 칠 수 있습니다.
그리고, 체크 박스에 체크를 하면, 좌표 데이터의 일람을 볼 수 있도록(듯이) 했습니다.
locate = {"東京":[35.68, 139.76] , "大阪":[34.70 ,135.49]}

# セレクトボックス
l = st.selectbox(
    'Which places do you like best?',
     ("東京","大阪"))
'You selected:', l

# 地図をプロット
map_data = pd.DataFrame(
    np.random.randn(1000, 2) / [50, 50] + locate[l],
    columns=['lat', 'lon'])
st.map(map_data)

# チェックボックス
if st.checkbox('Show dataframe'):
    st.write(map_data)

또한 대부분의 명령은 st.sideber를 추가하여 각 기능을 왼쪽 사이드 바에 전달할 수 있습니다.st.selectboxst.sidebar.selectboxst.checkboxst.sidebar.chechbox그렇다면



이렇게 간단한 웹 앱인 것 같습니다.

마침내



정말 Python 파일 하나로, 게다가 몇 줄의 코드로 web 앱을 만들 수 버렸습니다.
같은 파이썬에서 DjangoDash 도 충분히 빠르다고 느꼈지만, Streamlit 는 폭속이었지요.
그 밖에도 그래프나 화상, 동영상 등도 한 줄의 간단한 코드로 임베드할 수 있었습니다.
그다지 디자인에 집착이 없고, 바삭바삭과 자신이 개발한 무엇인가를 공개하고 싶을 때는, 사용해 보는 가치는 많이 있다고 생각합니다.

계속은 여기 에서.

좋은 웹페이지 즐겨찾기