Streamlit:用 Python 快速构建数据应用
文章目录
- Streamlit:用 Python 快速构建数据应用
Streamlit:用 Python 快速构建数据应用
Streamlit 是一款开源的 Python 工具,已经斩获了 44,806 个 Star:
Streamlit 的定位是"用最快速度构建和分享数据应用"。它的核心思路很直接:数据科学家和工程师用 Python 写好分析脚本后,不需要再学习前端技术栈,就能把它变成可交互的 Web 应用。
全部用 Python 编写,开源且免费。应用写好后,可以通过 Community Cloud 平台直接部署、管理和分享。
安装
Streamlit 的安装过程很简单,一条 pip 命令即可:
pipinstallstreamlit streamlit hello也支持在 Windows、Mac 和 Linux 的虚拟环境中安装。
一个简单的例子
Streamlit 的 API 设计得很精简,下面这几行代码就能跑出一个带滑块的交互页面:
importstreamlitasst x=st.slider('Select a value')st.write(x,'squared is',x*x)滑动滑块,页面会实时更新计算结果。不需要写 HTML、CSS 或 JavaScript,所有交互逻辑都在 Python 里完成。
更复杂的场景
Streamlit 的 API 虽然简单,但能支撑相当丰富的应用形态。官方提供了一个自动驾驶数据集浏览的演示项目,可以查看 Udacity 自动驾驶数据集,并用 YOLO 模型实时运行目标检测推理。
整个演示项目的 Python 代码不到 300 行,其中只有 23 个 Streamlit 调用,就覆盖了图表展示、图像渲染、侧边栏控件等所有主要功能模块。
核心组件
Streamlit 提供了丰富的内置组件,覆盖数据应用的常见需求:
- 数据展示:支持 DataFrame、表格、JSON、图表等多种格式的直接渲染。调用方式很直接,比如
st.dataframe()可以直接把 pandas DataFrame 渲染成带排序和搜索功能的交互表格 - 交互控件:滑块、按钮、单选框、多选框、文本输入、文件上传等。这些控件会自动处理前端状态同步,开发者只需要关注业务逻辑
- 媒体支持:图片、音频、视频的直接嵌入和显示,支持从本地路径或网络 URL 加载
- 布局控制:侧边栏、列布局、展开折叠区域等页面结构组织方式,可以用几行代码实现多栏并排或复杂页面结构
- 状态管理:缓存机制、会话状态、回调函数等交互逻辑支持。
@st.cache_data装饰器可以自动缓存计算结果,避免重复执行耗时操作
GitHub Badge
Streamlit 提供了官方的 GitHub Badge,可以嵌入到项目的 README 中,方便其他人直接访问和体验你的应用。
部署
写好的 Streamlit 应用可以通过 Community Cloud 免费部署。流程很直接:关联代码仓库,选择主文件,平台会自动构建和托管。部署完成后会生成一个公开链接,可以直接分享给其他人使用。也可以选择私有部署,仅限团队成员访问。
社区与文档
Streamlit 有活跃的社区讨论区,用户在上面分享应用、提问和互相解答。官方文档覆盖了完整的 API 参考和入门教程,博客会定期发布新功能介绍和使用案例。
开源协议采用 Apache 2.0,完全免费可商用。对于需要快速把 Python 数据分析脚本变成可分享应用的场景,Streamlit 是一个值得考虑的选择。
2.0,完全免费可商用。对于需要快速把 Python 数据分析脚本变成可分享应用的场景,Streamlit 是一个值得考虑的选择。
