複数のNotebookファイルを1つにする方法

複数のNotebookファイルを1つにする方法

PythonやRでデータ分析をするとき、JupyterなどのNotebook上でコーディングしている人もいることでしょう。

別々に作成したNotebookを1つに結合したい、と思ったことのある人もいることでしょう。

例えば、JupyterのNotebook全体をコピペするという方法もあります。他には、そのためのPythonのライブラリー「nbmerge」や「nbformat」を使う、という手もあります。

主な方法は3つです。

  • セルのコピーと貼り付け
  • nbmergeツールを使用する
  • nbconvertでどうにかする

今回は、「複数のNotebookを1つにする方法」です。

セルのコピーと貼り付け

最も直接的な方法です。

2つのNotebookを1つにする例を説明します。

 

コピー元の片方のNotebookに移動し……

全てのセルを選択(Edit > Select All Cells)します。

 

その状態で、コピー(Edit > Copy Cells)します。

 

これで、Notebook全体のセルがコピーされます。

 

その後、張り付ける先のNotebookに移動します。

その末尾まで移動し、末尾に貼り付け(Edit > Paste Cells Below)をします。

 

nbmergeツールを使用する

nbmergeは、Jupyter Notebookファイル(.ipynb)を結合するためのコマンドラインツールです。

 

nbmergeを使用するには、そのPythonライブラリーがインストールされている必要があります。

まだインストールされていない方は、インストールしましょう。

以下、コードです。

pip install nbmerge

 

では、2つのNotebookを1つにする例で説明します。

結合前のNotebookを、以下の2つとします。

  • notebook1.ipynb
  • notebook2.ipynb

同じディレクトリに置くことを忘れないでください。

結合後のNotebookを、以下とします。

  • merged.ipynb

このNotebookは実行後に新たに作成されます。

以下、コードです。コマンドプロンプト上で実行してください。

nbmerge notebook1.ipynb notebook2.ipynb > merged.ipynb

 

これだけです。

 

nbconvertでどうにかする

Notebook(.ipynbファイル)を他の形式に変換するための、Pythonライブラリーがあります。

nbconvertです。例えば、以下のような形式に変換することができます。

  • HTML
  • LaTeX
  • PDF
  • ReStructuredText
  • Markdown
  • Python script

使い方を工夫すると、複数のNotebookを1つに結合することができます。

 

nbconvertを使用するには、そのPythonライブラリーがインストールされている必要があります。

まだインストールされていない方は、インストールしましょう。

以下、コードです。

pip install nbformat

 

では、2つのNotebookを1つにする例で説明します。

nbmergeの場合と同じく、

結合前のNotebookを、以下の2つとします。

  • notebook1.ipynb
  • notebook2.ipynb

同じディレクトリに置くことを忘れないでください。

結合後のNotebookを、以下とします。

  • merged.ipynb

このNotebookは実行後に新たに作成されます。

以下、コードです。

import nbformat as nbf

# 2つのNotebookファイルを読み込みます。
ntbk1 = nbf.read('notebook1.ipynb', nbf.NO_CONVERT)
ntbk2 = nbf.read('notebook2.ipynb', nbf.NO_CONVERT)

# 新しいNotebookを作成し、2つのNotebookのセルを結合します。
merged_ntbk = nbf.v4.new_notebook()
merged_ntbk.cells = ntbk1.cells + ntbk2.cells

# 結合したNotebookを新しいファイルに書き出します。
with open('merged.ipynb', 'w') as f:
    nbf.write(merged_ntbk, f)

 

先ほどのmergedの方がややシンプルですが、開発が止まっているのが気になるところです。

ちなみに、nbconvertは今現在(2023年7月25日現在)開発は続けられ進化中です。

 

まとめ

今回は、「複数のNotebookを1つにする方法」を説明しました。

主な方法は3つです。

  • セルのコピーと貼り付け
  • nbmergeツールを使用する
  • nbconvertでどうにかする

やる必要がありましたら、試してみてください。