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。