Streamlit入门指南

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Streamlit是Python库,用于创建交互式数据科学和机器学习Web应用。它简化了定制Web应用的创建,提供内置小部件和工具进行数据展示、用户输入处理和自定义可视化。快速入门涉及安装Streamlit、导入库、定义应用并使用`streamlit run`命令运行。示例代码展示了如何创建一个显示滑块和正弦图的应用。最佳实践包括组织代码、利用缓存、优化布局以及使用内置功能。Streamlit Gallery提供了更多应用示例,如文本生成器和图像分类器。

Streamlit介绍

Streamlit是一个Python库,允许您创建交互式的数据科学和机器学习Web应用程序。使用Streamlit,您可以快速轻松地创建自定义Web应用程序,让用户与您的数据和模型进行交互。

Streamlit旨在简单直观,专注于通过几行代码轻松创建美观和功能强大的应用程序。它包括广泛的内置小部件和工具,用于显示数据,处理用户输入和创建自定义可视化。

快速入门指南

要开始使用Streamlit,请按照以下步骤操作:

使用pip安装Streamlit:pip install streamlit 创建一个新的Python文件并导入Streamlit:import streamlit as st 使用Streamlit的API定义您的应用程序,其中包括用于创建小部件,显示数据和处理用户输入的函数。 使用命令streamlit run <filename.py>运行您的应用程序。 以下是一个简单的Streamlit应用程序示例,显示滑块小部件和绘图:

python

复制代码

import streamlit as st
import numpy as np
import matplotlib.pyplot as plt

# 定义滑块小部件
x = st.slider('选择x的值', 0.0, 10.0, 5.0)

# 根据滑块值创建绘图
y = np.sin(x)
plt.plot(x, y)
st.pyplot()

该应用程序显示一个滑块小部件,允许用户选择x的值,然后根据该值显示正弦函数的绘图。您可以将此应用程序保存为Python文件(例如myapp.py),然后在终端中运行命令streamlit run myapp.py来运行该应用程序。

最佳实践

以下是使用Streamlit时应记住的最佳实践:

保持代码组织和模块化,清晰分离应用程序的不同组件。 使用Streamlit的缓存功能来提高性能并避免不必要的计算。 使用Streamlit的布局选项创建干净直观的用户界面。 尽可能使用Streamlit的内置小部件和工具,而不是重新发明轮子。 充分测试您的应用程序,包括边缘情况和错误处理。 考虑使用像Git这样的版本控制系统来管理您的代码并与他人合作。 通过遵循这些最佳实践,您可以创建高质量的Streamlit应用程序,易于使用,维护和扩展。

其它一些有趣的例子

Streamlit官方有一个应用程序和图表库 Streamlit Gallery,其中包括各种各样的示例,从简单的小部件到复杂的机器学习模型。

下面基于我最近的学习,提供两个有趣的实例。

文本生成器

python

复制代码

import streamlit as st
import markovify

# 读取文本文件
with open("text.txt") as f:
    text = f.read()

# 使用Markov模型生成文本
text_model = markovify.Text(text)

# 创建Streamlit应用程序
st.title("文本生成器")
with st.form(key='my_form'):
    submit_button = st.form_submit_button(label='生成文本')
    if submit_button:
        # 生成文本
        generated_text = text_model.make_sentence()
        # 显示生成的文本
        st.write(generated_text)

这个应用程序使用Markov模型生成文本。用户可以上传自己的文本文件,然后使用应用程序生成新的文本。应用程序使用Streamlit的表单小部件来处理用户输入和提交。

图像分类器

python

复制代码

import streamlit as st
import tensorflow as tf
from PIL import Image
import numpy as np

# 加载模型
model = tf.keras.models.load_model('model.h5')

