一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

07-11 1761阅读

但对于 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 还有对应的配套代码

一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

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

➜ 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

    markdownst.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

    一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

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

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

    一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

    # 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)

      效果如下

      一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

      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)

      一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

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

      • highlight_:空值高亮

      • 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%”)

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

        一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

        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)

          一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

          面积图

          chart_data = pd.DataFrame(

          np.random.randn(20, 3),

          columns = [‘a’, ‘b’, ‘c’])

          st.area_chart(chart_data)

          一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

          柱状图

          chart_data = pd.DataFrame(

          np.random.randn(50, 3),

          columns = [“a”, “b”, “c”])

          st.bar_chart(chart_data)

          一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

          地图

          df = pd.DataFrame(

          np.random.randn(1000, 2) / [50, 50] + [37.76, -122.4],

          columns=[‘lat’, ‘lon’]

          )st.map(df)

          一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

          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

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

            一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

            # 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 源码里的注释即可。

              一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

              # 5. 多媒体组件

              ===========

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

              • st.image

              • st.audio

              • st.video

                一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                # 6. 状态组件

                ==========

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

                • progress:进度条,如游戏加载进度

                • spinner:等待提示

                • balloons:页面底部飘气球,表示祝贺

                • error:显示错误信息

                  自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

                  深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

                  因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!

                  由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

                  如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

                  一、Python所有方向的学习路线

                  Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  二、学习软件

                  工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  三、全套PDF电子书

                  书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  四、入门学习视频

                  我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  五、实战案例

                  光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  六、面试资料

                  我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  4c5452090670f48eda180e0.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA56iL5bqP5aqb56eD56eD,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

                  五、实战案例

                  光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  六、面试资料

                  我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个傻瓜式构建可视化 web的 Python 神器 ——streamlit(1)

                  一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

                  [外链图片转存中…(img-3RGNxmnk-1712881653817)]

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]