返回顶部
首页 > 资讯 > 后端开发 > Python >构建可视化 web的 Python 神器streamlit
  • 349
分享到

构建可视化 web的 Python 神器streamlit

2024-04-02 19:04:59 349人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1. 如何安装?2. 入门示例2. markdown 文本3. 数据图表支持3.1 图表组件3.2 监控组件3.3 原生图表组件3.4 外部图表组件4. 用户操作支持5. 多媒体

前言:

今天要介绍这个神器,可以说是  pyWEBio  的 Plus  + Pro  + Max  版,原谅我的词穷,但它真的非常的强~ 
正常在学习一个新框架之前, 肯定要先调研下这个框架究竟能做些什么事吧?

但对于 streamlit 来说,请你相信我,这是一个你可以无脑去学习的框架,我之所以这么说,是因为我相信终有一天,你一定能用得上它。

Streamlit 是一个用于机器学习数据可视化python 框架,它能几行代码就构建出一个精美的在线 app 应用。

它能做什么,取决于你想干什么?

streamlit 的功能强大,要学习的函数虽然多,但非常容易上手,学习成本却远比 前端+flask 来得低得低。接下来,我会一一介绍。

1. 如何安装?

和安装其他包一样,安装 streamlit 非常简单,一条命令即可

➜ pip install streamlit 

考虑到 streamlit 会附带安装比较多的工具依赖包,为了不污染当前的主要环境,我使用 venv 新建一个虚拟环境。

➜ python3 -m venv .

然后使用如下命令进入该虚拟环境

➜ source ./venv/bin/activate

接下来,再安装 streamlit ,命令在上边。

安装的包比较多(数了下竟然接近 92 个?),过程也会很久,需要点耐心

➜ pip list | wc -l
      92

在安装过程中,可能会遇到一些问题,但也不一定,这取决于你的机器,如遇到问题请自行借助搜索引擎解决。

2. 入门示例

Streamlit 提供了一些入门示例,执行如下命令即可

➜ streamlit hello

执行后 streamlit 会自动打开浏览器加载一个本地页面 Http://localhost:8501/

这里面有很多的 demo,你可以看一下,这些 Demo 还有对应的配套代码

这些代码直接拷贝保存,就可以在本地直接通过如下命令直接运行

➜ streamlit run st-demo.py

2. Markdown 文本

导入 streamlit 后,就可以直接使用 st.markdown() 初始化,调用不同的方法,就可以往文档对象中填入内容

  • st.title():文章大标题
  • st.header():一级标题
  • st.subheader():二级标题
  • st.text():文本
  • st.code():代码,同时可设置代码的语言,显示的时候会高亮
  • st.latex():latex 公式
  • st.caption():小字体文本

如下我自己写的一个小 Demo,供参考

import streamlit as st

# markdown
st.markdown('Streamlit Demo')

# 设置网页标题
st.title('一个傻瓜式构建可视化 web的 Python 神器 -- streamlit')

# 展示一级标题
st.header('1. 安装')

st.text('和安装其他包一样,安装 streamlit 非常简单,一条命令即可')
code1 = '''pip3 install streamlit'''
st.code(code1, language='bash')


# 展示一级标题
st.header('2. 使用')

# 展示二级标题
st.subheader('2.1 生成 Markdown 文档')

# 纯文本
st.text('导入 streamlit 后,就可以直接使用 st.markdown() 初始化')

# 展示代码,有高亮效果
code2 = '''import streamlit as st
st.markdown('Streamlit Demo')'''
st.code(code2, language='python')

Streamlit 运行的方式 与普通的脚本 有所不同,应该使用 streamlit run st-demo.py

image.png

运行后就会自动打开浏览器加载这个页面,如果没有自动打开,也可以手动拷贝上图中的链接打开访问。

是不是有点那个味了?就这,还只是开胃菜~

3. 数据图表支持

3.1 图表组件

关于数据的展示,streamlit 由两个组件进行支持

  • table:普通的表格,用于静态数据的展示
  • dataframe:高级的表格,可以进行数据的操作,比如排序

Table 的示例:

df = pd.DataFrame(
    np.random.randn(10, 5),
    columns=('第%d列' % (i+1) for i in range(5))
)

st.table(df)

效果如下:

Datafram 的示例:

df = pd.DataFrame(
    np.random.randn(10, 5),
    columns=('第%d列' % (i+1) for i in range(5))
)

st.dataframe(df.style.highlight_max(axis=0))

效果如下,可以看到在图示外,有个向下的小箭头,你点一下,就会进行排序,除此之外,你还能看到我对最大值进行了高亮显示,原因是我传入的参数是 df.style.highlight_max(axis=0)

其实还有 n 多种样式,比如:

  • highlight_null:空值高亮
  • highlight_min:最小值高亮
  • highlight_max:最大值高亮
  • highlight_between:某区间内的值高亮
  • highlight_quantile:暂没用过

