当前位置: 首页 > 科技观察

使用JupiterNotebooks提高开发效率的4个工具

时间:2023-03-13 05:16:03 科技观察

Notebooks通常被认为会促进不良的编码实践,因为它们难以进行版本控制,通常依赖于以特定顺序运行的单元格以返回正确的结果,并且测试和调试可能很棘手.但是当涉及到探索性数据分析和初始机器学习模型开发等任务时,jupiternotebooks仍然是大多数数据科学家的首选。根据代码可视化输出(例如图表和表格)并将丰富的注释添加到分析中的能力是任何其他工具都无法复制的。虽然笔记本仍然是一个如此受欢迎的选择,但值得研究一些可用的选项来克服一些可能使笔记本代码不那么健壮的问题。在本文中,我将通过代码示例简要介绍4个工具,这些工具为某些问题提供了解决方案。其中包括:Nbdime更好的版本控制nbQA运行lintJupyter-nbrequirements管理依赖项nbval以进行验证Nbdime更好的版本控制使用Github等工具对笔记本进行版本控制可能很困难。版本控制工具不能很好地呈现差异,因为它们不理解典型笔记本的逻辑结构。这会使跟踪更改和合并代码变得困难。Nbdime是一种旨在通过提供更丰富的视觉差异来解决此问题的工具,这些差异可以轻松查看同一笔记本的不同版本之间的变化。.Nbdime可以通过pip安装。pipinstallnbdime这应该会自动安装并启用扩展。如果安装不正确,可以使用以下命令手动安装,添加标志来确定--system(系统范围)、--user(当前用户)、--sys-prefix(当前虚拟环境)安装。nbdimeextensions--enable[--sys-prefix/--user/--system]安装完所有内容后,如果您打开jupiternotebook,您的工具栏中现在应该有以下新图标。我创建了一个笔记本来演示nbdime的功能,它在波士顿房价数据集上训练了一个简单的线性模型。新图标现在应该在笔记本的工具栏上可用,形成nbdime的Web视图功能。此视图提供了对笔记本所做更改的丰富可视化表示。单击git按钮将显示上次提交和当前保存的笔记本版本之间的差异。单击看起来像钟面的图标将显示最新检查点和当前保存的版本之间的差异。我将对笔记本进行一些更改,并使用Web视图查看与上次提交的差异。在笔记本中,我改变了我使用的模型并对残差图做了一个小改动。让我们看看nbdime提供的结果的差异。从下图中可以看出,nbdime逐行、逐个单元地显示自上次提交以来发生的变化。它甚至显示了每个单元格的输出如何变化,包括图表。nbQA代码检查Linting是检查代码质量的过程。linting工具扫描代码并检查常见的样式错误。例如,Pythonlint通常会检查不符合广泛使用的样式指南(如Pep8)的代码。NbQa是一种工具,可让您在jupiternotebook上运行任何标准的pythonlinter。通过此工具可以访问以下代码:pylint、black、autoflake、check-ast、doctest、flake8、mypy和yapf。要安装,只需运行以下程序。pipinstallnbqa让我们在我最近创建的笔记本上运行pylint,这是一种常用的pythonlinter。为此,您需要在命令行中运行以下命令。$nbqapylintdataframe_basics.ipynb这给了我一个标准的pylint输出,它突出显示了代码中的错误。使用jupyter-nbrequirements管理依赖项您使用笔记本完成的每个项目可能需要一组不同的依赖项。传统上,这些是使用虚拟环境在JupiterNotebook之外进行管理的。Jupyternbrerequirements是一种工具,可让您管理依赖项并创建隔离的优化环境,所有这些都在笔记本中进行管理。要开始使用pip安装库,并使用下面显示的命令启用笔记本扩展。$pipinstalljupyter-nbrequirements$jupyternbextensioninstall--user--pyjupyter_nbrequirements您可以使用单元魔术命令或使用将显示在笔记本顶部的UI在笔记本中安装库。要使用cellmagic安装像pandas这样的库,只需在笔记本单元格中输入以下内容。%depaddpandas--version">=0.24.0"使用nbval进行验证如本文前面所述,笔记本最常用于模型的探索性分析和初始开发。存储这种类型的分析和初始项目开发通常很有用,既可以用于文档目的,也可以用于将来可能基于这项工作的发现进行构建。pytest插件nbval是用于验证存储的笔记本的有用工具。Nbval将自动运行笔记本中的每个单元格,并检查当前输出是否与上次保存版本的.ipynb文件中存储的输出相匹配。这可以检查底层源代码是否没有任何变化,从而验证原始分析或实验的结果仍然可靠。要使用此工具,请先通过以下命令执行pip安装。可以通过运行以下命令对目录中包含的所有文件执行pipinstallnbval测试。py.test--nbval或在特定笔记本上运行这行代码。我正在测试两台现有的笔记本电脑。第一个运行没有错误并给出如下输出。下面给出了笔记本电脑测试失败的示例。尽管笔记本通常用于探索性分析和初始模型开发,而不是生产代码,但它们仍应被视为重要的工作存储。最初的实验和分析是对过去结果的有用记录,应该可以在以后返回到笔记本上来构建你的工作。因此,有一些值得探索的工具可以帮助使在笔记本中编写的代码更加健壮和可重现。本文介绍了四种工具,可帮助您改进notebook中的代码并提高可重用性。有关可重现数据科学代码的更多提示,请参阅下面我之前的帖子。