【Python】Streamlit:为数据科学与机器学习打造的简易应用框架

Streamlit 是一个开源的 Python 库,专为数据科学家和机器学习开发者设计,旨在快速构建数据应用。通过简单的 Python 脚本,开发者无需掌握前端技术,即可将数据分析和模型结果转化为直观、交互式的 Web 应用。其简洁的 API 设计使得开发过程快速且高效,是展示数据分析、构建仪表盘、分享机器学习模型的理想选择。


⭕️宇宙起点
- 🔨 核心特点
- 1. **简易上手,无需前端开发经验**
- 2. **强大的数据可视化功能**
- 3. **交互式控件**
- 4. **快速部署与分享**
- 5. **组件扩展与自定义**
- ♨️ 示例:构建交互式数据仪表盘
- 🧱 适用场景
- 💢 配置和数据展示
- ⚙️ 配置选项表格
- 📥 下载地址
- 💬 结语
- 📒 参考文献
![]()
🔨 核心特点

1. 简易上手,无需前端开发经验
Streamlit 让开发者可以用最少的代码构建功能强大的数据应用。开发者只需关注 Python 代码本身,无需处理 HTML、CSS 或 JavaScript 等前端技术。Streamlit 会自动处理应用的布局、样式和交互,所有这些都基于 Python 原生的写法。例如,你可以用以下简单代码来创建一个包含输入框、按钮和文本展示的应用:
import streamlit as st# 创建应用标题
st.title("欢迎使用 Streamlit 应用")# 创建文本输入框
user_input = st.text_input("请输入您的名字:")# 创建按钮,当点击时显示用户输入内容
if st.button("提交"):st.write(f"你好,{user_input}!")
通过这个极简的代码结构,Streamlit 轻松生成了一个交互式网页,而这在传统的 Web 开发框架中可能需要大量的代码。
2. 强大的数据可视化功能
Streamlit 与常见的数据可视化库(如 Matplotlib、Plotly、Altair 等)无缝集成,支持生成各种复杂的图表。开发者只需几行代码,就可以创建直观的数据可视化并嵌入到应用中。以下代码展示了如何使用 Altair 创建一个交互式的折线图来跟踪人口变化:
import altair as alt
import pandas as pd
import streamlit as st# 载入数据
df = pd.DataFrame({'year': [2010, 2011, 2012, 2013, 2014],'population': [100, 150, 200, 250, 300]
})# 使用 Altair 创建折线图
chart = alt.Chart(df).mark_line().encode(x='year:O',y='population:Q'
)# 展示图表
st.altair_chart(chart, use_container_width=True)
这个例子展示了如何快速加载数据并生成交互式图表。通过 st.altair_chart(),Streamlit 可以将 Altair 生成的图表直接嵌入到应用中。
3. 交互式控件
Streamlit 提供了一系列内置控件,如滑块、选择框、按钮等,用户可以通过这些控件与应用交互。例如,用户可以选择不同的年份来筛选数据并动态更新图表:
# 创建一个滑块选择年份
year = st.slider("选择年份", min_value=2010, max_value=2020, step=1)# 过滤数据并生成动态图表
filtered_df = df[df['year'] == year]
st.line_chart(filtered_df['population'])
这些交互功能极大地提升了用户体验,允许用户根据需求动态探索数据。通过简洁的 API,开发者可以轻松实现与用户的交互,增强应用的实用性和灵活性。
4. 快速部署与分享
构建好 Streamlit 应用后,开发者可以通过 Streamlit Community Cloud 轻松部署,无需配置复杂的服务器。只需将代码上传至 GitHub,并通过简单的点击操作即可将应用发布到云端,生成一个可共享的链接。Streamlit 提供的托管服务让应用的分享和协作变得更加轻松。
以下步骤展示了如何在 Streamlit Cloud 上部署应用:
- 将应用代码推送到 GitHub 仓库。
- 在 Streamlit Cloud 上点击 “New app”,选择代码仓库和主分支。
- 点击发布后,应用会自动生成一个 URL,开发者可以将该链接分享给其他用户。
5. 组件扩展与自定义
Streamlit 还支持通过第三方组件扩展其功能。开发者可以使用现有的 Streamlit 组件,如 streamlit-aggrid 来展示可编辑的数据表,或自行开发新的组件来增强应用的交互性。例如,以下代码展示了如何使用 AgGrid 组件创建一个交互式数据表:
import streamlit as st
from st_aggrid import AgGrid
import pandas as pd# 创建数据框
df = pd.DataFrame({'Name': ['Alice', 'Bob', 'Charlie'],'Age': [25, 30, 35]
})# 使用 AgGrid 展示数据表
AgGrid(df)
Streamlit 的组件系统非常灵活,开发者可以根据需求创建自定义组件,扩展应用的功能。
![]()
♨️ 示例:构建交互式数据仪表盘
以下是一个利用 Streamlit 构建数据仪表盘的完整示例。该应用从 CSV 文件中加载数据,展示多个交互式图表,并允许用户选择不同的年份和维度。
import streamlit as st
import pandas as pd
import altair as alt# 加载数据
@st.cache_data
def load_data():return pd.read_csv('https://path-to-your-csv-file.csv')df = load_data()# 选择年份
year = st.slider("选择年份", min_value=2010, max_value=2020, step=1)
filtered_data = df[df['year'] == year]# 生成柱状图
st.bar_chart(filtered_data[['state', 'population']])# 使用 Altair 生成折线图
line_chart = alt.Chart(filtered_data).mark_line().encode(x='year:O',y='population:Q',color='state:N'
)
st.altair_chart(line_chart)
这个应用展示了如何动态加载数据、生成多种图表并通过滑块进行交互筛选。
![]()
🧱 适用场景
Streamlit 非常适合以下场景:
- 数据分析与可视化:快速创建交互式仪表盘,用于探索和展示数据分析结果。
- 机器学习模型展示:通过 Streamlit 轻松展示模型预测结果,让用户能够通过 Web 应用与模型进行交互。
- 快速原型开发:在项目早期阶段,通过 Streamlit 快速创建原型,帮助团队验证概念和想法。
![]()
💢 配置和数据展示
Streamlit 允许开发者通过简单的表格形式展示数据。你可以通过 st.dataframe 或 st.table 方法来显示数据框。以下是一个示例,展示如何加载并显示 CSV 文件中的数据:
import streamlit as st
import pandas as pd# 加载数据
@st.cache_data
def load_data():return pd.read_csv('https://path-to-your-csv-file.csv')df = load_data()# 展示数据表
st.dataframe(df)
你还可以使用 st.table 来展示静态表格:
st.table(df.head(10)) # 仅显示前10行
![]()
⚙️ 配置选项表格
为了更好地管理和展示 Streamlit 应用中的交互控件和数据处理方式,以下是常见的 Streamlit 控件和功能的配置选项表格:
| 配置项 | 功能说明 | 示例代码 |
|---|---|---|
st.text_input | 允许用户输入文本 | st.text_input("请输入你的名字") |
st.button | 创建一个按钮 | st.button("点击提交") |
st.slider | 创建一个滑块控件 | st.slider("选择一个值", 0, 100) |
st.selectbox | 允许用户从下拉菜单中选择 | st.selectbox("选择年份", [2010, 2020]) |
st.dataframe | 动态展示数据框 | st.dataframe(df) |
st.table | 静态展示数据表 | st.table(df.head()) |
st.bar_chart | 生成柱状图 | st.bar_chart(df[['year', 'population']]) |
st.altair_chart | 使用 Altair 创建交互式图表 | st.altair_chart(chart) |
![]()
📥 下载地址
Streamlit 最新版 下载地址
![]()
💬 结语
无论是构建简单的 Web 应用,还是复杂的交互式数据仪表盘,Streamlit 都提供了简洁高效的解决方案。通过其直观的 API 和强大的功能,开发者可以在短时间内构建出具有专业水准的应用,并与团队或客户轻松分享成果。
![]()
📒 参考文献
- Streamlit 官网
- Streamlit GitHub仓库



