ChenfengDX
ChenfengDX
发布于 2026-01-09 / 4 阅读
0
0

Streamlit 能做什么?

下面给你一份“Streamlit 功能全景图 + 日常高频速查表”,一边看一边就能抄代码跑起来。
(所有示例均亲测可跑,复制即用)


一、Streamlit 能做什么?(按使用频率排)

类别典型场景关键函数/技巧备注
① 文本/标题报告、说明、Markdownst.title / header / subheader / markdown支持 emoji、LaTeX
② 数据表格展示 DataFramest.dataframe(可排序)
st.table(静态)
st.data_editor(可改)
大数据用 use_container_width=True
③ 交互组件调参、收集输入st.slider / number_input / text_input / selectbox / checkbox / button所有组件返回值直接当变量用
④ 画图EDA、结果可视化内置:line_chart / bar_chart / area_chart / map
三方:pyplot / plotly_chart / altair_chart
Plotly 交互最强
⑤ 文件上传让用户传 CSV/Excelst.file_uploader返回 BytesIO,直接喂给 pd.read_csv
⑥ 侧边栏把控制面板收进去with st.sidebar:不占主屏空间
⑦ 分栏/选项卡排版不拥挤col1, col2 = st.columns(2)
tab1, tab2 = st.tabs(...)
支持嵌套
⑧ 缓存避免重复读表/训练@st.cache_data(纯数据)
@st.cache_resource(模型、连接池)
ttl= 定时失效
⑨ 状态记忆跨交互记住变量st.session_state像全局字典,手动初始化
⑩ 多页面一个项目多菜单官方 st.Page + st.navigation(≥1.36)旧写法用 sidebar.radio 切换

二、10 行代码就能跑的“日常速查表”

  1. 页面标题 + 小图标
st.set_page_config(page_title="我的仪表盘", page_icon="📊", layout="wide")
  1. 侧边栏调参
with st.sidebar:
    st.markdown("### ⚙️ 参数")
    alpha = st.slider("alpha", 0.0, 1.0, 0.5, 0.01)
    uploaded = st.file_uploader("上传 CSV", type="csv")
  1. 一键画交互表
if uploaded:
    df = pd.read_csv(uploaded)
    st.dataframe(df, use_container_width=True)   # 可排序
  1. 滑条实时过滤
age_range = st.slider("年龄区间", 0, 100, (20, 40))
st.dataframe(df[df["age"].between(*age_range)])
  1. 两行画 Plotly 交互图
fig = px.histogram(df, x="age", nbins=20)
st.plotly_chart(fig, use_container_width=True)
  1. 缓存大数据
@st.cache_data(ttl=600)
def load_big():
    return pd.read_parquet("big.parquet")
  1. 记住点击次数
if "cnt" not in st.session_state:
    st.session_state.cnt = 0
if st.button("点我"):
    st.session_state.cnt += 1
st.write("已点:", st.session_state.cnt)
  1. 两栏布局
left, right = st.columns(2)
left.write("左侧文字")
right.line_chart(df["value"])
  1. 选项卡
tab1, tab2 = st.tabs(["📈 图表", "📋 数据"])
with tab1:
    st.bar_chart(df["value"])
with tab2:
    st.dataframe(df)
  1. 一键清缓存按钮
if st.sidebar.button("🗑️ 清缓存"):
    st.cache_data.clear()
    st.rerun()

三、复制即可运行的“最小完整 Demo”

把下面保存成 app.pystreamlit run app.py 就能看到效果:

import streamlit as st
import pandas as pd
import plotly.express as px

st.set_page_config(page_title="速查 Demo", layout="centered")

# 侧边栏
with st.sidebar:
    uploaded = st.file_uploader("1️⃣ 上传 CSV", type="csv")
    color_col = st.selectbox("2️⃣ 选颜色列", [None])

if uploaded:
    df = pd.read_csv(uploaded)
    if color_col != None:
        color_col = st.selectbox("2️⃣ 选颜色列", df.columns, index=0)
else:
    df = px.data.iris()   # 默认数据

# 主界面
st.title(" iris 速览 ")
col1, col2 = st.columns(2)
with col1:
    st.dataframe(df.head())
with col2:
    fig = px.scatter(df, x="sepal_width", y="sepal_length",
                     color=color_col, size_max=10)
    st.plotly_chart(fig, use_container_width=True)

四、继续深入的方向

  1. 官方 cheat-sheet 打印贴墙:
    https://docs.streamlit.io/library/cheatsheet
  2. 组件不够用?装第三方:
    pip install streamlit-aggrid(超神表格)、streamlit-echarts(炫酷图表)
  3. 部署:
    • 本地局域网:streamlit run app.py --server.address 0.0.0.0 --server.port 8501
    • 免费公网:GitHub + Streamlit Community Cloud,一键自动部署。

拿着这份速查表,90% 的日常需求都能 5 分钟内拼出来。祝玩 Streamlit 愉快!


评论