首页 > 其他分享 >什么是Streamlit

什么是Streamlit

时间:2024-10-11 11:34:45浏览次数:7  
标签:Web Jupyter 什么 可视化 应用 Streamlit 代码

最近,我在数据分析的一些任务中尝试了闻名已久的Streamlit,再一次感受到Python的强大之处。

于是,准备根据自己的掌握情况,写一个介绍Streamlit的系列。

本文作为第一篇, 先介绍介绍Streamlit是什么,以及它和Jupyter传统Web应用的区别。

1. 是什么

Streamlit是一个用于快速构建数据科学和机器学习应用程序的Python库,

使用Streamlit,我们可以使用简单的Python代码来创建交互式和可视化的应用,无需深入掌握前端技术或编写大量的底层代码。

Streamlit的发展历史可以追溯至2019年10月,当时Streamlit是作为一个专门针对机器学习和数据科学的应用开发框架而发布的。

刚开始的设计目标是取代Flask在机器学习项目中的地位,帮助机器学习工程师快速开发用户交互工具。

Streamlit的核心理念是“Scriptability”,即用户只需编写简单的Python脚本,就可以构建出一个完整的应用程序。

所以,Streamlit中封装了大量的交互式组件,支持表格、图表、数据表等对象的渲染,并具备栅格化响应式布局能力。

随后,Streamlit逐渐发展并受到数据科学社区的广泛关注。

其开源的性质和简洁高效的设计哲学受到越来越多的数据科学家和开发者的喜爱,他们使用Streamlit创建和分享各种美观的、交互式的Web应用。

Streamlit也开始支持越来越多的数据可视化库,如MatplotlibPlotlyAltair等,使得在应用中集成丰富的图表和视觉化元素变得非常简单。

值得一提的是,Streamlit在发展过程中还经历了被Snowflake收购的重要事件,

这一收购进一步推动了Streamlit在数据科学和机器学习领域的应用和发展。

对我来说,使用Streamlit最大的好处是,只要会Python就能构建一个漂亮的交互式应用,

不需要再陷入编写前端时,为了调整一个样式折腾半天的痛苦。

2. 用在哪里

以我自己的使用经验,Streamlit主要用在两个地方。

其一是在数据分析和机器学习项目的早期,使用Streamlit快速构建一个应用来探索项目中的各种可能性。

也可以用来做项目的原型,这比做静态原型要好很多,一方面可以轻易的实现各种交互,

另一方面,其中的图表组件可以将结果动态展示出来,更好的给客户演示项目可能的效果。

另一个可以使用的地方是教学演示,比如想做线上课程时,它可以让讲师轻松地将复杂的数据转化为直观的图表和图像,帮助学员更好地理解数据和背后的知识。

同时,Streamlit的交互式特性允许学员在界面上进行实时操作和探索,这大大增强了学习的参与度和互动性。

此外,Streamlit还支持多种数据科学库和工具的集成,使得讲师可以根据教学需求自由选择和组合不同的工具,进一步丰富教学内容和形式。

对于用户量有一定规模的应用,比如需要认证,权限以及其他业务功能时,不建议使用Streamlit

毕竟,传统的前后端开发方式还是更容易应对业务的频繁变更,也利于多人协作开发。

3. 与Jupyter相比

使用Streamlit之前,我在项目早期用的比较多的是Jupyter notebook

Jupyter也是交互式的,可以一边编码一边看结果,还可以结合markdown写一些说明文档。

使用之后,我感觉两者之间的区别主要有:

3.1. 交互性

Streamlit提供简洁的用户界面,其中可以轻松添加各种控件(如按钮、滑块等)。

Jupyter是以笔记本形式组织代码、文本和可视化输出。支持代码块的即时执行和结果展示。

相比之下,Jupyter是以代码的形式分享,更适合自己尝试各种数据分析的路径,以及在开发人员之间分享。

Streamlit以应用的形式分享,不需要了解代码,可以直接操作界面,更适合给客户分享。

3.2. 可视化能力

Streamlit内置了丰富的可视化组件,支持多种图表类型和交互式数据展示,可以轻松地将数据分析结果以图表形式呈现给用户。

Jupyter需要通过代码块生成各种可视化图表,通常是导入其他第三方库(如matplotlib、seaborn等)来帮助实现。其可视化能力很大程度依赖于所使用的库和开发者的编程技能。

相比之下,Streamlit对开发者的编程技能要求更低一些,因为使用内置封装好的组件比直接使用第三方可视化库要简单很多。

3.3. 扩展性

Streamlit本身就是纯粹的Python代码文件,所以可以很轻松地将现有的Python代码转集成到Streamlit应用中,并通过添加控件和可视化组件来增强应用功能。

Jupyter是以笔记形式组织的代码块,并不是纯粹的Python代码,代码的复用和扩展更多依赖于代码块的组合和笔记本的编辑,需要考虑更多。

相比之下,Streamlit扩展更加简单,功能复杂度提高之后,封装一些通用功能,布局代码结构也更加直观。

4. 与Web应用相比

Streamlit功能是介于Jupyter和传统Web应用之间的,比Jupyter强但是比传统Web应用弱。

