【问题标题】:Execution order of jupyter notebook cellsjupyter notebook单元格的执行顺序
【发布时间】:2017-09-08 02:09:55
【问题描述】:

我正在用 jupyter notebook 做一个新的数据分析项目,我对 notebook 单元格的顺序感到困惑。

我首先导入 pandas 并将 csv 文件作为数据读取,所以我的第一个单元格如下所示:

In [1]:

import pandas as pd
data = pd.read_csv('thanksgiving.csv', encoding='Latin-1')
print(data.head(5))

我想打印出数据框的列名:

In [2]:
data.columns

然后我意识到在第一个单元格中,我应该使用 data.head(5) 而不是 print(data.head(5)),因为 print 函数不会以正确的格式打印数据帧。

所以我回到第一个单元格,修改并再次执行它。然后它从: 在 [1] 到 [3] 中。 2 个单元格现在看起来像:

In [3]: ......
In [2]: ......

更具体地说,单元格的顺序搞砸了。 恐怕这会使我项目的读者感到困惑。在这个问题上是否有一个被广泛接受的法规?或者我只需要特别注意避免在开始时重新运行单元格?

【问题讨论】:

  • 在 jupyter notebook 中,您可以按任何顺序运行任何单元格。如果你想要一个干净的运行 - 只需Kernel -> Restart & Run All

标签: python jupyter-notebook


【解决方案1】:

Jupyter 笔记本只能这样工作。

如果您修改了笔记本中的任何单元格,那么您还必须重新运行其后续单元格。这将使单元格再次升序。

在您的示例中,当单元格看起来像这样时,由于前面的某些单元格发生了一些变化,因此编号为 2 的单元格应该再次执行。

In [3]: ......
In [2]: ......

运行单元格 2 后,笔记本将如下所示。

In [3]: ......
In [4]: ......

【讨论】:

    【解决方案2】:

    请始终在共享之前从上到下重新运行您的笔记本。将此作为生活的规则。因为即使您按顺序重新运行几个单元格,仍然可能发生未知的更改。

    如果我们有

    In [1]: ......
    In [47]: ......
    In [46]: ......
    In [4]: ......
    

    如果我重新运行 46 和 47 以“按顺序”运行并不重要。在执行 4 和 46 之间仍有 42 个操作(未知单元执行)!因此,其他人不可能理解发生了什么,因为可以更改该单元格的代码。因此,如果您在共享前重新运行,您将不会感到头疼。

    In [1]: ......
    In [2]: ......
    In [3]: ......
    In [4]: ......
    

    【讨论】:

      最近更新 更多