Jupyter Notebooks 就像电子表格一样学习两者

jupyter notebooks 就像电子表格一样学习两者

电子表格是“商业软件的暗物质”:它们无处不在,它们是隐形的,并且它们将所有东西结合在一起。商业和财务在电子表格上运行;没有其他软件工具能够让这么多人为这么多不同的问题构建解决方案。在这种情况下,您必须将“Jupyter 是新 Excel”的任何断言理解为故意耸人听闻。

但是,Jupyter 笔记本确实与 Excel 电子表格有一些关键的相似之处。笔记本在科学和统计计算中无处不在,就像电子表格在业务运营和前台财务中占据主导地位一样。在这篇文章中,我们将探讨这两种工具之间的一些哲学和实践异同,试图解释为什么两者都有如此热情的粉丝和批评者。

相似之处:优点

从表面上看,Jupyter 笔记本和 Excel 电子表格都使用“单元格”作为将分析分解为离散步骤的视觉隐喻。两种格式的单元格都包含代码并显示结果。两者都是为交互式、迭代、探索性分析而设计,将计算与数据可视化相结合。两者都旨在为初学者提供浅层学习曲线。 两者都被设计为独立且易于共享。 Google Colab 和 JupyterHub 等在线环境抽象化了通常很复杂的 Python 设置过程。两人都在各自领域的高等教育领域拥有强大的影响力。商学院几乎普遍使用 Excel 教授财务建模,STEM 系通常使用 Jupyter 笔记本教授数据分析1。新毕业生将他们对这些工具的熟悉带入工作场所。

相似之处:缺点

Excel电子表格和Jupyter笔记本都被软件工程师批评为不是“真正的软件”。除了两个工件都需要另一个程序来运行这一明显的限制之外,它们还使得遵守软件工程最佳实践变得困难:

作为大型的整体文件,它们很难使用 git 等开发工具进行版本控制。 Office OpenXML 文档是压缩的,这会“扰乱”文件内容,以便 git 无法跟踪底层数据的更改。 Jupyter 笔记本实际上只是大型 JSON 文件,但单元输出和执行计数更改会引入多余的增量2.Excel 电子表格和 Jupyter 笔记本都很难生产,尽管这两种工具在实践中确实在生产中使用。 Excel 和 Jupyter 是繁重的执行环境,它们引入了自己的依赖项,对于习惯编写独立脚本的工程师来说似乎很浪费。两者都容易出错并且难以测试。事实上,这两个平台都迎合了编写代码经验较少的用户,这让他们以创建充满错误的解决方案而闻名。事实上,如果没有单元测试或质量控制文化等工具,电子表格和笔记本中的错误更有可能进入生产。

差异

Excel 让非程序员更容易理解数据在单元格之间的流动方式。 Excel 的网格提供了一种通过单元格坐标引用数据的自然方式,而 Jupyter 依赖命名变量,迫使用户面对命名变量很难的现实。在 Excel 中检查多步计算的中间结果更容易,因为单元格就在您的前面。 Jupyter Notebook 中的打印语句需要更多的精力来设置和执行。Excel 是独立的; Jupyter的价值在于Python的包生态系统。Python 对外部库的依赖使得 IT 部门更容易限制 Jupyter 的使用。本地安装 Jupyter 和通过网络运行笔记本都比打开 Excel 需要更多的设置。大多数 Excel 电子表格仅使用 Excel 附带的功能,这意味着业务联系人只需打开您的模型、修改它并运行它。笔记本很难在组织外部共享,甚至在组织内部共享,因为它们与特定的 Python 环境紧密相连,而 Python 环境很难设置。Excel 可以充当“穷人的数据库”,跨多个工作表存储表格数据,并通过数据透视表提供类似 OLAP 的功能。 Jupyter 笔记本通常从 API 或共享文件位置加载数据,这是它们不那么独立的另一个原因。在 Excel 中“捏造数字”比在 Jupyter 中更容易。电子表格实时更新,无需重新运行代码或设置交互式小部件。一次性更改更容易进行,这在速度至关重要的情况下很重要。在 Jupyter 中使用代码是不可避免的,但 Excel 可以完全通过 GUI 来使用:甚至有菜单可以在单元格公式中选择函数。Jupyter 更加开放和灵活,但需要更多的技术知识才能有效使用。Jupyter 比 Excel 更注重叙事和讲故事。Jupyter 笔记本专为文学编程而设计,代码和散文散布在其中以创建叙事流程。Excel 中的报告和演示通常依赖于复制/粘贴或与 PowerPoint 的集成。