# 创建Streamlit应用程序
st.title("图像分类器")
uploaded_file = st.file_uploader("上传一张图片", type=["jpg", "jpeg", "png"])
if uploaded_file is not None:
    # 加载图像
    image = Image.open(uploaded_file)
    # 调整图像大小
    image = image.resize((224, 224))
    # 转换为NumPy数组
    image_array = np.array(image)
    # 扩展维度
    image_array = np.expand_dims(image_array, axis=0)
    # 预测图像类别
    predictions = model.predict(image_array)
    # 获取最高概率的类别
    predicted_class = np.argmax(predictions[0])
    # 显示预测结果
    st.write("预测结果:", predicted_class)

这个应用程序使用TensorFlow模型来对上传的图像进行分类。用户可以上传一张图像,然后应用程序将使用模型对图像进行分类,并显示预测结果。应用程序使用Streamlit的文件上传小部件来处理用户输入。

转载来源:https://juejin.cn/post/7275595720488009740

相关文章
|
XML JSON JavaScript
Py之demjson:Python库之demjson的简介、安装、使用方法详细攻略
Py之demjson:Python库之demjson的简介、安装、使用方法详细攻略
Py之demjson:Python库之demjson的简介、安装、使用方法详细攻略
|
2月前
|
机器学习/深度学习 开发者 数据格式
Gradio如何使用
**Gradio** 是一个开源 Python 库,用于快速创建和部署机器学习模型的用户界面。它支持多种输入输出形式,如文本、图像、音频等,无需复杂 Web 开发知识即可实现模型的直观展示和交互。Gradio 特点包括简单易用、实时更新、多样的输入输出形式以及轻松部署。通过几个简单的步骤,即可创建和分享功能强大的机器学习应用。
80 0
|
5月前
|
Java 数据处理 调度
Java多线程编程入门指南
Java多线程编程入门指南
|
7月前
|
人工智能 前端开发 算法
Python 潮流周刊#18:Flask、Streamlit、Polars 的学习教程
Python 潮流周刊#18:Flask、Streamlit、Polars 的学习教程
122 4
|
机器学习/深度学习 前端开发 数据可视化
Streamlit 入门教程:构建一个Dashboard
Streamlit 是一个用于创建数据科学和机器学习应用程序的开源 Python 库。它的主要目标是使开发人员能够以简单的方式快速构建交互式的数据应用,而无需过多的前端开发经验。Streamlit 提供了一种简单的方法来转换数据脚本或分析代码为具有可视化界面的应用程序,这些应用程序可以通过网络浏览器访问。
521 2
|
存储 Web App开发 移动开发
Day 19: EmberJS 入门指南
到目前为止,我们这一系列文章涉及了Bower、AngularJS、GruntJS、PhoneGap和MeteorJS 这些JavaScript技术。今天我打算学习一个名为Ember的框架。本文将介绍如何用Ember创建一个单页面的社交化书签应用。本教程将包括两篇:第1篇介绍客户端代码和用HTML 5本地存储持久保存数据,第2篇中我们将使用一个部署在OpenShift上的REST后端。过几天我会写第2篇。
349 0
Day 19: EmberJS 入门指南
|
JSON 自然语言处理 JavaScript
TypeChat 入门指南
TypeChat 是一个革命性的库,它简化了使用 TypeScript 构建自然语言模型界面的过程。 它抹平了自然语言和结构化数据之间的差距,使开发人员更容易将自然语言界面集成到他们的应用程序中。
390 0
|
Python
Python模块化简介
Python模块化简介自制脑图 介绍了模块化定义和模块化优点。 模块化: 模块化指将一个完整的程序分解为一个一个小的模块。通过将模块组合,来搭建出一个完整的程序。 简单理解: 不采用模块化就是统一将所有代码编写到一个文件里 采用模块化就是将程序分别编写到多个文件中。
93 0
Python模块化简介
|
算法 Linux 网络安全
Canokey入门指南:F2A、OpenPGP、PIV
相信大伙都知道yubikey吧,那么Canokey呢?
1840 0
|
程序员 Linux Android开发
Py之Kivy:Python库之Kivy的简介、安装、使用方法之详细攻略
Py之Kivy:Python库之Kivy的简介、安装、使用方法之详细攻略
Py之Kivy:Python库之Kivy的简介、安装、使用方法之详细攻略