2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

JupyterLabでMarkdown出力する時のTips

Last updated at Posted at 2021-10-25

何回もググるのが嫌になったので、メモしておく。

IPython Notebook を Markdown に変換する

JupyterLab のメニューから、File > Export Notebook As... > Markdown

matplotlib inline で図を出力している場合も、その図は自動的に png に変換され、markdown に埋め込まれている状態になっている。
この時は png も含めて全部 zip でダウンロードされる。

pandas の DataFrame を Markdown に変換するけど JupyterLab でも綺麗に出力する

pandas の to_markdown()tabulate が必要なので、先にインストールしておく。

import pandas as pd
from IPython.display import display, Markdown

df = pd.DataFrame(何かのデータ)
display(Markdown(df.to_markdown()))

JupyterLab では普通に DataFrame を出力したように見えるけど、
Markdown に変換してダウンロードしたファイルをみると、Markdown のテーブルになっている。
作られる Markdown のテーブルはデフォルトで PHP Markdown Extra って奴かな。to_markdown() は tabulate にパラメータを渡せて、tabulate は物凄く高機能なんで、やろうとすればどんなことでも出来るだろう。(JupyterLab が対応しているかは別)
普通に使う分には、何も考えず to_markdown() するだけで十分。

Markdown にいちいち値を手書きするのがメンドイので、値を参照して埋め込みたい

Jupyter Notebook には python markdown という便利プラグインがあったけど、JupyterLab には残念ながら対応してない。みんな怒っている。(みんなというのは語弊)
だから手書きしなきゃいけない。

import pandas as pd
from IPython.display import display, Markdown

df = pd.DataFrame(何かのデータ)  # user_id というカラムがあるとする
display(Markdown(f'''
* データのサイズは {df.shape[0]} です
* ユーザーIDのユニーク数は {df.user_id.nunique()} です
'''))

Python の f-Strings は物凄い強力で、関数でも何でも評価してくれちゃうので、逆にこっちの方が便利かもしれない。

上の2つをまとめると

こんな関数を作っておけば更に便利かもしれない。(適当)

from typing import Union
import pandas as pd
from IPython.display import display, Markdown

def show_it(data: Union[str, pd.DataFrame]) -> None:
    if isinstance(data, pd.DataFrame):
        display(Markdown(data.to_markdown())
    else:
        display(Markdown(data.strip()))
    return

Markdown から code block を取り除きたい

JupyterLab で変換した Markdown は code block がそのまま残されてるけど、レポート(PDF)にするには邪魔だったり、行の長さを考えなきゃいけなかったり、ページの切れ目を考えなきゃいけなかったりする。

いっそのこと、全部消しちゃえば良い。

JupyterLab の変換時に頑張ったり、pandoc の filter で頑張ったりも出来るだろうけど、sed で一発だ。

>  sed -i.orig '/^```/,/^```/d' sample.md

一応 backup として元の Markdown を sample.md.orig というファイル名で残す場合。未練が無い場合は -i で良い。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?