这些你都可以在源代码中找到示例

3.2 监控组件

在采集到一些监控数据后,若你需要做一个监控面板, streamlit 也为你提供的 metric 组件

如下代码创建 三个指标,并且填入对应的数据

col1, col2, col3 = st.columns(3)
col1.metric("Temperature", "70 °F", "1.2 °F")
col2.metric("Wind", "9 mph", "-8%")
col3.metric("Humidity", "86%", "4%")

刷新页面,就能看到下面的效果:

3.3 原生图表组件

Streamlit 原生支持多种图表:

  • st.line_chart:折线图
  • st.area_chart:面积图
  • st.bar_chart:柱状图
  • st.map:地图

下面一一展示

折线图

chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns=['a', 'b', 'c'])
st.line_chart(chart_data)

面积图

chart_data = pd.DataFrame(
    np.random.randn(20, 3),
    columns = ['a', 'b', 'c'])
st.area_chart(chart_data)

柱状图

chart_data = pd.DataFrame(
    np.random.randn(50, 3),
    columns = ["a", "b", "c"])
st.bar_chart(chart_data)

地图

df = pd.DataFrame(
    np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],
    columns=['lat', 'lon']
)
st.map(df)

3.4 外部图表组件

Streamlit 的一些原生图表组件,虽然做到了傻瓜式,但仅能输入数据、高度和宽度,如果你想更漂亮的图表,就像 matplotlib.pyplot、Altair、vega-lite、Plotly、Bokeh、PyDeck、Graphviz 那样,streamlit 也提供了支持:

  • st.pyplot
  • st.bokeh_chart
  • st.altair_chart
  • st.altair_chart
  • st.vega_lite_chart
  • st.plotly_chart
  • st.pydeck_chart
  • st.graphviz_chart

对于这部分,熟悉的同学自行尝试了,这里不再演示。

4. 用户操作支持

前面 streamlit 都只是展示文本和数据,如果仅是如此,那 streamlit 也就 just so so

对于那些不会前端,并且平时有需要写一些简单的页面的人说,能写一些交互界面才是硬需求。

庆幸的是,你平时在网页上、app 上能看到的交互组件,Streamlit 几乎都能支持。。

  • button:按钮
  • download_button:文件下载
  • file_uploader:文件上传
  • checkbox:复选框
  • radio:单选框
  • selectbox:下拉单选框
  • multiselect:下拉多选框
  • slider:滑动条
  • select_slider:选择条
  • text_input:文本输入框
  • text_area:文本展示框
  • number_input:数字输入框,支持加减按钮
  • date_input:日期选择框
  • time_input:时间选择框
  • color_picker:颜色选择器

这些内容非常多,也比较简单,一个一个举例也没必要,大家直接去看 streamlit 源码里的注释即可。

5. 多媒体组件

想要在页面上播放图片、音频和视频,可以使用 streamlit 的这三个组件:

  • st.image
  • st.audio
  • st.video

6. 状态组件

状态组件用来向用户展示当前程序的运行状态,包括:

  • progress:进度条,如游戏加载进度
  • spinner:等待提示
  • balloons:页面底部飘气球,表示祝贺
  • error:显示错误信息
  • warning:显示报警信息
  • info:显示常规信息
  • success:显示成功信息
  • exception:显示异常信息(代码错误栈)

效果如下:

7. 页面布局

Streamlit 是自上而下渲染的,组件在页面上的排列顺序与代码的执行顺序一致。

一个精美的 web app ,只有上下单栏式的布局肯定是不够的。

实际上 streamlit 还提供了多种多样的布局:

st.sidebar:侧边栏

侧边栏可以做一些用户操作控件

  • st.columns:容器,处在同一个 columns 内组件,按照从左至右顺序展示
  • st.expander:隐藏信息,点击后可展开展示详细内容,如:展示更多
  • st.container:包含多组件的容器
  • st.empty:包含单组件的容器

8. 流程控制系统

Streamlit 是自上而下逐步渲染出来的,若你的应用场景需要对渲染做一些控制,streamlit 也有提供对应的方法

  • st.stop:可以让 Streamlit 应用停止而不向下执行,如:验证码通过后,再向下运行展示后续内容。
  • st.form:表单,Streamlit 在某个组件有交互后就会重新执行页面程序,而有时候需要等一组组件都完成交互后再刷新(如:登录填用户名和密码),这时候就需要将这些组件添加到 fORM
  • st.form_submit_button:在 form 中使用,提交表单。

9. 缓存特性提升速度

当用户在页面上做一些操作的时候,比如输入数据,都会触发整个 streamlit 应用代码的重新执行,如果其中有读取外部数据的步骤(数 GB 的数据),那这种性能损耗是非常可怕的。

