Home
Login

Streamlit 是一个 Python 库,让你可以用纯 Python 代码创建美观的自定义 Web 应用,用于机器学习、数据科学等领域。

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

Streamlit: The fastest way to build data apps in 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)