就算你不会 Web 开发,也能让数据“动”起来的开源项目
off999 2025-06-23 21:18 22 浏览 0 评论
本文面向有 Python 基础的小伙伴,有 Web 基础的更好
作者:HelloGitHub-吱吱
这里是 HelloGitHub 推出的《讲解开源项目》系列,今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来!
犹记得我在做机器学习和数据分析方面的毕设时,曾经为了制作精美的图表而抓耳挠腮,曾经为了在页面可视化、交互式展示数据而绞尽脑汁。现在摆在我们面前的是一个能够快速可视化数据并且制作成交互页面的 Python 框架,仅需几分钟就可以快速构建和部署功能强大的数据应用程序,写到这里 Streamlit 的高傲已经尽数体现了。
Streamlit - The fastest way to build and share data apps
下面我们就一起来上手这个强大的 Python 数据可视化框架吧!
一、浅尝辄止
1、本地实验环境:Python 3.6 - Python 3.8。
2、安装 Streamlit 体验官方提供的 hello world 小 demo。
pip install streamlit
streamlit hello3、运行上述命令后会自动打开 Streamlit 的初始页面 http://localhost:8501/。
4、通过左边栏可以选择四个内置小项目并查看其代码,例如分形动画、折线图和层叠地图等,能在网页上点击选择设置一些参数,动态查看效果。
二、熟能生巧
通过 Streamlit 提供的接口,完美避开 Django 和 Flask 框架,无需编写 HTML、CSS、JavaScript 代码,与魔幻的前端 say goodbye。
2.1 开发自己的 app
1、首先创建一个 Python 文件,命名为 test.py,导入 Streamlit 库。
import streamlit as st2、通过如下命令启动项目,Ctrl + c 即可结束项目。
# filename 自己的 py 文件名称
streamlit run [filename]3、当应用程序正在运行时,每次修改 Python 文件并保存,网页都会弹出提示“Source file changed”,可以选择“Rerun”或者“Always rerun”,使得页面能够重新刷新。忽略掉小小的等待时间,我们能够在快速交互循环中「所见即所得」。
4、我们在任何时候对网页内容进行更新,包括:修改源码、使用者和网页进行交互(点击网页的按钮、输入文本),Streamlit 都是自上而下扫描解析并且运行整个代码。
2.2 基础命令
2.2.1 显示文本
2.2.2「魔法」
我愿称之为懒人命令——用尽量少的代码达到同样的效果。在不调用任何 Streamlit 方法的情况下,当用户自定义的变量出现在单行中,等同于 st.write() 效果。
import pandas as pd
df = pd.DataFrame({
'first column': [1, 2, 3, 4],
'second column': [10, 20, 30, 40]
})
df也可以将 ''' 和 ' 包裹的内容直接显示。
# Draw a title and some text to the app:
'''
# Welcome to HelloGitHub
_快来加入我们吧_
'''
x = 10
'x', x # <-- Draw the string 'x' and then the value of x2.2.3 显示数据表
Streamlit 能从多个不同角度快速、交互的可视化数据,原始数据、图表、JSON 数据等皆可。
2.2.4 绘制图表和地图
Streamlit 支持多种流行的数据图表库,如 Matplotlib、Altair、deck.gl 等。
2.2.5 显示多媒体
动动鼠标即可将图像、视频和音频文件直接嵌入 Streamlit 应用程序。
2.2.6 交互式小部件
盯:漂亮的按钮、滑块、输入框等小部件。每次用户与小部件交互时,Python 脚本都会重新执行,并且该小部件的输出值会在运行期间设置为新值。
1、按钮 button。
if st.button('HelloGitHub'):
st.write('Subscribe our channels~')2、复选框 checkbox。
ret = st.checkbox('I love HelloGitHub!')
if ret:
st.write('Me too~')3、滑块 slider,可以选择 int / float / data / time / datetime 等类型。
age = st.slider('HelloGitHub 几岁了?', 0, 10, 1)
st.write("HelloGitHub ", age, ' 岁了~')4、常用的命令列举
2.2.7 显示进程和状态
1、进度条 progress。
import time
my_bar = st.progress(0)
for percent_complete in range(100):
time.sleep(0.1)
my_bar.progress(percent_complete + 1)2、spinner:在执行代码块时临时显示一条消息。
import time
with st.spinner('Wait for it...'):
time.sleep(5)
st.success('Done!')
st.balloons()3、其他
2.2.8 性能优化
Streamlit 使用 @st.cache 装饰器使得页面能够快速“无痕”刷新。当我们给函数打上 cache 标记时,Streamlit 在碰到该函数的时候会检查三个值:函数名称、函数体、输入参数。如果发现这三个值的组合第一次出现,则会运行函数,并且将结果存储在本地缓存中。当下次调用该函数时,如果这三个值没有改变,则 Streamlit 会跳过函数执行,直接读取本地缓存返回结果。
@st.cache
def HelloGitHub(url):
# 返回相应数据
return data
# 第一次遇到,执行该函数
d1 = HelloGitHub(DATA_URL_1)
# 传入参数一致,第二次遇到不会执行该函数
# 而会直接返回前一次计算的结果,d1 = d2
d2 = HelloGitHub(DATA_URL_1)
# 传入参数不同,重新执行该函数
d3 = HelloGitHub(DATA_URL_2)2.2.9 布局设置
1、将交互小部件放入侧边栏。
add_selectbox = st.sidebar.selectbox(
"Which one?",
("C++", "Java", "Python")
)2、表单 st.form():将元素与“提交”按钮一起处理。
# 向表单插入元素
with st.form("my_form1"):
st.write("我在 1 框框里~")
slider_val = st.slider("框框滑块")
checkbox_val = st.checkbox("pick me")
# Every form must have a submit button.
submitted = st.form_submit_button("1-Submit")
# 乱序插入元素
form = st.form("my_form2")
form.slider("我在 2 框框里~")
st.slider("我在外面")
# Now add a submit button to the form:
form.form_submit_button("2-Submit")3、插入列并排的容器
# 官方示例
col1, col2, col3 = st.beta_columns(3)
with col1:
st.header("A cat")
st.image("https://static.streamlit.io/examples/cat.jpg")
with col2:
st.header("A dog")
st.image("https://static.streamlit.io/examples/dog.jpg")
with col3:
st.header("An owl")
st.image("https://static.streamlit.io/examples/owl.jpg")2.3 修改配置
1、查看所有的配置选项:streamlit config show。
2、Windows 系统可以在 %userprofile%/.streamlit/config.toml 全局文件下或者在当前运行 Streamlit 的文件夹下建立 .streamlit/config.toml 文件进行设置。
3、某些配置例如外观、主题等点击网页上的 Settings 也可轻松选择。
2.4 在 Streamlit sharing 上部署、管理和共享
1、将自己的项目代码上传到 GitHub 的共有仓库,添加需求文件以管理任何外部依赖项,例如 requirements.txt 等。
2、在 https://streamlit.io/sharing 上注册账号并且申请邀请「Request an invite!」。收到邀请电子邮件后,即可使用该平台部署管理。
3、选择 New app 在 Deploy an app 中填入相应信息即可。
4、若应用程序有很多依赖项,则第一次部署可能需要一些时间,最终应用程序可以使用如下链接访问:
https://share.streamlit.io/[user name]/[repo name]/[branch name]/[app path]三、精益求精
到此,Streamlit 框架的基本接口和用法都已经讲完啦!更多详情还需要友友们在实践中探索,并将指令成功“嵌入”到自己的项目中。
很多命令在文档的「API cheat sheet」中都可以快速搜索到,希望很快就能够在 Streamlit Gallery 上看到大家分享的应用,可以留言给我地址我会去把玩的~。
最后,您的关注和宝贵三连「收藏、点赞、转发」,是对我们 HelloGitHub 莫大的支持,我们将会为您源源不断推送新鲜、有趣的开源项目。
HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。
相关推荐
- win7什么版本最好用(win7哪个版本最稳定流畅)
-
Windows7旗舰版,最好,最稳定。Windows7,是由微软公司(Microsoft)开发的操作系统,内核版本号为WindowsNT6.1。Windows7可供选择的版本有:简易版(Sta...
- win7自带虚拟光驱怎么使用(win7系统虚拟光驱安装教程)
-
以DAEMONTools为例,360软件管家里面就有最新版的下.安装后使用方法如下:第一种方法:在虚拟光驱界面中,你先按一下中间工具栏最左边“+”符号的按钮,添加镜像文件(可以一次添加多个),这...
- 电脑装系统蓝屏(电脑装系统蓝屏重启开不了机)
-
蓝屏的原因往往集中在不兼容的硬件和驱动程序、有问题的软件、病毒等。解决办法:1、病毒的原因。使用电脑管家杀毒。2、内存的原因。用橡皮擦把内存条的金手指擦拭一下,把氧化层擦掉,确保内存条安装、运行正常。...
- u盘安装软件(u盘安装软件到电视)
-
第一种情况:软件安装包可以直接下载的。在电脑上将软件安装包下载到本地硬盘,然后将下载好软件安装包拷贝到U盘上即可拿到别的电脑上去安装。分可为exe格式的和rar格式,exe格式直接安装,rar格式的解...
- microsoft官网账户注册(microsoft 帐户注册)
-
要创建Microsoft账户,您可以按照以下步骤进行操作:1.打开任意一个支持浏览器的设备,如电脑、手机或平板电脑。2.在浏览器中输入"Microsoft账户注册"或直接访问Mic...
- 显示器闪屏是什么原因(显示器闪屏是哪里坏了)
-
解决方法: 一、接触不良导致的显示器闪屏 先查看主机和显示器的电源线连接,是否松动,重新插拔一下电源线。 二、信号干扰导致的显示器闪屏 1、连接显示器的电缆线是否没有屏蔽线圈,如果没有防干扰的...
- 国产linux操作系统(国产linux操作系统有什么版本)
-
中国对于操作系统的探索其实并不晚。 早在20世纪60年代中期中国就开始操作系统的研发,那时的比尔·盖茨还只是个迷恋计算机的小字辈,南京大学教授孙钟秀、北京大学杨芙清院士等都是我国操作系统的拓荒者...
- 免费无需排队的云电脑(不需要排队的云电脑)
-
目前市场上有一些云游戏平台提供无限时长且无需排队的服务。这些平台通常采用先进的云计算技术和高性能服务器,能够提供稳定流畅的游戏体验。用户可以随时登录并畅玩游戏,无需等待排队。这些平台还提供多种游戏选择...
- wps官方下载(wps官方下载官网电脑版网址)
-
具体的步骤如下:1、首先在电脑上打开浏览器,在浏览器中输入“WPS”,找到WPS官方网站。2、接下来进入WPS官方网站中,找到WPS软件,点击“免费下载”。3、点击下载后在弹出来的对话框中修改下载位置...
- win vista与win7有什么区别(win7与vista关系)
-
WindowsVista和Windows7是微软公司推出的两个桌面操作系统,它们之间有以下主要区别:1.界面设计:Windows7的界面设计更加简洁明了,而WindowsVista的界面...
- winxp系统版本(winxp 版本)
-
1、微软官方3个版本:WINDOWSXPHOME(家庭版)、Professional(专业版)、MediaCenter2005(媒体中心版),每个版本的功能不一样。使用最多的是Professional...
- 打印机无法共享怎么回事(打印机无法共享出去)
-
共享打印机无法打印原因一:可能是由于病毒死机解决方法:确定是否由于病毒死机,找一张干净(确信无病毒)的系统盘,从A驱动舒上启动电脑,检查此时打印机和主机能否联机。如果正常联机,估计这种故障是由攻击硬件...
- ipv6无网络访问权限怎么解决
-
ipv6无网络访问权限解决方法如下1、点击电脑左下角的开始,进入到开始的菜单栏,在菜单栏中找到“运行”。或者通过快捷键Windows+R打开运行窗口。 2、打开运行的窗口页面后,在页面上输入“CMD...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
慕ke 前端工程师2024「完整」
-
失业程序员复习python笔记——条件与循环
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
