Streamlit 是一个非常简单而强大的 Python 库,它可以让你用几行代码就快速创建交互式网页应用。你可以将机器学习模型、数据可视化、数据分析等功能与用户交互无缝结合,从而迅速开发出实用的应用。
Streamlit 的主要优点是它的易用性与快速性,完全不需要前端开发技能,你可以专注于 Python 编程,而不需要去学 JavaScript、HTML 或 CSS。
1. 为什么选择 Streamlit?
- 快速开发:只需要少量的代码,几分钟内就可以创建一个功能强大的 Web 应用。
- 高度集成:支持很多 Python 库,如
matplotlib
、plotly
、pandas
、scikit-learn
等,能够与数据分析、机器学习和数据可视化结合。 - 交互性:内建丰富的 UI 控件(如按钮、滑块、输入框等),让用户能够与应用互动。
- 自动更新:每当你的代码发生更改时,Streamlit 会自动重新加载界面,不需要手动刷新。
- 轻松分享:可以通过简单的命令将应用分享给他人,甚至部署到云端平台如 Streamlit Cloud。
2. 安装 Streamlit
你可以通过以下命令安装 Streamlit:
pip install streamlit
安装完成后,你可以用以下命令来检查是否安装成功:
streamlit --version
3. 创建第一个 Streamlit 应用
3.1 简单示例:创建一个互动式应用
创建一个新的 Python 文件,比如 app.py
,并输入以下代码:
import streamlit as st
# 设置应用标题
st.title("Hello, Streamlit!")
# 显示文本
st.write("这是我的第一个 Streamlit 应用!")
# 用户输入
user_input = st.text_input("请输入您的名字:")
st.write(f"Hello, {user_input}!")
然后,通过以下命令启动你的应用:
streamlit run app.py
打开浏览器后,你会看到一个简单的网页应用,用户可以在输入框中输入名字并点击提交,应用会实时展示问候语。
3.2 添加交互控件
Streamlit 提供了很多内建的交互控件,下面是一些常用的控件:
- 滑块控件(Slider):允许用户选择数值范围
- 按钮控件(Button):用于触发某些操作
- 复选框控件(Checkbox):用于二选一的选项
- 选择框控件(SelectBox):用于从多个选项中选择一个
import streamlit as st
# 添加滑块控件
age = st.slider("选择您的年龄", 0, 100, 25)
st.write(f"您的年龄是:{age}")
# 添加复选框控件
agree = st.checkbox("我同意条款和条件")
if agree:
st.write("谢谢您同意条款!")
# 添加按钮控件
if st.button("点击我"):
st.write("按钮被点击了!")
3.3 数据可视化
Streamlit 与多种数据可视化库兼容,例如 matplotlib
、plotly
、altair
等。以下是一个简单的 matplotlib
结合 Streamlit 使用的例子:
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
# 生成数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
# 绘制图表
fig, ax = plt.subplots()
ax.plot(x, y)
# 在 Streamlit 中显示图表
st.pyplot(fig)
3.4 与机器学习模型结合
Streamlit 的强大之处在于你可以轻松将机器学习模型与用户交互结合。以下是一个简单的例子,假设你已经有一个训练好的模型(比如 sklearn
的分类模型)。
import streamlit as st
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
# 加载数据集
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
# 训练模型
model = SVC()
model.fit(X_train, y_train)
# 在 Streamlit 中添加输入框,允许用户输入新的样本特征
sepal_length = st.slider("Sepal Length", min_value=4.0, max_value=8.0, value=5.0)
sepal_width = st.slider("Sepal Width", min_value=2.0, max_value=5.0, value=3.0)
petal_length = st.slider("Petal Length", min_value=1.0, max_value=7.0, value=4.0)
petal_width = st.slider("Petal Width", min_value=0.1, max_value=2.5, value=1.0)
# 用户输入的特征
input_data = [[sepal_length, sepal_width, petal_length, petal_width]]
# 做出预测
prediction = model.predict(input_data)
# 显示预测结果
st.write(f"预测的花种类别:{iris.target_names[prediction][0]}")
4. 部署 Streamlit 应用
Streamlit 提供了非常方便的部署方法。你可以通过 Streamlit Cloud 将你的应用托管在云端。
- 在 GitHub 上创建一个新仓库,并上传你的代码。
- 登录 Streamlit Cloud,选择“New App”,然后将 GitHub 仓库链接到 Streamlit Cloud。
- 配置应用,点击“Deploy”即可。
Streamlit 会自动生成一个 URL,其他人可以通过这个 URL 访问你部署的应用。
5. Streamlit 的高级功能
- 主题与样式:你可以自定义 Streamlit 应用的主题(例如,改变颜色、字体等),或者使用 Streamlit 提供的预定义主题。
- 文件上传:Streamlit 允许用户上传文件,并在应用中进行处理(例如,上传 CSV 文件进行数据分析)。
- 缓存功能:Streamlit 提供了缓存机制,可以避免重复计算,提高应用的性能。使用
@st.cache
装饰器来缓存函数的输出。
6. 总结
Streamlit 是一个非常易于使用的 Python 库,它让开发 Web 应用变得简单和高效,尤其适用于数据科学和机器学习项目。通过几行代码,你就可以创建具有交互性的应用,进行数据展示、模型预测和数据可视化,甚至可以将应用轻松地部署到云端。
它适用于快速原型开发和数据展示,是数据分析师、研究人员和开发者必备的工具之一。如果你想快速开发并分享你的 Python 应用,Streamlit 是一个非常不错的选择!
发表回复