影响

微软将Python集成到Excel中的努力不会显着削弱Jupyter在科学和技术计算领域的主导地位。电子表格缺乏自然的叙述结构,这使得它们不太适合教育和可重复的研究。而且,“开放科学”社区永远不会采用美国科技巨头打造的闭源工具。

将会出现工具和“最佳实践”来减轻 Jupyter 笔记本的操作缺点3,就像电子表格一样。大多数前台用户会忽略此类准则4,从而与 IT 部门造成持续的紧张关系。在见证了 Excel 的发展历程后,许多 IT 部门认为支持 Jupyter 就像打开充满安全漏洞和维护难题的潘多拉魔盒。

这两个平台都将在可预见的未来生存。两者都不会取代对方,因为它们的目标用户群具有根本不同的技能。 从事定量建模和业务决策交叉领域工作的人员将继续需要熟悉这两种工具。

结论

使用最适合您解决问题的组织文化的工具。在某些情况下,技术要求会迫使您使用一种工具而不是另一种工具,就像只允许您使用一种工具或另一种工具的组织。如果您在 Excel 主导的领域工作并且确实需要 Python 的功能,根据我的经验,从 Python 代码读取和写入 Excel 电子表格比让 Excel 用户打开 Jupyter 笔记本更容易。

全世界的软件工程师和 IT 部门将继续看不起 Jupyter 笔记本,就像他们几十年来对待电子表格一样。事实上,MBA 类型不使用 Jupyter 笔记本,这使得 IT 部门可以更轻松地对其使用实施严格的限制。讽刺的是,许多前台用户可能只有在 Microsoft 将 Python 集成到 Excel 中后才能访问它。

一些坚持不懈的人仍然使用 MATLAB、R、SPSS 或 SAS,但随着时间的推移,高昂的许可费用将继续推动用户转向免费和开源的替代方案。占领教育市场是 MathWorks 等公司商业战略的关键部分,但它们不太可能永远坚持下去。 ↩

像 nbdime 这样的工具可以帮助对 Jupyter Notebook 进行版本控制,但使用它们又增加了一层复杂性。 ↩

papermill 等工具旨在简化生产环境中笔记本的运行。云提供商还支持在生产中创建涉及 Jupyter Notebook 的管道。 ↩

有多少人听说过构建电子表格的 FAST 标准? ↩

以上就是Jupyter Notebooks 就像电子表格一样学习两者的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1354855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
PyTorch 中的 CIFAR
上一篇 2025年12月13日 18:50:26
构建逻辑
下一篇 2025年12月13日 18:50:43

