matplotlib - 在两个不同的数据文件上运行相同的 IPython notebook 代码,并进行比较

标签 matplotlib ipython ipython-notebook jupyter

在对两组不同的数据进行相同分析时,是否有一种在 IPython Notebook (Jupyter) 中模块化和重用代码的好方法?

例如,我有一个笔记本,里面有很多对数据文件进行分析的单元格。我有另一个相同格式的数据文件,我想运行相同的分析并比较输出。这些选项中没有一个看起来特别吸引人:

  • 将单元格复制并粘贴到第二个笔记本。 分析代码现在重复并且更难更新。
  • 将分析代码移动到一个模块中并为这两个文件运行它。 这将失去当前生成的数字的逐个单元格格式,而只是将它们混杂在一个巨大的单元格中。
  • 将两个文件加载到一个笔记本中并并排运行分析 .这也涉及大量的复制和粘贴,并且不能很好地推广到 3 或 4 个不同的数据文件。

  • 有一个更好的方法吗?

    最佳答案

    您可以根据 IPython Demo Mode example 将演示指令添加到独立模块中。 .

    然后在笔记本中实际执行它时,每次想要进入下一个重要部分时都会调用演示对象包装器。因此,您的单元格主要由对该演示包装对象的调用组成。

    选项 2 显然是代码重用的最佳选择,它可以说是所有软件工程中的事实标准。

    我认为笔记本概念本身不能很好地扩展到 3、4、5 ......不同的数据文件。笔记本演示并不意味着是批处理容器。如果您发现自己需要对不同的数据集进行参数扫描,并希望在为每个参数组加载的不同数据之上重新运行分析(即使“参数”可能与不同的文件名一样简单),它会引发不好的代码气味。这可能意味着以“交互式”方式执行的分析水平是错误的。 “以交互方式”见证分析并同时执行批处理是两个几乎不相容的目标。一个更好的想法是单独批处理所有参数集,从任何演示的角度“离线”,然后构建一组独立函数,这些函数可以从计算和存储的批处理结果中产生可视化结果.那么 notebook 将只是一系列函数调用,每个函数调用都会同时生成所有参数集的摘要数据(其中一些可能是批处理期间选择的参数集的示例),以进行必要的比较并有意义并排显示结果数据。

    “见证”一个完整的交互式演示文稿,该演示文稿对一个参数集进行分析,然后更改一些全局变量/切换到新笔记本/在同一笔记本中运行更多单元格,以便在不同参数集上“见证”相同的演示文稿听起来很边缘对我来说没用,从某种意义上说,我无法想象这样一种情况,即使用演示文稿的模式并不比使用有针对性的摘要演示文稿更糟糕,该演示文稿首先计算所有感兴趣的参数集的结果,并将重要的结果汇总到一个比较中。

    也许我能想到的唯一案例是玩具教学演示,比如一些玩具频率数据和一系列做一些简单傅立叶分析之类的笔记本。但这正是需要将分析函数制作成辅助模块的情况,笔记本本身只是让您有选择地声明要在哪个玩具输入文件上运行笔记本。

    关于matplotlib - 在两个不同的数据文件上运行相同的 IPython notebook 代码,并进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29354050/

    相关文章:

    python - 如何中断 Linux 终端内正在运行的 ipython

    python-2.7 - 在图例中使用不同的颜色和形状 [Seaborn,Python]

    python - 如何使用 pyplot.barh() 在每个条上显示条的值

    python - 在 python 中以交互方式显示 matplotlib 中的图形

    apache-spark - 将 Spark 与 iPython Notebook 连接起来

    r - 在 Jupyter 中显示来自 R 的 ggplot2 图

    matplotlib - 在 ipython notebook 中使用 pylab 时内核忙

    ipython - 如何获取 jupyter notebook 内核状态?

    python - Python- Pyramid 和matplotlib-SVG不能超过一个 View 输出吗?

    python - pyinstaller:使用 matplotlib 构建 python exe