最近没怎么做过数据分析和机器学习相关的Web应用了,对于两者的比较可能会考虑不周。

Streamlit的交互性上一节已经提过,传统Web应用的交互性无需多说,几乎是没有上限的,看看现在互联网上各式各样的Web应用就知道了。

不过,对于专注于数据分析和机器学习方面的开发人员来说,

传统Web应用的开发过于困难,不仅需要掌握多种技术和工具,还需要编写大量的前端和后端代码,以及进行复杂的调试和测试。

上一节提到的其他两点,可视化能力扩展性

传统Web应用能做到的也肯定比Streamlit强,Web应用发展这么多年,

尤其是近些年前端的飞速发展,Web应用既可以做各种复杂的游戏,也可以做业务复杂的电子商务平台等等。

问题仍然在于开发的困难程度,选择的时候得看你的应用有多复杂,你的团队是否能够覆盖开发Web应用所需要的各类技术。

5. 总结

总的来说,StreamlitJupyter传统的Web应用三者各有适合的应用场景,并不是某一种可以完全取代另一种。

具体如何选择可以参考下图:

对于专注于数据分析和机器学习方向的个人或者学生来说,Streamlit绝对值得一试。

标签:Web,Jupyter,什么,可视化,应用,Streamlit,代码
From: https://www.cnblogs.com/wang_yb/p/18458062

相关文章

  • 宝塔面板忘记账号或密码的解决办法是什么
    宝塔面板是一款流行的服务器管理软件,用于简化Linux和Windows服务器的管理操作。如果你忘记了宝塔面板的账号或密码,可以按照以下步骤尝试解决问题:1.尝试使用默认信息登录宝塔面板安装后,默认的用户名为admin,密码通常在安装过程中会提示用户记录下来。如果是首次登录,可以先试试......
  • 什么是ODI备案,怎么做ODI备案?
    一、什么是ODI备案ODI英文全称为OverseasDirectInvestment,翻译过来叫:境外直接投资。它是指在中华人民共和国境内依法设立的企业通过新设、并购及其他方式在境外拥有非金融企业或取得既有非金融企业所有权、控制权、经营管理权及其他权益的行为。通俗一点的讲,对外投资备案就......
  • 为什么访问宝塔面板总是提示404?
    访问宝塔面板时出现404错误可能有以下几个原因:面板安装问题:确保宝塔面板已正确安装并运行在服务器上。端口配置:检查宝塔面板的访问端口是否被修改过,默认端口为8888或其它自定义端口。确保浏览器地址栏中的URL正确无误。防火墙设置:服务器防火墙可能阻止了对宝塔面板端口的访问,......
  • 自己做网站需要什么条件
    自己制作网站通常需要以下几方面的准备和条件:基本技能:HTML/CSS:用于构建网页的基本结构和样式。JavaScript:增加网页的交互性和动态效果。如果需要服务器端开发,还需要学习如PHP,Python,Node.js等后端语言。设计能力:网页设计基础:了解基本的设计原则,如布局、色彩搭......
  • 宝塔面板地址打不开什么原因
    宝塔面板地址打不开可能有以下几个原因:服务器未启动:确保你的服务器已经启动并且运行正常。网络问题:检查你的网络连接是否正常,尝试刷新页面或者更换网络环境再次访问。宝塔面板服务未启动:登录到服务器上检查宝塔面板服务是否启动。可以通过命令 nginx-t 检查Nginx配置是否......
  • python中迭代什么意思
    1、迭代:迭代是通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代。例如:(1)非迭代例子loop = 0while loop < 3:    print("Hello worl......
  • 为什么有了基本类型还需要包装类?
    引言在Java编程语言中,数据类型分为两种:基本类型(PrimitiveType)和包装类(WrapperClass)。基本类型包括int、char、boolean等,它们是最基础的数据类型,直接存储值。而包装类则是这些基本类型的对象化版本,如Integer、Character、Boolean等。许多Java初学者可能会疑惑:既然有了基本......
  • 键入网址到页面显示,期间发生了什么?计算机网络学习心得(基础篇2)
    1.HTTP域名解析浏览器做到第一步就是域名解析,解析完后会生成发送给Web服务器的请求信息。有很多域名后面都会跟长长的url(如下图),这个url其实就是请求服务器中的文件资源,通过访问这个文件,大部分这个文件就是首页展示的静态页面,也就是.html文件。有些域名后面没有跟url的(比如百......
  • 为什么现在Java面试难度越来越高了?
    前几天收到一位粉丝私信,说的是他才一年半经验,去面试却被各种问到分布式,高并发,多线程之间的问题。基础层面上的是可以答上来,但是面试官深问的话就不会了!被问得都怀疑现在Java招聘初级岗位到底招的是初级开发还是架构,是不是面进去就能直接进架构组了?(手动狗头)但其实有一说一,面......
  • 新手炒股开户都需要做些什么呢,要注意哪些
    Python股票接口实现查询账户,提交订单,自动交易(1)Python股票程序交易接口查账,提交订单,自动交易(2)股票量化,Python炒股,CSDN交流社区>>>在踏入股票开户这一重要步骤之前,新手投资者需要静下心来思考自己的投资目标。这就好比在出发旅行之前要确定目的地一样。如果是为了长期财......