0


【Streamlit 库介绍与学习笔记】

前言:

近期再学习过程中,需要用到streamlit辅助开发web应用,为此,对streamlit官方API进行了较为全面的学习与了解,笔者将记录的streamlit库学习笔记记录在此,再使用过程中遇到问题,建议直接查看官方API,官方API链接如下:
streamlit官方API


笔记目录

一、streamlit介绍

1、简介

streamlit是一个开源的python库,能够快速帮助用户创建定制化的web应用,特别是在机器学习和数据科学领域。

2、特点

1. API简明易用
API(Application Program Interface)非常友好,结构清晰,容易上手
2. 无需掌握前端开发知识,如html,JavaScript,css等就可以构建web应用
(1)封装大量常用组件方法,支持大量数据表、图表等对象的渲染,支持网格化、2.响应式布局
(2)渲染语言为Markdowm;支持HTML文本的渲染。所以也能嵌入HTML或CSS等代码块到应用中
3. 社区资源丰富
(1)官方论坛非常活跃https://discuss.streamlit.io/
(2)官方文档提供了丰富的实例和源码https://docs.streamlit.io/library/api-reference
能让创作者专注于内容和后端业务的实现,但是又能够生成基于web的GUI,无需在前端耗费大量心力

二、streamlit学习笔记

1、markdown文本

  • 用markdowm格式显示内容,直接使用st.markdowm()初始化,调用不同的方法,往文档中填入内容
st.markdown('Streamlit is **_really_ cool**.')
st.markdown("This text is :red[colored red], and this is **:blue[colored]** and bold.")
st.markdown(":green[$\sqrt{x^2+y^2}=1$] is a Pythagorean identity. :pencil:")

在这里插入图片描述

  • **st.title()**:文章大标题
  • **st.header()**:显示一级标题
  • **st.subheader()**:显示二级标题
  • **st.text()**:显示固定格式的文本
  • **st.caption()**:显示小字体文本
  • **st.code()**:显示代码块
  • **st.latex()**:latex公式
  • **st.divider()**:显示全局规则

2、数据显示支持

  • **st.table()**:普通的表格,用户静态数据的展示
df = pd.DataFrame(
   np.random.randn(4,3),
   columns=('列 %d'% i for i inrange(3)))

st.table(df)

在这里插入图片描述

  • **st.dataframe()**:高级的表格,可以进行数据的操作,比如排序等
df = pd.DataFrame(
   np.random.randn(10,5),
   columns=('列 %d'% i for i inrange(5)))

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

在这里插入图片描述
还有n多种样式,如:
highlight_null:空值高亮
highlight_min:最小值高亮
highlight_max:最大值高亮
highlight_between:某区间内的值高亮

  • json字符串显示
  • 在这里插入图片描述
  • 监控组件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、图表可视化支持

原生图表组件

  • **st.line_chart()**:折线图
chart_data = pd.DataFrame(
    np.random.randn(20,3),
    columns=['a','b','c'])

st.line_chart(chart_data)#折线图
st.area_chart(chart_data)#面积图
st.bar_chart(chart_data)#柱状图

在这里插入图片描述

  • **st.area_chart()**:面积图在这里插入图片描述
  • **st.bar_chart()**:柱状图在这里插入图片描述
  • **st.map()**:地图(经纬线)
df = pd.DataFrame(
    np.random.randn(1000,2)/[50,50]+[37.76,-122.4],
    columns=['lat','lon'])

st.map(df)

在这里插入图片描述

外部图表组件:借助于其他库实现

  • **st.pyplot()**:显示matplotlib格式的图像
  • st.altair_chart()
  • st.vega_lite_chart()
  • st.plotly_chart()
  • st.bokeh_chart()
  • st.pydeck_chart()
  • st.graphviz_chart()

4、用户操作支持

  • st.button(显示内容):按钮
  • st.download_button():下载按钮
  • file_uploader:文件上传
  • checkbox:复选框
  • radio:单选框
  • selectbox:下拉单选框
  • mutiselect:下拉多选框
  • slider:滑动条
  • select_slider:选择条
  • text_input:文本输出框
  • **text_area:**文本展示框
  • number_input:数字输入框,支持加减按钮
  • data_input:日期选择框
  • time_input:时间选择框
  • color_picker:颜色选择器
  • camera_input:调用用户的摄像头获取一张图片

五、多媒体组件

  • **st.image()**:显示一张图片或一组图片
  • **st.audio()**:播放音频
  • **st.video()**:播放视频在这里插入图片描述

6、状态组件

  • progress:进度条,如游戏加载进度,运行进度等
  • Spinner:等待提示
  • Balloons:页面底部飘气球,表示祝贺
  • Snow:页面下雪花,表示祝贺
  • Error:显示错误信息
  • Warning:显示警告信息
  • Info:显示信息
  • Success:显示成功信息
  • exception:显示异常信息(代码错误栈)在这里插入图片描述在这里插入图片描述在这里插入图片描述

7、页面布局和容器

  • st.sidebar:显示在侧边栏
  • st.columns:列容器,处在同一个columns内的组件,按照从左至右顺序展示在这里插入图片描述
  • st.tabs:划分容器在这里插入图片描述
  • st.container:包含多个组件的容器在这里插入图片描述
  • st.expander:包含多个可以扩展的容器在这里插入图片描述
  • st.empty:包含单组件的容器

8、流程控制系统

streamlit是自上而下逐步渲染出来的

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

9、云端部署

可以部署再streamlit cloud或其他公有云上,生成一个公网url随时访问,详细步骤可以查看相关官方手册https://docs.streamlit.io/streamlit-community-cloud

10、其他

  • Session state是一种在每个用户会话的重新运行之间共享变量的方法。除了存储和持久化状态的功能外,Streamlit 还公开了使用回调操作状态的功能。会话状态还会在多页应用内的应用之间持续存在。
  • 多页面应用:使用st.set_page_config(page_title=“页面标题”,page_icon=“页面图标”),多页APP创建方法 随着应用的增长,仅仅使用选择框用于选择要显示的页面,维护起来需要大量额外的开销,并且无法使用自定义单个页面标题,无法使用URL在页面之间导航。
  • 为用户个性化应用:st.experimental_user 返回关于streamlit上的私有应用程序的登录用户的信息在这里插入图片描述
  • 缓存特性提升速度: 当用户在页面上做一些操作的时候,比如输入数据,都会触发整个 streamlit 应用代码的重新执行,如果其中有读取外部数据的步骤(数 GB 的数据),那这种性能损耗是非常可怕的。 但 streamlit 提供了一个缓存装饰器,当要重新执行代码渲染页面的时候,就会先去缓存里查一下,如果代码或者数据没有发生变化,就直接调用缓存的结果即可。 使用方法也简单,在需要缓存的函数加上 @st.cache 装饰器或其他装饰器即可。在这里插入图片描述
标签: 学习 笔记 前端

本文转载自: https://blog.csdn.net/weixin_45775136/article/details/130249222
版权归原作者 会写bug的程序媛 所有, 如有侵权,请联系我们删除。

“【Streamlit 库介绍与学习笔记】”的评论:

还没有评论