但 streamlit 提供了一个缓存装饰器,当要重新执行代码渲染页面的时候,就会先去缓存里查一下,如果代码或者数据没有发生变化,就直接调用缓存的结果即可。

使用方法也简单,在需要缓存的函数加上 @st.cache 装饰器即可。

DATE_COLUMN = 'date/time'
DATA_URL = ('https://s3-us-west-2.amazonaws.com/'
            'streamlit-demo-data/uber-raw-data-sep14.csv.gz')

@st.cache
def load_data(nrows):
    data = pd.read_csv(DATA_URL, nrows=nrows)
    lowercase = lambda x: str(x).lower()
    data.rename(lowercase, axis='columns', inplace=True)
    data[DATE_COLUMN] = pd.to_datetime(data[DATE_COLUMN])
    return data

10. 部署上线

在本地编写的 streamlit 应用,运行起来后只能在本地访问。如果需要让别人也能访问这个应用,那你需要有一台服务器,这样才能通过公网ip进行访问如果你需要服务器,可以点 这个链接 领个卷有优惠。另外,还有一个选择,就是使用 Heroku 部署你的应用。Heroku是一个支持多种编程语言的云平台即服务,你只要注册一个帐号(听说网易和 QQ 邮箱不行,我使用的 Gmail 注册的)

然后创建自己的 app

这个 App 名字好像是要全网唯一,本想取个 hello-streamlit 的,发现早有人取过了。

然后为你的应用,创建几个 Heroku 规定的文件:

  • requirements.txt:依赖包文件
  • setup.sh:安装脚本,主要是创建文件夹,写入配置文件
  • Procfile:启动脚本,告诉 Heroku 如何安装并启动应用

这些文件的编码有固定的格式。

拿到了这份模板后,你就可以基于这份模板创建你的 git 仓库

git init
git add --all
git commit -m "init"

然后部署到 Heroku

heroku login
heroku create
git push heroku master
heroku ps:scale web=1

按照命令行输出的URL就可以访问你的应用了。

查看Heroku日志:

heroku logs --tail

要想使用自己域名,需要先通过Heroku验证。然后运行:

heroku domains:add Hivecnstats.iswbm.com

使用 Heroku 唯一的缺点就是 Heroku 是需要梯子的,一般人访问不了,没条件的还是乖乖的备台服务器吧。

12. 总结

Streamlit 一个开箱即用的工具集,它可以让一个普通的个人开发者免于学习繁杂的前端知识,就可以轻松、快速的构建一个简洁、优雅的 web app 应用,这是 streamlit 最吸引人的地方。

对于从事数据分析,机器学习领域的人来说,它绝对是开发神器,但即使你不是这些领域的人,你肯定也会有搭建一个 web app 需求的时候,streamlit 正是你需要的。

到此这篇关于构建可视化 web的 Python 神器streamlit的文章就介绍到这了,更多相关Python streamlit内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 构建可视化 web的 Python 神器streamlit

