Streamlit 常用使用案例整理

一、数据可视化类

1. 交互式折线图展示

核心功能:使用 st.line_chart 创建交互式折线图,通过滑块动态调整数据范围

代码片段

1
2
3
4
5
6
7
8
import streamlit as st
import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randn(50, 3), columns=["A", "B", "C"])
start = st.slider("Start index", 0, 40, 0)
end = st.slider("End index", 10, 50, 50)
st.line_chart(df[start:end])

应用价值:适用于金融数据分析、销售趋势展示等场景,帮助用户直观观察数据变化趋势。

2. 地理数据可视化

核心功能:使用 st.map 快速展示地理空间数据

代码片段

1
2
3
4
5
6
7
8
9
import streamlit as st
import pandas as pd

df = pd.DataFrame({
"lat": [39.9042, 31.2304, 23.1291],
"lon": [116.4074, 121.4737, 113.2644],
"name": ["北京", "上海", "广州"]
})
st.map(df)

应用价值:用于物流路径规划、门店选址分析等场景,直观展示地理位置分布。

二、机器学习部署类

3. 图像分类模型演示

核心功能:使用 st.file_uploader 上传图片,结合预训练模型进行图像分类

代码片段

1
2
3
4
5
6
7
8
9
10
import streamlit as st
from PIL import Image
import tensorflow as tf

model = tf.keras.applications.MobileNetV2(weights="imagenet")
uploaded_file = st.file_uploader("选择一张图片", type=["jpg", "png"])
if uploaded_file is not None:
img = Image.open(uploaded_file)
st.image(img, caption="上传的图片", use_column_width=True)
# 模型推理代码...

应用价值:快速部署和演示机器学习模型,用于产品展示、教学演示等场景。

4. 实时数据预测

核心功能:使用 st.number_input 获取用户输入,实时展示模型预测结果

代码片段

1
2
3
4
5
6
7
8
9
import streamlit as st
import numpy as np

def predict(x):
return np.sin(x) + np.random.normal(0, 0.1)

x = st.number_input("输入一个数值", value=0.0)
y = predict(x)
st.write(f"预测结果: {y:.2f}")

应用价值:用于实时风险评估、销售预测等场景,帮助用户快速获取预测结果。

三、表单应用类

5. 用户信息收集表单

核心功能:使用 st.form 创建交互式表单,收集用户信息

代码片段

1
2
3
4
5
6
7
8
9
import streamlit as st

with st.form("user_form"):
name = st.text_input("姓名")
email = st.text_input("邮箱")
age = st.slider("年龄", 18, 100, 25)
submitted = st.form_submit_button("提交")
if submitted:
st.success(f"感谢 {name} 的提交!")

应用价值:用于问卷调查、用户注册等场景,简化数据收集流程。

四、仪表盘类

6. 实时数据监控仪表盘

核心功能:使用 st.metric 展示关键指标,结合 st.balloons 实现交互效果

代码片段

1
2
3
4
5
6
7
8
9
10
11
import streamlit as st
import time

st.title("实时数据监控")
metric1 = st.metric("销售额", "¥123,456", "+12%")
metric2 = st.metric("访问量", "10,000", "-5%")

if st.button("刷新数据"):
with st.spinner("正在刷新..."):
time.sleep(2)
st.balloons()

应用价值:用于业务监控、运营数据分析等场景,帮助用户实时掌握关键指标变化。

五、文档生成类

7. 动态报告生成

核心功能:使用 st.markdown 动态生成报告内容,结合 st.download_button 实现报告下载

代码片段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import streamlit as st
import pandas as pd

df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
st.markdown("# 数据分析报告")
st.dataframe(df)

@st.cache_data
def convert_df(df):
return df.to_csv(index=False).encode("utf-8")

csv = convert_df(df)
st.download_button(
label="下载报告",
data=csv,
file_name="report.csv",
mime="text/csv"
)

应用价值:用于自动生成数据分析报告、财务报表等场景,提高文档生成效率。