「CUIで出力結果を表形式にしたい」
「DataFrame (データフレーム)をそのままhtmlタグに変更したい」
「Pythonで印刷用のデータを出力したい」
このような場合には、tabulateが利用できます。
この記事では、tabulateについて解説しています。
本記事の内容
- tabulateとは?
- tabulateのシステム要件
- tabulateのインストール
- tabulateの動作確認
それでは、上記に沿って解説していきます。
tabulateとは?
tabulateは、データを表形式で綺麗に表示するPythonライブラリです。
GUIではなくCUIにおける表示の話となります。
言葉で説明するより、見た方が早いです。
+----------+----------+---------------------+ | Planet | R (km) | mass (x 10^29 kg) | +==========+==========+=====================+ | Sun | 696000 | 1.9891e+09 | +----------+----------+---------------------+ | Earth | 6371 | 5973.6 | +----------+----------+---------------------+ | Moon | 1737 | 73.5 | +----------+----------+---------------------+ | Mars | 3390 | 641.85 | +----------+----------+---------------------+
tabulateを使えば、このような表示がCUIで可能になります。
CUIしか利用できない環境において、活躍する機能と言えます。
また、出力形式を選択できます。
html形式にすれば、table、tr、tdのタグ形式で出力されます。
latex形式にすれば、そのまま印刷用データにもなります。
以上、tabulateについての説明でした。
次は、tabulateのシステム要件を確認します。
tabulateのシステム要件
現時点(2021年10月)でのtabulateの最新バージョンは、0.8.9となります。
この最新バージョンは、2021年2月22日にリリースされています。
サポートOSに関しては、以下を含むクロスプラットフォーム対応です。
- Windows
- macOS
- Linux
サポート対象となるPythonのバージョンは、以下となります。
- Python 2.7
- Python 3.5
- Python 3.6
- Python 3.7
- Python 3.8
- Python 3.9
ちょっとサポート範囲が広すぎですね。
以下は、Python公式開発サイクルになります。
バージョン | リリース日 | サポート期限 |
3.6 | 2016年12月23日 | 2021年12月23日 |
3.7 | 2018年6月27日 | 2023年6月27日 |
3.8 | 2019年10月14日 | 2024年10月 |
3.9 | 2020年10月5日 | 2025年10月 |
3.10 | 2021年10月4日 | 2026年10月 |
Python公式開発サイクルと比較すると、もう古いPythonは切り捨ててもよいと思います。
Python 2はもちろん、Python 3.5もです。
ライブラリによっては、Python 3.6のサポートを辞めているモノもあります。
なお、Pythonのアップグレードについては以下の記事で説明しています。
まとめると、tabulateのシステム要件はほぼありません。
Pythonが動けば、基本的には問題ないでしょう。
以上、tabulateのシステム要件を説明しました。
次は、tabulateをインストールします。
tabulateのインストール
検証は、次のバージョンのPythonで行います。
>python -V Python 3.9.7
まずは、現状のインストール済みパッケージを確認しておきます。
>pip list Package Version ---------- ------- pip 21.3 setuptools 58.2.0
次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。
python -m pip install --upgrade pip setuptools
では、tabulateのインストールです。
tabulateのインストールは、以下のコマンドとなります。
pip install tabulate
インストールは、一瞬で終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。
>pip list Package Version ---------- ------- pip 21.3 setuptools 58.2.0 tabulate 0.8.9
依存するパッケージは、ゼロです。
よって、どんな環境にでもtabulateを気軽に導入できます。
以上、tabulateのインストールについて説明しました。
最後は、tabulateの動作確認を行います。
tabulateの動作確認
tabulateの動作確認を行うサンプルコードです。
Python APIとして利用しています。
from tabulate import tabulate table = [["Sun", 696000, 1989100000], ["Earth", 6371, 5973.6], ["Moon", 1737, 73.5], ["Mars", 3390, 641.85]] print(tabulate(table, headers=["Planet", "R (km)", "mass (x 10^29 kg)"], tablefmt="grid"))
上記コードを実行した結果は、以下。
「tabulateとは? 」で示したテーブル表示は、以下と同じです。
+----------+----------+---------------------+ | Planet | R (km) | mass (x 10^29 kg) | +==========+==========+=====================+ | Sun | 696000 | 1.9891e+09 | +----------+----------+---------------------+ | Earth | 6371 | 5973.6 | +----------+----------+---------------------+ | Moon | 1737 | 73.5 | +----------+----------+---------------------+ | Mars | 3390 | 641.85 | +----------+----------+---------------------+
「tablefmt」の値により、表の表現方法を変えることが可能です。
「tablefmt=”presto”」の場合
Planet | R (km) | mass (x 10^29 kg) ----------+----------+--------------------- Sun | 696000 | 1.9891e+09 Earth | 6371 | 5973.6 Moon | 1737 | 73.5 Mars | 3390 | 641.85
「tablefmt=”html”」の場合
<table> <thead> <tr><th>Planet </th><th style="text-align: right;"> R (km)</th><th style="text-align: right;"> mass (x 10^29 kg)</th></tr> </thead> <tbody> <tr><td>Sun </td><td style="text-align: right;"> 696000</td><td style="text-align: right;"> 1.9891e+09</td></tr> <tr><td>Earth </td><td style="text-align: right;"> 6371</td><td style="text-align: right;"> 5973.6 </td></tr> <tr><td>Moon </td><td style="text-align: right;"> 1737</td><td style="text-align: right;"> 73.5 </td></tr> <tr><td>Mars </td><td style="text-align: right;"> 3390</td><td style="text-align: right;"> 641.85 </td></tr> </tbody> </table>
現状では、以下のフォーマットを選択可能です。
plain | simple | github | grid | fancy_grid |
pipe | orgtbl | jira | presto | pretty |
psql | rst | mediawiki | moinmoin | youtrack |
html | unsafehtml | latex | latex_raw | latex_booktabs |
latex_longtable | textile | tsv |
以上、tabulateの動作確認の説明でした。