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等版本管理软件友好。
marimo的GitHub仓库目前已经有4.9K的Star,感兴趣的读者可以安装试用:https://github.com/marimo-team/marimo
marimo使用快速入门
- 安装
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界面创建。
如果要运行一个已有的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
- 编程体验
「反应式的编程环境」
运行一个单元格,marimo会通过自动运行引用其变量的单元格做出反应,从而消除了手动重新运行单元格的易出错任务。如果删除一个单元格,marimo会从程序内存中清除其变量,从而消除隐藏状态。marimo是基于变量引用关系而不是页面上单元格的位置来决定执行顺序的。
「同步UI元素」
与滑动条、下拉菜单和数据框转换器等UI元素交互时,使用它们的单元格会自动使用其最新的值重新运行。
「反应式的绘图操作」
marimo支持大多数主流的绘图库,比如Matplotlib, Seaborn, Plotly, Altair, HoloViews等,使用的时候直接把库导入就可以正常使用了。对于Altair和Plotly的绘图操作,marimo做了一些特别的事情:使用mo.ui.altair_chart或mo.ui.plotly将前端的选择连接到Python。将Altair图表包装在mo.ui.altair_chart中以使其具有响应性:在前端选择数据,然后通过图表的value属性访问它,这样可以轻松地创建交互式、可选择的图表,在前端所做的选择将自动地以Pandas DataFrame的形式提供。
这种反应式的绘图操作对于经常做数据分析的人来说简直是太好用了!
- 总结
简单试用了一下,marimo给我的感觉确实要比Jupyter Notebook好用很多,准备以后就用它了。本文只是简单介绍marimo的特点,具体的使用方法可以参考官方的文档,我这里就不做过多介绍了。
文档地址:https://docs.marimo.io/guides/plotting.html
【赠书活动】
本次送出的是《智能量化-ChatGPT在金融策略与算法交易中的实践》,由北京大学出版社赞助送出。
【规则】:本次总共送 出3 本书,由在本文文末留言并且点赞数量最多的3位读者获得,时间截止到2024年6月8日20:00。
