Home
Login

Streamlit 是一個 Python 庫,讓你可以用純 Python 代碼創建美觀的自定義 Web 應用,用於機器學習、數據科學等領域。

Apache-2.0Python 39.9kstreamlit Last Updated: 2025-06-14

Streamlit:用 Python 構建數據應用程式的最快方式

簡介

Streamlit 是一個開源的 Python 庫,旨在讓數據科學家和機器學習工程師能夠快速、輕鬆地創建美觀且互動式的 Web 應用程式。它簡化了將數據科學腳本轉化為可共享的 Web 應用的過程,無需前端開發經驗。

核心理念:

  • 擁抱 Python 腳本: Streamlit 允許您使用純 Python 腳本構建應用程式,無需編寫 HTML、CSS 或 JavaScript。
  • 即時更新: 每次修改程式碼並儲存時,Streamlit 應用程式都會自動更新,從而實現快速迭代和實驗。
  • 簡單易用: Streamlit 提供了直觀的 API,使您可以輕鬆地添加各種 UI 元素,例如文字、圖表、滑塊、按鈕等。
  • 數據驅動: Streamlit 專門為數據科學工作流程設計,可以輕鬆地顯示和操作數據。
  • 無需前端經驗: Streamlit 抽象了前端開發的複雜性,讓您可以專注於數據和模型。

項目倉庫資訊

  • GitHub 倉庫: https://github.com/streamlit/streamlit
  • 主要程式語言: Python
  • 許可證: Apache License 2.0
  • Stars: 23k+ (截至 2024年1月26日)
  • Forks: 2k+ (截至 2024年1月26日)
  • Contributors: 300+

主要特性

  • 簡單易用的 API: Streamlit 提供了簡潔的 API,用於創建各種 UI 元素,例如:
    • st.write(): 顯示文字、數據、圖表等。
    • st.slider(): 創建滑塊控件。
    • st.button(): 創建按鈕控件。
    • st.selectbox(): 創建下拉選擇框。
    • st.dataframe(): 顯示 Pandas DataFrame。
    • st.line_chart(): 顯示折線圖。
    • st.map(): 顯示地圖。
    • st.file_uploader(): 上傳檔案
  • 自動重新執行: 每次修改程式碼並儲存時,Streamlit 應用程式都會自動重新執行,從而實現快速迭代。
  • 快取: Streamlit 具有內建的快取機制,可以快取計算結果,從而提高應用程式的效能。使用@st.cache_data裝飾器可以快取函數結果。
  • 會話狀態: Streamlit 允許您使用 st.session_state 管理應用程式的狀態,從而創建更複雜的互動式應用程式。
  • 組件: Streamlit 支援自定義組件,允許您擴展 Streamlit 的功能並整合第三方庫。
  • 主題: Streamlit 允許您自定義應用程式的外觀,包括顏色、字體等。
  • 部署: Streamlit 應用程式可以輕鬆部署到各種平台,例如 Streamlit Community Cloud、Heroku、AWS、Google Cloud 等。
  • 社群支援: Streamlit 擁有活躍的社群,提供豐富的文件、教程和範例。

核心模組和功能

  • streamlit: 核心庫,包含用於構建應用程式的 API。
  • streamlit.components.v1: 用於創建自定義組件的 API。
  • streamlit.config: 用於配置 Streamlit 應用程式的行為。
  • streamlit.delta_generator: 用於生成 UI 元素的 API。
  • streamlit.runtime: Streamlit 應用程式的執行時環境。
  • streamlit.web: Streamlit 應用程式的 Web 伺服器。

使用場景

Streamlit 可用於構建各種數據應用程式,例如:

  • 數據可視化: 創建互動式圖表和儀表板,以探索和分析數據。
  • 機器學習模型部署: 將機器學習模型部署為 Web 應用程式,以便用戶可以與模型進行互動。
  • 數據探索: 構建互動式工具,以探索和理解數據。
  • 數據標註: 創建數據標註工具,以幫助標註數據。
  • 教育和演示: 創建互動式演示,以展示數據科學概念和技術。
  • 內部工具: 構建內部數據工具,以提高團隊的效率。

範例程式碼

以下是一個簡單的 Streamlit 應用程式範例:

import streamlit as st
import pandas as pd
import numpy as np

st.title('My First Streamlit App')

st.write('Hello, world!')

# 創建一個 DataFrame
data = pd.DataFrame({
    'col1': [1, 2, 3, 4],
    'col2': [5, 6, 7, 8]
})

# 顯示 DataFrame
st.write('Here is a DataFrame:')
st.dataframe(data)

# 創建一個滑塊
x = st.slider('Select a value for x', 0, 100, 50)

# 顯示滑塊的值
st.write('The value of x is:', x)

# 創建一個隨機數圖表
chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=['a', 'b', 'c'])

st.line_chart(chart_data)

安裝

可以使用 pip 安裝 Streamlit:

pip install streamlit

執行

要執行 Streamlit 應用程式,請在命令行中執行以下命令:

streamlit run your_app.py

其中 your_app.py 是您的 Streamlit 應用程式的 Python 檔案。

優點

  • 快速開發: Streamlit 允許您快速構建數據應用程式,無需編寫大量程式碼。
  • 易於使用: Streamlit 提供了直觀的 API,使您可以輕鬆地添加各種 UI 元素。
  • 互動性: Streamlit 應用程式是互動式的,允許用戶與數據進行互動。
  • 可部署性: Streamlit 應用程式可以輕鬆部署到各種平台。
  • 社群支援: Streamlit 擁有活躍的社群,提供豐富的文件、教程和範例。

缺點

  • 定制性有限: Streamlit 的定制性相對有限,可能無法滿足所有應用程式的需求。
  • 效能: 對於複雜的應用程式,Streamlit 的效能可能不如傳統的 Web 框架。
  • 前端控制較弱: 無法像傳統前端框架那樣精細控制UI。

總結

Streamlit 是一個強大的工具,可以幫助數據科學家和機器學習工程師快速構建美觀且互動式的 Web 應用程式。它簡化了將數據科學腳本轉化為可共享的 Web 應用的過程,無需前端開發經驗。雖然它在定制性和效能方面存在一些限制,但其易用性和快速開發能力使其成為許多數據科學項目的理想選擇。

所有詳細資訊,請以官方網站公布為準 (https://github.com/streamlit/streamlit)