使用Streamlit快速搭建和共享交互式应用

news/2025/1/12 20:54:52/

大家好,在数据科学和机器学习领域,向他人展示见解和分享结果与分析本身同样重要,然而创建交互式和用户友好型的应用程序通常需要复杂的框架和耗时的开发过程。Streamlit是一个Python库,它简化了以数据为重点的网络应用程序的创建过程,使开发人员和数据科学家能够快速将他们的想法转化为交互式仪表盘和原型。

在本文中,我们将探讨Streamlit库及其主要功能,重点介绍它成为在Python中搭建交互式应用程序热门选择的原因。

Streamlit

Streamlit是一个开源的Python库,旨在为数据科学和机器学习轻松搭建精美的交互式应用程序。有了Streamlit可以创建和部署网络应用程序,而无需处理复杂的网络开发问题。它提供了一个简单直观的API,可以专注于编写代码和可视化数据,而不必担心HTML、CSS或JavaScript。

Streamlit的主要特点:

  1. 易于使用的API:Streamlit的API设计简单明了,开发人员只需几行代码就能创建功能强大的应用程序。可以轻松添加滑块、复选框和下拉菜单等交互式小工具,以控制应用程序的行为并实时更新可视化效果。

  2. 快速迭代:Streamlit 的开发工作流程鼓励快速迭代。当你编写代码时,Streamlit的自动重新运行功能会即时反映应用程序中的变化,无需手动重新加载。这一功能可让你获得流畅的开发体验,使你能够快速进行实验和迭代。

  3. 广泛的可视化选项:Streamlit提供多种内置可视化元素,包括图表、地图、表格和自定义组件。你可以使用Matplotlib、Plotly或Altair等流行库创建交互式图表,并轻松显示它们。Streamlit还支持渲染图片、视频和交互式 HTML组件等丰富的媒体。

  4. 共享和部署:使用Streamlit,可以轻松地与他人共享应用程序。无论是想将应用程序部署到云服务器上,还是将其作为独立的可执行文件进行共享,Streamlit都能提供无缝的选择。可以在Heroku、AWS等平台上部署 Streamlit应用程序,甚至可以将其作为Docker容器部署。

Streamlit示例

本文将通过探索如下示例来展示Streamlit的功能:

a. 数据探索仪表板:

#pip install streamlit
import streamlit as st
import pandas as pd
# 加载数据集
data = pd.read_csv("data.csv")
# 添加用于筛选的部件
selected_columns = st.multiselect("Select columns", data.columns)
# 过滤并显示数据
filtered_data = data[selected_columns]
st.dataframe(filtered_data)

b. 机器学习原型:

import streamlit as st
import pandas as pd
from sklearn.ensemble import RandomForestClassifier
# 加载数据集
data = pd.read_csv("data.csv")
# 创建输入部件
feature1 = st.slider("Feature 1", 0, 100)
feature2 = st.slider("Feature 2", 0, 100)
# 训练模型
model = RandomForestClassifier()
model.fit(data[["Feature1", "Feature2"]], data["Label"])
# 进行预测
prediction = model.predict([[feature1, feature2]])
st.write("Prediction:", prediction)

c. 图像和视频处理:

import streamlit as st
from PIL import Image
import cv2
# 上传图像
uploaded_file = st.file_uploader("Choose an image", type=["jpg", "png"])
if uploaded_file is not None:# 读取并显示图像image = Image.open(uploaded_file)st.image(image, caption="Uploaded Image", use_column_width=True)
# 执行图像处理grayscale_image = image.convert("L")st.image(grayscale_image, caption="Grayscale Image", use_column_width=True)
# 处理视频video_file = st.file_uploader("Choose a video", type=["mp4"])if video_file is not None:# 读取视频video = cv2.VideoCapture(video_file.name)
# 逐帧显示视频while video.isOpened():ret, frame = video.read()if not ret:breakst.image(frame, channels="BGR", caption="Video Frame")video.release()

可扩展性和社区支持

Streamlit的设计具有高度可扩展性,可以创建自定义组件或无缝集成现有的JavaScript库。此外,Streamlit还拥有一个不断发展壮大、充满活力的社区,该社区积极提供插件、扩展和示例应用程序。该社区维护着一个Streamlit 组件存储库,并分享最佳实践,使新手更容易入门。

综上,Streamlit是Python开发人员和数据科学家快速搭建和共享交互式应用程序的革命性工具,其简单性、易用性和快速开发能力使其成为原型设计、展示结果和创建引人入胜的数据体验的理想选择。

使用Streamlit,你可以专注于数据和想法,让库来处理Web应用程序开发的复杂性。随着Streamlit的不断演进和日益普及,它仍然是Python生态系统的令人兴奋的工具,能让用户释放数据驱动项目的全部潜力。


http://www.ppmy.cn/news/990194.html

相关文章

【雕爷学编程】MicroPython动手做(14)——掌控板之OLED屏幕2

知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…

《向量数据库指南》:向量数据库Pinecone如何集成Elasticsearch

目录 上传嵌入模型 上传数据集 创建嵌入 将Elasticsearch索引移动到Pinecone 概要 是一个强大的开源搜索引擎和分析平台,广泛用作基于关键字的文本搜索的文档存储。 Pinecone是一个广泛用于生产应用程序的向量数据库,例如语义搜索、推荐系统和威胁检测,需要在数亿甚…

【COlor传感器】通过扰动调制光传感实现智能光传输的占用分布估计研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

libuv库学习笔记-filesystem

Filesystem 简单的文件读写是通过uv_fs_*函数族和与之相关的uv_fs_t结构体完成的。 note libuv 提供的文件操作和 socket operations 并不相同。套接字操作使用了操作系统本身提供了非阻塞操作,而文件操作内部使用了阻塞函数,但是 libuv 是在线程池中调…

使用kafka-clients操作数据(java)

一、添加依赖 <!-- kafka-clients--><dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.5.1</version></dependency> 二、生产者 自定义分区&#xff0c;可忽略 …

绕过TLS/akamai指纹护盾

文章目录 前言TLS指纹什么是TLS指纹测试TLS指纹绕过TLS指纹使用原生urllib使用其他成熟库&#xff01;&#xff01;修改requests底层代码 Akamai指纹相关&#xff08;HTTP/2指纹&#xff09;什么是Akamai指纹测试Akamai指纹绕过Akamai指纹使用其他成熟库 实操参考 前言 有道是…

Linux中的进程和线程的概念、区别和实现的细节

在Linux中&#xff0c;进程和线程是操作系统中两个重要的执行单位。它们是对程序运行时的抽象概念&#xff0c;用于管理和调度计算机资源。 文章目录 进程&#xff1a;线程&#xff1a;进程和线程的区别&#xff1a;实现的细节进程的实现细节&#xff1a;线程的实现细节&#x…

行为型:发布订阅模式

定义   发布订阅模式是基于一个事件&#xff08;主题&#xff09;通道&#xff0c;希望接收通知的对象Subscriber&#xff08;订阅者&#xff09;通过自定义事件订阅主题&#xff0c;被激活事件的对象 Publisher &#xff08;发布者&#xff09;通过发布主题事件的方式通知订…