相关文章:
【Python】Streamlit:为数据科学与机器学习打造的简易应用框架
Streamlit 是一个开源的 Python 库,专为数据科学家和机器学习开发者设计,旨在快速构建数据应用。通过简单的 Python 脚本,开发者无需掌握前端技术,即可将数据分析和模型结果转化为直观、交互式的 Web 应用。其简洁的 API 设计使得…...
OpenJudge | 置换选择排序
总时间限制: 1000ms 内存限制: 65536kB 描述 给定初始整数顺串,以及大小固定并且初始元素已知的二叉最小堆(为完全二叉树或类似完全二叉树,且父元素键值总小于等于任何一个子结点的键值),要求利用堆实现置换选择排序&a…...
如何提取b站的视频字幕,下载视频
打开视频地址 按F12打开—开发者工具 在开发者工具打开Network 过滤器关键字: 自动生成字幕:ai_subtitle 自制:json 打开/关闭字幕 刷新页面 找到字幕 点选字幕的respond 将方框中的内容复制; 复制到:https://www.drea…...
Vue中使用ECharts实现热力图的详细教程
在数据可视化领域,热力图是一种非常直观的表现形式,它通过颜色深浅来展示数据分布情况。在Vue项目中,我们可以使用ECharts这一强大的图表库来实现热力图。下面我将详细介绍如何在Vue中使用ECharts实现热力图。效果如下图: 一、准备…...
Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?
注意:学习和写作过程中,部分资料搜集于互联网,如有侵权请联系删除。 前言:学习使用传感器测温。 1.LM35介绍 一般来讲当知道需求,就可以 通过既定要求的条件来筛选需要的器件,多方面的因素最终选定了器件…...
蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键
蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键 第一节 硬件解读第二节 CubeMX配置第三节 MDK代码 第一节 硬件解读 扩展模块和ADC模块是一摸一样的,插在主板上。 引脚对应关系: PB6-ROW1 PB7-ROW2 PB1-COLUMN1 PB0-COLUMN2 PA8-COLUMN3 …...
Apollo9.0 Planning2.0决策规划算法代码详细解析 (4): PlanningComponent::Proc()
🌟 面向自动驾驶规划算法工程师的专属指南 🌟 欢迎来到《Apollo9.0 Planning2.0决策规划算法代码详细解析》专栏!本专栏专为自动驾驶规划算法工程师量身打造,旨在通过深入剖析Apollo9.0开源自动驾驶软件栈中的Planning2.0模块&am…...
AAA Redis的过期删除策略+缓存雪崩+缓存一致性问题
目录 一、三种删除策略比较 二、缓存雪崩缓存击穿缓存穿透 三、缓存一致性 Redis学习笔记 一、三种删除策略比较 内存占用CPU占用特征定时删除节约内存,无占用不分时段占用CPU资源,频度高时间换空间惰性删除内存占用严重延时执行,CPU利用…...
成都跃享未来教育咨询有限公司抖音小店:引领教育咨询新风尚
在数字化浪潮席卷全球的今天,教育咨询行业正经历着前所未有的变革。成都跃享未来教育咨询有限公司,作为教育行业的一颗璀璨新星,凭借其前瞻性的教育理念与创新的运营模式,在抖音平台上开设了小店,不仅为广大学子及家长…...
【堆排】为何使用向下调整法建堆比向上调整法建堆更好呢?
文章目录 前言一、堆排代码一、计算使用向上调整法建堆的时间复杂度二、计算使用向下调整法插入的时间复杂度总结 前言 在博主的上一篇博客堆排(链接在这里点击即可)的总结中提出啦使用向下调整法建堆比使用向上调整法建堆更好,是因为使用向上调整法建堆的时间复杂…...
在Stable Diffusion WebUI中安装SadTalker插件时几种错误提示的处理方法
SD中的插件一般安装比较简单,但也有一些插件安装会比较难。比如我在安装SadTalker时,就遇到很多问题,一度放弃了,后来查了一些网上攻略,自己也反复查看日志,终于解决,不吐不快。 一、在Stable …...
使用ffmpeg合并视频和音频
使用ffmpeg合并视频和音频 - 哔哩哔哩 简介 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec࿰…...
周末总结(2024/10/05)
工作 人际关系核心实践: 要学会随时回应别人的善意,执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己,抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内,职场社交不要放在5min以外 职场的人际关系在面对利…...
在Ubuntu中自动挂载SMB/CIFS共享
文章目录 0. 引言1. 使用credentials文件存储认证信息2. 挂载点的准备3. 必要软件的安装4. 调整挂载参数5. 测试挂载6. 日志调试 0. 引言 本文是自己挂载共享磁盘的实践记录,将详细介绍如何在Linux系统中配置自动挂载SMB/CIFS共享,并提供一些常见问题的…...
pWnOS2.0 靶机渗透( cms 渗透,php+mysql 网站渗透,密码碰撞)
pWnOS2.0 靶机渗透( ) 靶机介绍 vulnhub 靶机 本地搭建 由于靶机特性,靶机网卡位nat模式扫不到,原来需要改 nat 的地址 参考方法 https://blog.csdn.net/Bossfrank/article/details/131415257 作者主页 https://blog.csdn.net/Bossfrank?typeblog P…...
【AI】AIOT简介
随着技术的快速发展,人工智能AI和物联网IoT已经成为当今最热门的技术领域。AIOT是人工智能和物联网的结合,使物联网设备更加智能化,能够进行自主决策和学习的技术。 通过物联网产生、收集来自不同维度的、海量的数据存储于云端、边缘端&#…...
picgo + typora + gitee图床
Picgo打造个人图床,稳定又安全 解决Typora笔记上传到CSDN图片无法显示的问题 typora中...
【路径规划】多机器人路径规划
摘要 多机器人路径规划在现代自动化、仓储管理及智能交通系统中有着广泛的应用。本文提出了一种基于A*算法的多机器人路径规划方法,旨在解决多机器人在同一环境中的路径冲突问题。通过采用启发式搜索和路径优化策略,机器人能够在保持避障的前提下实现最…...
深度学习Day-35:One-hot独热编码
🍨 本文为:[🔗365天深度学习训练营] 中的学习记录博客 🍖 原作者:[K同学啊 | 接辅导、项目定制] 一、 独热编码原理 独热编码(One-Hot Encoding)是一种将分类数据转换为二进制向量的方法&#…...
Streamlit 实现登录注册验证
在开发基于 Streamlit 的应用时,用户认证功能是一个常见需求。本文将介绍如何通过两种方式来实现登录注册功能:手动实现 和 使用 Streamlit-Authenticator 库。手动实现虽然灵活,但需要自行处理密码加密、验证等细节;而 Streamlit…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
【力扣数据库知识手册笔记】索引
索引 索引的优缺点 优点1. 通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度(创建索引的主要原因)。3. 可以加速表和表之间的连接,实现数据的参考完整性。4. 可以在查询过程中,…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !
我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...
