0
点赞
收藏
分享

微信扫一扫

Streamlit 的常用方法及示例

西曲风 08-17 15:00 阅读 26

Streamlit 是一个基于 Python 的快速 Web 应用开发框架,尤其适合数据科学家、分析师和机器学习工程师。它的特点是轻量、上手快、无需前端知识,只需要用 Python 编写逻辑,即可将数据处理、可视化和交互功能打包成一个 Web 应用。

本文将系统介绍 Streamlit 的常用方法,并给出详细示例,帮助你快速掌握其核心用法。

一、安装与运行

安装 Streamlit:

pip install streamlit

运行一个 Streamlit 应用(例如 app.py):

streamlit run app.py

默认会启动一个本地服务,打开浏览器即可访问。

二、基本输出方法

1. 文本输出

import streamlit as st

st.title("Streamlit 示例应用")
st.header("这是一个标题")
st.subheader("这是一个副标题")
st.text("普通文本内容")
st.markdown("**支持 Markdown 格式**,如粗体、*斜体*、[超链接](https://streamlit.io)")

2. 代码与高亮

code = '''
def hello():
    print("Hello, Streamlit!")
'''
st.code(code, language="python")

3. 数据展示

import pandas as pd

df = pd.DataFrame({
    "姓名": ["张三", "李四", "王五"],
    "成绩": [85, 90, 78]
})

st.dataframe(df)   # 可交互表格
st.table(df)       # 静态表格

三、输入组件

1. 文本输入与数字输入

name = st.text_input("请输入姓名:")
age = st.number_input("请输入年龄:", min_value=0, max_value=120, value=18)

if name:
    st.write(f"欢迎 {name}, 年龄 {age}")

2. 选择器

option = st.selectbox("选择一个选项", ["Python", "Java", "C++"])
st.write("你选择的是:", option)

options = st.multiselect("选择多个选项", ["苹果", "香蕉", "橘子"])
st.write("你选择了:", options)

3. 文件上传

uploaded_file = st.file_uploader("上传文件", type=["csv", "txt", "pdf", "png", "jpg"])
if uploaded_file is not None:
    st.write("文件名:", uploaded_file.name)

4. 滑块与按钮

level = st.slider("选择数值", 0, 100, 50)
st.write("当前值为:", level)

if st.button("点击我"):
    st.success("按钮已点击!")

四、可视化支持

Streamlit 内置了多种图表支持,并且与 Matplotlib、Plotly、Altair 等兼容。

1. 内置图表

import numpy as np
import pandas as pd

chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=["a", "b", "c"]
)

st.line_chart(chart_data)   # 折线图
st.area_chart(chart_data)   # 面积图
st.bar_chart(chart_data)    # 柱状图

2. Matplotlib 图表

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([1, 2, 3, 4], [10, 20, 25, 30])
st.pyplot(fig)

3. Plotly 图表

import plotly.express as px

df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length", color="species")
st.plotly_chart(fig)

五、状态管理与缓存

1. 缓存函数结果

@st.cache_data
def load_data():
    import time
    time.sleep(2)  # 模拟耗时操作
    return pd.DataFrame(np.random.randn(100, 2), columns=["x", "y"])

data = load_data()
st.write("数据加载完成:", data.head())

2. 会话状态

if "count" not in st.session_state:
    st.session_state.count = 0

if st.button("增加计数"):
    st.session_state.count += 1

st.write("当前计数:", st.session_state.count)

六、布局与界面优化

1. 分栏布局

col1, col2 = st.columns(2)

with col1:
    st.write("这是第一列")

with col2:
    st.write("这是第二列")

2. 侧边栏

option = st.sidebar.selectbox("选择一个选项", ["首页", "数据分析", "模型预测"])
st.sidebar.write("当前选择:", option)

七、综合示例

下面是一个综合性的小应用:

import streamlit as st
import pandas as pd
import numpy as np

st.title("学生成绩分析系统")

# 上传数据
uploaded_file = st.file_uploader("上传成绩 CSV 文件", type=["csv"])
if uploaded_file:
    df = pd.read_csv(uploaded_file)
    st.dataframe(df)

    # 数据描述
    st.subheader("数据统计")
    st.write(df.describe())

    # 绘制图表
    st.subheader("成绩分布")
    st.bar_chart(df["成绩"])

    # 筛选
    min_score = st.slider("选择最低成绩", 0, 100, 60)
    filtered = df[df["成绩"] >= min_score]
    st.write(f"成绩大于等于 {min_score} 的学生:", filtered)

八、总结

通过本文,我们系统介绍了 Streamlit 的常用方法,包括基本输出、输入组件、数据可视化、状态管理、布局等。可以看到,Streamlit 的设计理念就是简洁高效,让开发者专注于逻辑本身,而无需关心前端的复杂性。

如果你正在做数据分析或机器学习的原型开发,Streamlit 是一个极具效率的工具,可以快速搭建出交互式 Web 应用。

举报

相关推荐

0 条评论