本文链接: https://lsjlt.com/news/118640.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 构建可视化 web的 Python 神器streamlit
    目录1. 如何安装?2. 入门示例2. Markdown 文本3. 数据图表支持3.1 图表组件3.2 监控组件3.3 原生图表组件3.4 外部图表组件4. 用户操作支持5. 多媒体...
    99+
    2024-04-02
  • streamlit (python构建web可视化框架)笔记
    文章目录 一、安装使用streamlit二、streamlit使用1.展示和数据样式2.`dataframe()`生成交互表和`table()`方法生成静态表3.绘制折线图4.绘制地图5.一些...
    99+
    2023-10-01
    笔记 python
  • python使用Streamlit库制作Web可视化页面
    每当你对Excel文件进行更改保存,Web页面还能够实时进行更新,确实挺不错的。 Streamlit的文档和教程地址如下。 https://docs.streamlit.io/en/stable/ https://...
    99+
    2022-06-02
    python Web可视化 python Streamlit python 可视化页面
  • python如何使用Streamlit库制作Web可视化页面
    这篇文章给大家分享的是有关python如何使用Streamlit库制作Web可视化页面的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。每当你对Excel文件进行更改保存,Web页面还能够实时进行更新,确实挺不错的。...
    99+
    2023-06-15
  • Python 数据可视化神器分享:py
    Python 数据可视化神器分享:pyecharts Python 数据可视化神器分享:pyecharts 我们都知道python上的一款可视化工具matplotlib,而前些阵子做一个Spark项目的时候用到了百度开源的一个可视化JS工...
    99+
    2023-01-31
    神器 数据 Python
  • 这才是你想要的 Python 可视化神器
    Plotly Express 是一个新的高级 Python 可视化库:它是 Plotly.py 的高级封装,它为复杂的图表提供了一个简单的语法。 受 Seaborn 和 ggplot2 的启发,它专门设计为具有简洁,一致且易于学习的 AP...
    99+
    2023-01-31
    神器 你想要 这才是
  • Python可视化神器pyecharts绘制水球图
    目录水球图双水球图显示正方形水球图圆球水球图 数据精度水球图炫酷水球超级好看水球图 水球图首先是动态的效果,像水流一样波动,所以看起来比较的舒服,一般用于业务里面的完成率,...
    99+
    2024-04-02
  • Python可视化神器pyecharts绘制漏斗图
    目录漏斗图漏斗图系列模板尖顶型漏斗图锥子型漏斗三角形漏斗连接型漏斗漏斗图 漏斗图是由Light等在1984年提出,一般以单个研究的效应量为横坐标,样本含量为纵坐标做的散点图。效应量可...
    99+
    2024-04-02
  • Python可视化神器pyecharts绘制雷达图
    目录雷达图雷达图模板系列基础雷达图单例雷达图空气质量模板颜色雷达图雷达图 雷达图是以从同一点开始的轴上表示的三个或更多个定量变量的二维图表的形式显示多变量数据的图形方法。轴的相对位置...
    99+
    2024-04-02
  • Python可视化神器pyecharts绘制桑基图
    目录桑基图桑基图系列模板第一个桑基图复杂桑基图桑基图 桑基图(Sankey diagram),即桑基能量分流图,也叫桑基能量平衡图。它是一种特定类型的流程图,图中延伸的分支的宽度对应...
    99+
    2024-04-02
  • Python可视化神器pyecharts绘制柱状图
    目录主题介绍图表参数主题详解柱状图模板系列海量数据柱状图动画展示收入支出柱状图(适用于记账)三维数据叠加柱状图与折线图多维展示(同屏展示)单列多维数据展示3D柱状图主题介绍 pyec...
    99+
    2024-04-02
  • Python可视化神器pyecharts绘制饼状图
    目录饼图概念用法优势饼状图系列模板简单多色饼状图(类别可配色)象形饼状图环形饼状图不调色饼状图(大小位置可控制)数据类别大量显示柱状图多饼状图同时显示玫瑰饼状图双图显示环形饼状图(数...
    99+
    2024-04-02
  • Python可视化神器pyecharts绘制仪表盘
    目录仪表盘仪表盘模板系列假期剩余额度任务完成率多色仪表盘仪表盘内部字体添加仪表盘 仪表盘的效果我只能说炫酷而已,如果想要运用在实际的场景中,我其实也不清楚那个场景比较适合,但是pye...
    99+
    2024-04-02
  • Python绘制柱状图可视化神器pyecharts
    目录pyecharts介绍优势展示柱状图模板系列水晶柱状图解决X轴标签过长的柱状图自定义平均刻度标签(方便查看超出范围)翻转X Y轴柱状图可以移动的X轴柱状图(适合数据类别过多)可以...
    99+
    2024-04-02
  • Python绘制地理图表可视化神器pyecharts
    目录地图地图模板系列中国地图省份数据地图(重庆地图)中国城市地图数据地图(分段型)世界地图中国地图带城市(详细)中国连续数据地图复杂地图观赏地图 这期文章我们一起来看看地图是如何绘制...
    99+
    2024-04-02
  • Python绘制词云图之可视化神器pyecharts
    目录词云图词云图系列模板固定模式词云图自定义文字样式一键化词云案例词云图 什么是词云图,相信大家肯定不会感到陌生,一本书统计里面出现的词频,然后可视化展示,让读者快速的了解这个主题纲...
    99+
    2024-04-02
  • Python绘制散点图之可视化神器pyecharts
    目录散点图什么是散点图?散点图有什么用处?散点图的基本构成要素散点图模板系列简单散点图多维数据散点图散点图显示分割线散点图凸出大小(二维) 3D散点图展示动态涟漪散点图箭头...
    99+
    2024-04-02
  • Python可视化神器pyecharts之绘制箱形图
    目录箱形图概念 用处箱形图系列模板第一个箱形图复杂一点的图例箱形图 概念 后面的图形都是一些专业的统计图形,当然也会是我们可视化的对象。 箱形图(Box-plot)又称为盒...
    99+
    2024-04-02
  • Python可视化神器pyecharts绘制地理图表
    目录地理图表地理图表之热力图系列模板人口流动趋势图(中国)中国城市分段热力图重庆省份微塑料分布热力图中国城市连续热力图中国城市热力动态图中国城市散点热力图地理图表 什么是地理图表?地...
    99+
    2024-04-02
  • 100天精通Python(可视化篇)——第90天:Pyecharts可视化神器基础入门
    文章目录 专栏导读 一、pyecharts 介绍 1. 简介 2. 版本说明 二、pyecharts 特点 三、pyecharts 安装 四、基本步骤...
    99+
    2023-09-04
    python pyecharts echarts 可视化 绘图 原力计划
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作