分享

使用streamlit快速构建python web app

 风声之家 2022-02-22

原创 徐振华 大数据挖呀挖 2022-02-11 22:29

图片

机器学习道不明

搞个app说得清

简介

最近要把模型的一些结果做成网页展示出来,选择了bootstrap,结合python的django框架,做是能做,但是有点繁琐。

前端常用的框架是vue和react,对于python技术栈的人来说又有点困难。

组内小伙伴介绍了python的streamlit包,简单调研一下,发现这真是一个神器,直接用python可以非常快速搭建一个webapp,而且特别适合展示图表。

这张图可以看到,streamlit几乎支持了所有ML相关的包:

图片

启动

我是用的docker,在容器里启动后,在网页上直接输入URL即可访问。

图片

图片

事件

django+js的前后端应用更像是一个框架,我们对号入座,分别在python和html里填上对应的代码,比如通过callback函数实现事件的处理。

而streamlit是一个单页面应用,页面上显示的元素都是一个py文件顺序执行下来的结果。每次一个控件的值改变,整个脚本都会从头执行一遍。

为了避免刷新速度太慢,streamlit里提供了@cache方法,使用缓存把一些复杂操作的结果存下来,第二次执行的时候可以加快速度。

控件

streamlit里通过判断控件返回的值来自定义函数,例如下面的单选框:

图片

对应的代码:

selector = st.sidebar.multiselect("Which would you like", [1, 2, 3], key="3")st.write(selector)

那么如果判断selector的值执行不同的代码,就是streamlit里对事件响应的逻辑。

亮点

streamlit里对dataframe的支持很好,可以直接st.write(df),渲染出来的表格自带排序功能,还可以支持style输出:

图片

stream里支持plotly, seaborn等常用画图工具,还有不怎么常见但是功能很强大的altair。

多页面应用

streamlit本身只能支持一个单页面应用,但是结合hydralit,可以做成一个带导航条的多页面应用。

看看下面这几个页面,哪里还像一个python做出来的玩具?图片

图片

图片

后记

今天短暂地用streamlit开发了一下,用起来真的是超爽,直接在jupyter里调试python代码,然后刷新页面就可以看到修改后的效果了。

再也不用一会python,一会F12打开浏览器调试JS代码了图片图片图片

确定

  • 不看此公众号

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多