引言
在数据驱动的时代,数据科学家和机器学习工程师常面临一个挑战:如何将复杂的分析成果直观展示给受众。传统 Web 开发需要掌握 HTML、CSS、JavaScript,这对专注算法的专业人员来说负担过重。Streamlit 的出现解决了这一痛点,它是一个开源 Python 框架,让你只需使用熟悉的 Python 语言,就能将数据分析脚本转化为功能齐全、美观大方的 Web 应用,实现数据可视化、用户交互以及模型部署等多种功能。
基础入门
安装与环境
如果你已安装 Python 和 pip,命令行执行以下命令即可完成安装:
pip install streamlit
安装完成后,运行 streamlit hello 会启动示例应用,验证安装是否成功。
第一个应用
新建 hello_streamlit.py,写入以下代码:
import streamlit as st
st.title('Hello, Streamlit!')
st.write('This is my first Streamlit app.')
保存后,在终端运行 streamlit run hello_streamlit.py。Streamlit 会自动启动本地服务器并在浏览器打开页面。修改代码保存后,页面会自动实时更新,无需手动重启,这极大提升了开发效率。
核心功能详解
文本与标题
除了 st.title() 和 st.write(),还有 st.header() 和 st.subheader() 用于划分层级。st.markdown() 支持 Markdown 语法,可轻松实现加粗、斜体、链接和图片嵌入。
数据可视化
Streamlit 无缝集成 Matplotlib、Seaborn、Plotly 等库。以 Matplotlib 为例,创建图表对象后用 st.pyplot() 显示:
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot(x, y)
st.pyplot(fig)
Plotly 生成的图表更具交互性,支持缩放和平移,使用 st.plotly_chart() 展示。Altair 则适合声明式绘图,通过 st.altair_chart() 呈现。
交互组件
丰富的组件让应用更动态。st.button() 触发事件,st.text_input() 获取文本,st.slider() 调整参数。例如用滑块控制正弦波频率,实时重绘图表,这种即时反馈机制让调试变得像操作 Python Shell 一样流畅。
文件上传与布局
st.file_uploader() 允许用户上传 CSV 或 Excel 文件,结合 Pandas 读取展示。布局方面,st.columns() 分列,st.container() 分组,st.sidebar 放置侧边栏配置项,这些都能让界面整洁有序。
高级特性
状态管理
复杂应用需管理状态,st.session_state 类似字典存储中间结果。例如计数器功能,即使页面刷新,点击次数也能保留。
主题定制
默认主题简洁,但可通过 .streamlit/config.toml 修改颜色、字体。也可在代码中动态设置,满足个性化需求。


