データをtabulateで簡単に表形式で出力してみよう
tabulate
tabulate は表形式のデータをきれいに画面表示するための拡張ライブラリです。
地味なモジュールですがメールやブログ、Wiki に貼り付けるときにとても便利です。
tabulate の使用例としては次のものがあります。
手間をかけずに小さなテーブルを表示する(文字列に変換):
関数を1回呼び出すだけで、フォーマットはデータ内容によって導出されます。
軽量のプレーンテキストマークアップのための表形式データの作成:
さらに編集したり何かで変換するのに適した複数の出力形式をサポート
テキストと数値の混合データを読みやすく表現
スマートな列の配置、構成可能な数値のフォーマット、小数点による配置
インストール
tabulate は拡張モジュールなので次のようにインストールします。
code: bash
$ pip install tabulate
tabulate のサポートするデータ型
次の表形式のデータ型がサポートされています。
リストのリストまたは別の反復可能な反復可能オブジェクト
リストまたは別の反復可能な辞書(列としてのキー)
イテラブルの辞書(列としてのキー)
2次元NumPy配列
NumPyレコード配列(列としての名前)
pandas.DataFrame
使用方法
code: IPython
import numpy as np
from tabulate import tabulate
table = tabulate(data, headers=teams_list)
print(table)
code: zsh
% python using_tabulate.py
Dallas Chicago Los Angelos
-------- --------- -------------
1 2 1
0 1 0
2 4 1
データにヘッダが含まれている場合は、次のようにすることもできます。
また、showindex='always' を与えると行のインデックスが表示されるようになります。
code: using_tabulate2.py
import numpy as np
from tabulate import tabulate
table = tabulate(data, headers='firstrow', showindex='always'))
print(table)
code: zsh
% python using_tabulate2.py
Dallas Chicago Los Angelos
-- -------- --------- -------------
0 1 2 1
1 0 1 0
2 2 4 1
tabulate がサポートする表形式
tabulateがサポートする表形式は、tabulate_formats プロパティーに格納されています。
code: IPython
In 7: tabulate.tabulate_formats ['fancy_grid',
'github',
'grid',
'html',
'jira',
'latex',
'latex_booktabs',
'latex_raw',
'mediawiki',
'moinmoin',
'orgtbl',
'pipe',
'plain',
'presto',
'psql',
'rst',
'simple',
'textile',
'tsv',
'youtrack']
Qiitaでは表の書式に github のものを採用しています。
Scapboxでは tsv を指定すると表の記述が楽になります。
code: using_tabulate3.py
import numpy as np
from tabulate import tabulate
table = tabulate(data, headers=teams_list, tablefmt=fmt)
print(f'-------------- table_format: {fmt} ---------------')
print(table)
code: zsh
% python using_tabulate3.py |more
-------------- table_format: plain ---------------
Dallas Chicago Los Angelos
1 2 1
0 1 0
2 4 1
-------------- table_format: fancy_grid ---------------
╒══════════╤═══════════╤═══════════════╕
│ Dallas │ Chicago │ Los Angelos │
╞══════════╪═══════════╪═══════════════╡
│ 1 │ 2 │ 1 │
├──────────┼───────────┼───────────────┤
│ 0 │ 1 │ 0 │
├──────────┼───────────┼───────────────┤
│ 2 │ 4 │ 1 │
╘══════════╧═══════════╧═══════════════╛
-------------- table_format: github ---------------
| Dallas | Chicago | Los Angelos |
|----------|-----------|---------------|
| 1 | 2 | 1 |
| 0 | 1 | 0 |
| 2 | 4 | 1 |