相关推荐

  • 开源免费PHP工具 PHP开发效率提升利器

    推荐开源免费PHP开发工具以提升效率:VS Code、Sublime Text轻量高效,PhpStorm专业强大;调试用Xdebug、Kint、Ray;依赖管理选Composer;代码质量工具包括PHPStan、Psalm、PHP_CodeSniffer;数据库管理可用%ignore_a_1%MyA…

    2026年5月10日
    000
  • Matplotlib 地图中多类型图例的创建与优化

    Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化Matplotlib 地图中多类型图例的创建与优化

    本教程旨在解决matplotlib地图可视化中,如何在一个图例中同时展示颜色块(如区域分类)和自定义标记(如特定兴趣点)的问题。文章详细介绍了当传统`patch`对象无法正确显示标记时,如何利用`matplotlib.lines.line2d`创建标记图例句柄,并将其与颜色块图例句柄合并,从而生成一…

    2026年5月10日 用户投稿
    100
  • 利用海象运算符简化条件赋值:Python教程与最佳实践

    本文旨在探讨Python中海象运算符(:=)在条件赋值场景下的应用。通过对比传统if/else语句与海象运算符,以及条件表达式,分析海象运算符在简化代码、提高可读性方面的优势与局限性。并通过具体示例,展示如何在列表推导式等场景下合理使用海象运算符,同时强调其潜在的复杂性及替代方案,帮助开发者更好地掌…

    2026年5月10日
    100
  • RichHandler与Rich Progress集成:解决显示冲突的教程

    在使用rich库的`richhandler`进行日志输出并同时使用`progress`组件时,可能会遇到显示错乱或溢出问题。这通常是由于为`richhandler`和`progress`分别创建了独立的`console`实例导致的。解决方案是确保日志处理器和进度条组件共享同一个`console`实例…

    2026年5月10日
    000
  • 理解编程指令:当结果正确,但实现方式不符要求时

    本文探讨了在编程实践中,即使程序输出了正确的结果,但若其实现方式未能严格遵循既定指令,仍可能被视为“不正确”的问题。我们将通过具体示例,对比直接求和与累加求和两种实现策略,强调理解和遵守编程规范的重要性,以确保代码的健壮性、可维护性及符合项目要求。 在软件开发过程中,我们经常会遇到这样的情况:编写的…

    2026年5月10日
    000
  • 使用 Jupyter Notebook 进行探索性数据分析

    Jupyter Notebook通过单元格实现代码与Markdown结合,支持数据导入(pandas)、清洗(fillna)、探索(matplotlib/seaborn可视化)、统计分析(describe/corr)和特征工程,便于记录与分享分析过程。 Jupyter Notebook 是进行探索性…

    2026年5月10日
    000
  • Python命令怎样使用profile分析脚本性能 Python命令性能分析的基础教程

    使用Python的cProfile模块分析脚本性能最直接的方式是通过命令行执行python -m cProfile your_script.py,它会输出每个函数的调用次数、总耗时、累积耗时等关键指标,帮助定位性能瓶颈;为进一步分析,可将结果保存为文件python -m cProfile -o ou…

    2026年5月10日
    000
  • Discord.py 交互按钮超时与持久化解决方案

    本教程旨在解决Discord.py中交互按钮在一段时间后出现“This Interaction Failed”错误的问题。我们将深入探讨视图(View)的超时机制,并提供通过正确设置timeout参数以及利用bot.add_view()方法实现按钮持久化的具体方案,确保您的机器人交互功能稳定可靠,即…

    2026年5月10日
    000
  • Python递归函数追踪与性能考量:以序列打印为例

    本文深入探讨了Python中一种递归打印序列元素的方法,并着重演示了如何通过引入缩进参数来有效追踪递归函数的执行流程和参数变化。通过实际代码示例,文章揭示了递归调用可能带来的潜在性能开销,特别是对调用栈空间的需求,以及Python默认递归深度限制可能导致的错误,为读者提供了理解和优化递归算法的实用见…

    2026年5月10日
    000
  • python中zip函数详解 python多序列压缩zip函数应用场景

    zip函数的应用场景包括:1) 同时遍历多个序列,2) 合并多个列表的数据,3) 数据分析和科学计算中的元素运算,4) 处理csv文件,5) 性能优化。zip函数是一个强大的工具,能够简化代码并提高处理多个序列时的效率。 在Python中,zip函数是一个非常有用的工具,它能够将多个可迭代对象打包成…

    2026年5月10日
    000
  • 谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧谷歌浏览器如何截图 谷歌浏览器页面截图技巧

    使用谷歌浏览器的开发者工具截图步骤:1. 按ctrl+shift+i(windows/linux)或cmd+option+i(mac)打开开发者工具。2. 点击右上角三个点,选择”更多工具”,再选择”截图”。3. 选择截取整个页面。推荐的谷歌浏览器扩展…

    2026年5月10日 用户投稿
    100
  • Python中怎样使用pymongo?

    在python中使用pymongo可以轻松地与mongodb数据库进行交互。1)安装pymongo:pip install pymongo。2)连接到mongodb:from pymongo import mongoclient; client = mongoclient(‘mongod…

    2026年5月10日
    000
  • JS如何实现迭代器?迭代器协议

    JavaScript中实现迭代器需遵循可迭代协议和迭代器协议,通过定义[Symbol.iterator]方法返回具备next()方法的迭代器对象,从而支持for…of和展开运算符;该机制统一了数据结构的遍历接口,实现惰性求值,适用于自定义对象、树、图及无限序列等复杂场景,提升代码通用性与…

    2026年5月10日
    100
  • Golang使用Protobuf定义接口与消息格式

    Protobuf通过字段编号实现兼容性,新增字段可忽略、删除字段可保留编号,确保新旧版本互操作,支持服务独立演进。 在Golang项目中,利用Protobuf定义接口和消息格式,本质上是为服务间通信构建了一套高效、类型安全且跨语言的契约。它让数据结构清晰可见,RPC调用标准化,极大地简化了分布式系统…

    2026年5月10日
    000
  • JavaScript计算器开发:解决数值显示与初始化问题

    本教程深入探讨了使用JavaScript构建计算器时常见的数值显示异常问题,特别是由于类属性未初始化导致的`Cannot read properties of undefined`错误。我们将详细分析问题根源,并通过在构造函数中调用初始化方法来解决该问题,同时优化显示逻辑,确保计算器功能稳定且界面显…

    2026年5月10日
    000
  • Python 函数参数类型:如何使用可变参数和动态参数?

    python 中的参数类型:关键词参数、可变参数和动态参数 在 python 中,函数的参数可以分为以下几种类型: 关键词参数(kw)**:这些参数具有名称,并且在调用函数时明确指定。可变参数(*args):这些参数没有名称,允许函数接受任意数量的位置参数。它们将被收集到一个元组中。动态参数(kwa…

    2026年5月10日
    000
  • NextAuth getToken 在服务端返回 null 的问题排查与解决

    问题描述 在使用 Next.js 和 NextAuth 构建应用程序时,有时需要在服务端获取用户的身份验证信息。getToken 函数是 NextAuth 提供的一个便捷方法,用于从请求中提取 JWT (JSON Web Token)。然而,在某些情况下,尤其是在使用 getServerSidePr…

    2026年5月10日
    000
  • pycharm解析器怎么添加 解析器添加详细流程

    在pycharm中添加解析器的步骤包括:1) 打开pycharm并进入设置,2) 选择project interpreter,3) 点击齿轮图标并选择add,4) 选择解析器类型并配置路径,5) 点击ok完成添加。添加解析器后,选择合适的类型和版本,配置环境变量,并利用解析器的功能提高开发效率。 在…

    2026年5月10日
    000
  • python中numpy的用法

    NumPy是Python中用于科学计算的强大库,它提供了以下功能:多维数组处理矩阵运算快速傅里叶变换(FFT)线性代数随机数生成 NumPy在Python中的强大功能 NumPy是Python中用于科学计算的一个强大且灵活的库。它提供了用于处理多维数组和矩阵的一组高效工具,是数据分析和机器学习项目的…

    2026年5月10日
    100
  • HTML文档如何工作?如何编辑HTML格式文件?

    HTML文档如何工作?如何编辑HTML格式文件?HTML文档如何工作?如何编辑HTML格式文件?HTML文档如何工作?如何编辑HTML格式文件?HTML文档如何工作?如何编辑HTML格式文件?

    浏览器解析和渲染html的过程包括:1. 解析html构建dom树;2. 结合css构建渲染树;3. 布局计算元素位置;4. 绘制像素到屏幕。编辑html可使用记事本、vs code、sublime text等文本或代码编辑器,其中vs code因语法高亮、自动补全和插件生态成为主流选择。标准htm…

    2026年5月10日 用户投稿
    000

发表回复

登录后才能评论
关注微信