Streamlit 笔记

Streamlit 是一个开源的 Python 库,用于快速构建和共享数据应用程序。它可以让开发者用简洁的代码将机器学习模型、数据可视化、分析工具等快速构建为交互式的 Web 应用。

Streamlit 的特点

  1. 简单易用:使用 Python 编写即可构建功能强大的 Web 应用。
  2. 实时更新:Streamlit 应用会随着代码的修改自动更新,无需手动刷新浏览器。
  3. 支持丰富的组件:包括表单、按钮、文本框、图表、图片等多种交互组件。
  4. 集成机器学习模型:支持直接加载和展示机器学习模型的输出,用户可以通过交互操作改变输入,并实时看到模型预测结果。

主要功能

  • 可视化数据:支持通过 Matplotlib、Plotly、Altair 等库展示交互式图表。
  • 文件上传:支持用户上传文件进行处理。
  • 组件支持:如按钮、滑动条、文本框、选择框等。
  • 实时交互:通过简单的操作,可以实现用户输入与模型预测的互动。

Streamlit 安装

可以使用 pip 直接安装:

pip install streamlit

注意如果你安装的时候出现下面的错误
error: command ‘cmake’ failed: No such file or directory
[end of output]

note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for pyarrow
Failed to build pyarrow

ERROR: Failed to build installable wheels for some pyproject.toml based projects (pyarrow)

解决方法

  • 首先安装cmake
conda install cmake
  • 然后安装pyarrow
conda install pyarrow

注意我这里是使用conda进行安装的,如果你在mac上使用brew安装可以试一下是否可以成功,但是下面的pyarrow如果使用pip安装失败,请使用conda进行安装

安装这些之后再执行pip install streamlit就可以成功了

基本用法

  1. 创建一个简单的 Streamlit 应用
import streamlit as st

# 设置网页标题
st.title("Streamlit 示例应用")

# 在网页中添加一个文本框让用户输入数据
user_input = st.text_input("请输入一些文本:")

# 添加一个按钮,用户点击时执行某个动作
if st.button("显示输入的文本"):
    # 显示用户输入的文本
    st.write("您输入的文本是:", user_input)

# 添加一个简单的数字输入框,用户可以选择数字
number_input = st.number_input("请选择一个数字", min_value=0, max_value=100)

# 显示数字输入框的结果
st.write(f"你选择的数字是:{number_input}")

  1. 运行应用

将上面的代码保存为 app.py,然后在命令行运行:

streamlit run app.py

#  You can now view your Streamlit app in your browser.

#  Local URL: http://localhost:8501
#  Network URL: http://10.4.101.18:8501

#  For better performance, install the Watchdog module:

#  $ xcode-select --install
#  $ pip install watchdog

运行上面会会弹出下面的页面
Streamlit 笔记_第1张图片

此时,浏览器会自动打开显示你的应用。每次修改代码并保存后,页面会自动更新,显示最新的变化。

常用组件

  1. 按钮(Button)

    if st.button('点击我'):
        st.write('按钮被点击了!')
    
  2. 滑动条(Slider)

    number = st.slider('选择一个数字', 0, 100, 25)
    st.write(f'你选择的数字是: {number}')
    
  3. 选择框(Selectbox)

    option = st.selectbox('选择一个选项', ['苹果', '香蕉', '橙子'])
    st.write(f'你选择的选项是: {option}')
    
  4. 文件上传(File uploader)

    uploaded_file = st.file_uploader("上传一个文件")
    if uploaded_file is not None:
        st.write("文件已上传")
    
  5. 文本输入(Text Input)

    user_input = st.text_input("请输入文本")
    st.write(f"你输入的文本是: {user_input}")
    

使用 Streamlit 构建一个交互式数据可视化应用

假设你有一个简单的数据集并想用 Streamlit 来展示它。以下是一个展示 Pandas 数据框的例子:

import streamlit as st
import pandas as pd

# 创建一个简单的 DataFrame
data = {
    '名称': ['苹果', '香蕉', '橙子'],
    '数量': [10, 20, 30],
    '价格': [1.2, 0.5, 0.8]
}
df = pd.DataFrame(data)

# 显示 DataFrame
st.write("水果信息", df)

# 使用图表展示数据
st.bar_chart(df.set_index('名称')['数量'])

Streamlit 笔记_第2张图片

Streamlit 的高级功能

  1. 缓存
    使用 st.cache 可以缓存函数的结果,避免重复计算,提高性能:

    @st.cache
    def load_data():
        return pd.read_csv('large_dataset.csv')
    
  2. 多页应用
    Streamlit 支持在应用中创建多个页面,通过 st.selectboxst.radio 来选择不同的页面内容。

  3. 自定义组件
    如果需要更复杂的组件,可以使用 streamlit.components 来创建自定义的 HTML、JavaScript 和 CSS 组件。

你可能感兴趣的:(python,笔记,python)