不想用Jupyter Notebook了?那就试试marimo吧!【文末赠书】
marimo简介
marimo使用快速入门
评论区

不想用Jupyter Notebook了?那就试试marimo吧!【文末赠书】

技术
内容分发网络
了解详情 
基于覆盖全球骨干网以及各地域的海量加速节点,为图文、音视频等多种类型内容提供高性能,稳定的加速服务,提升访问体验

marimo简介

Jupyter Notebook是一个开源的交互式笔记本工具,它可以让你创建和共享包含实时代码、可视化和说明文本的文档,它的交互性和多语言支持使其成为许多数据科学家和研究人员喜爱的工具之一,非常适用于数据分析、机器学习、数据可视化、教育和研究等领域。尽管Jupyter Notebook的功能非常强大,不过也存在一些比较突出的问题:

  • 「性能问题」Jupyter Notebook的性能相对较差,特别是在处理大型数据集或复杂计算时。
  • 「版本控制困难」Jupyter Notebook的文件格式是JSON,这种格式不太适合进行版本控制。
  • 「缺乏集成开发环境功能」 :尽管Jupyter Notebook提供了交互式编程环境,但它缺乏传统集成开发环境的一些功能,如代码自动补全、代码调试等,这可能会影响开发效率。
  • 「单元格之间的结果互相独立」 :更新了某个单元格的输出结果,依赖该单元格的其他单元格的结果不会自动更新,必须重新执行一遍。

最近在GitHub上看到一个比Jupyter Notebook更强大的Notebook工具,简单试用了一下,发现非常好用,这个工具就是 marimo

marimo是一个反应式的Python Notebook工具,运行一个单元或与UI元素交互,marimo会自动运行其依赖的单元,保持代码和输出的一致性。marimo以纯Python格式存储,可作为脚本执行,也可作为应用程序部署,其主要特点如下:

  • 「反应式」 :运行一个单元,marimo会自动运行所有依赖的单元;
  • 「交互式」 :将滑动条、表格、图表等都绑定到Python,无需回调;
  • 「可重复」 :无隐藏状态,确定性执行;
  • 「可执行」 :可作为Python脚本执行;
  • 「可共享」 :可部署为交互式Web应用;
  • 「对版本管理友好」 : 以.py文件存储,对git等版本管理软件友好。

marimoGitHub仓库目前已经有4.9KStar,感兴趣的读者可以安装试用:https://github.com/marimo-team/marimo

marimo使用快速入门

  1. 安装

marimo可以直接通过pip进行安装:


          
              

            pip install marimo
          
        

安装好以后可以运行下面的命令查看使用说明,验证marimo是否可用。运行成功后,命令行会输出如下信息:


            
Edit intro.py in your browser 📝
            

            
URL: http://localhost:2719?access_token=tUzhzNDXt87fbU6TYAsPWA
        

在浏览器中输入上面的URL地址就可以访问marimo的界面了。

如果要创建一个新的Notebook,可以执行命令marimo edit,然后在web界面创建。

picture.image

如果要运行一个已有的Notebook,可以执行命令:


          
              

            marimo run your\_notebook.py
          
        

当然,这其实就是一个Python脚本,也可以执行用Python运行


          
              

            python your\_notebook.py
          
        

这种直接用Python脚本的方式是不是比Jupyter Notebook.ipynb文件的方式方便多了?

如果你之前使用的是Jupyter Notebook,现在想切换到marimo,可以执行下面的命令将.ipynb文件文件转换为marimo所需要的.py文件。


          
              

            marimo convert your\_notebook.ipynb > your\_notebook.py
          
        

  1. 编程体验

「反应式的编程环境」

运行一个单元格,marimo会通过自动运行引用其变量的单元格做出反应,从而消除了手动重新运行单元格的易出错任务。如果删除一个单元格,marimo会从程序内存中清除其变量,从而消除隐藏状态。marimo是基于变量引用关系而不是页面上单元格的位置来决定执行顺序的。

picture.image

「同步UI元素」

与滑动条、下拉菜单和数据框转换器等UI元素交互时,使用它们的单元格会自动使用其最新的值重新运行。

picture.image

「反应式的绘图操作」

marimo支持大多数主流的绘图库,比如Matplotlib, Seaborn, Plotly, Altair, HoloViews等,使用的时候直接把库导入就可以正常使用了。对于AltairPlotly的绘图操作,marimo做了一些特别的事情:使用mo.ui.altair_chartmo.ui.plotly将前端的选择连接到Python。将Altair图表包装在mo.ui.altair_chart中以使其具有响应性:在前端选择数据,然后通过图表的value属性访问它,这样可以轻松地创建交互式、可选择的图表,在前端所做的选择将自动地以Pandas DataFrame的形式提供。

picture.image

这种反应式的绘图操作对于经常做数据分析的人来说简直是太好用了!

  1. 总结

简单试用了一下,marimo给我的感觉确实要比Jupyter Notebook好用很多,准备以后就用它了。本文只是简单介绍marimo的特点,具体的使用方法可以参考官方的文档,我这里就不做过多介绍了。

文档地址:https://docs.marimo.io/guides/plotting.html


【赠书活动‍‍】

本次送出的是《智能量化-ChatGPT在金融策略与算法交易中的实践》,由北京大学出版社赞助送出。

picture.image

【规则】:本次总共送 出3 本书,由在本文文末留言并且点赞数量最多的3位读者获得,时间截止到2024年6月8日20:00。

0
0
0
0
关于作者
相关资源
火山引擎音视频体验白皮书
火山引擎联合AMD发布了音视频体验白皮书,以抖音亿级日活用户实践和大规模场景落地经验,详细解读音视频体验评估指标和模型,分享火山引擎音视频实验室的评测方案和抖音在音视频体验优化上的典型策略、案例,助力企业优化用户体验,促进业务增长。
相关产品
内容分发网络
基于覆盖全球骨干网以及各地域的海量加速节点,为图文、音视频等多种类型内容提供高性能,稳定的加速服务,提升访问体验
了解详情 
推荐
对象存储
海量、安全、低成本、易用、高可靠、高可用的分布式云存储服务
了解详情 
数据库传输服务
提供一体化数据库数据传输管理服务,降低数据库之间数据流通复杂性,可帮助用户在业务不停服的前提下轻松完成数据库迁移上云
了解详情 
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论