前端 - streamlit

H1S96發表於2024-05-31

簡介

streamlit 是一個用於構建資料應用的開源 Python 庫。它提供了一個簡單的 API,可以讓你在幾行程式碼中構建資料應用。streamlit 會自動處理資料的載入、互動和視覺化,讓你可以專注於資料分析和應用的構建。

無需寫html, css,js等前端程式碼。Streamlit的設計哲學是簡潔高效,它透過減少樣板程式碼的使用,使得建立資料驅動的應用變得前所未有的簡單。

Streamlit的特點包括:

  • 快速開發:使用簡單的Python指令碼就可以建立應用,無需使用複雜的Web框架。
  • 高度互動性:支援多種輸入控制元件和資料視覺化工具,讓使用者與資料和模型進行互動。
  • 易於共享:Streamlit應用可以部署到雲平臺,使團隊和客戶能夠輕鬆訪問。

快速開始

Streamlit支援的Python版本很多,所以只要有Python環境就行。

pip install streamlit

Hello world

'''
*** filename hello_streamlit.py
'''
import streamlit as st

st.title('Hello, Streamlit!')

st.write('這是我的第一個Streamlit應用。')

啟動Streamlit應用:

streamlit run hello_streamlit.py

主要元件和功能

  • Widgets:Streamlit提供了一系列內建的控制元件,如按鈕、選擇框、滑塊等,使得使用者可以與應用進行互動。這些控制元件可以非常簡單地整合到您的應用中,並且Streamlit會自動管理使用者輸入和應用狀態。
  • Data Caching:Streamlit的資料快取機制允許應用記住特定函式的結果。當您使用相同的引數多次呼叫該函式時,Streamlit可以從快取中檢索結果,而不是重新執行計算。這對於處理耗時的資料載入或處理操作尤其有用。
  • Layouts:透過使用列(column)、側邊欄(sidebar)、展開器(expander)等佈局元件,您可以建立結構化和美觀的應用介面。Streamlit的佈局系統靈活且易於使用,允許您輕鬆地定製應用的外觀和感覺。
  • Data Visualization:Streamlit直接支援多種資料視覺化庫,如Matplotlib、Plotly和Altair。這意味著您可以在Streamlit應用中無縫整合豐富的圖表和視覺化元素,以動態展示資料。

互動,表單

  • button:按鈕
  • download_button:檔案下載
  • file_uploader:檔案上傳
  • checkbox:核取方塊
  • radio:單選框
  • selectbox:下拉單選框
  • multiselect:下拉多選框
  • slider:滑動條
  • select_slider:選擇條
  • text_input:文字輸入框
  • text_area:文字展示框
  • number_input:數字輸入框,支援加減按鈕
  • date_input:日期選擇框
  • time_input:時間選擇框
  • color_picker:顏色選擇器
import streamlit as st

@st.cache_data
def expensive_computation(a, b):
    # 模擬一些很複雜的計算
    return a * b

input_a = st.number_input("輸入a", value=1)
input_b = st.number_input("輸入b", value=1)

output = expensive_computation(input_a, input_b)
st.write("計算結果(:", output)


name = st.text_input("請輸入您的名字", value="John Doe")
occupation = st.selectbox("請選擇您的職業", ("學生", "教師", "工程師"))
age = st.slider("請選擇您的年齡", min_value=0, max_value=100, value=30, step=1)

st.write(f"您好,{name}!您是一位{occupation},今年{age}歲。")

多媒體元件

  • image:圖片 st.image
  • audio:音訊 st.audio
  • video:影片 st.video

狀態進度條

  • progress:進度條,如遊戲載入進度
  • spinner:等待提示
  • balloons:頁面底部飄氣球,表示祝賀
  • error:顯示錯誤資訊
  • warning:顯示報警資訊
  • info:顯示常規資訊
  • success:顯示成功資訊
  • exception:顯示異常資訊(程式碼錯誤棧)

頁面,側邊欄,佈局

  • st.sidebar:側邊欄
  • st.empty:空白佔位
  • st.markdown:Markdown
  • st.columns:多列布局
  • st.expander:展開收起
  • st.beta_expander:展開收起
  • st.container:容器
color = st.sidebar.color_picker('Pick A Color', '#00f900')

資料快取

資料快取是Streamlit的一項強大功能,它透過@st.cache裝飾器實現。使用這個裝飾器,您可以標記任何函式,使其輸出被快取。這對於最佳化效能、減少載入時間和提高使用者體驗至關重要。例如,如果您的應用需要從資料庫載入大量資料,您可以使用資料快取來避免每次使用者互動時都執行資料載入。

相關文章