21
16

More than 3 years have passed since last update.

Pythonで簡単にお洒落な表を作成してみない?

Last updated at Posted at 2020-05-14

Pythonって便利

Pythonって便利です.
グラフはmatplotlibで簡単に作れるし,数値計算もnumpyがあれば事足りる.
最近は機械学習系の研究に使われたり,なんならゲームなんかも作れちゃうPython.

そんなとき,私は「Pythonで図は作れるけど表も作れるんだろうか?」とふと疑問を抱いた.

matplotlib

答えはここにあった.
どうやらmatplotlibには表を作成するための関数があるらしい.
書くならばこんな感じ.

import matplotlib.pyplot as plt
import pandas as pd


if __name__ == '__main__':
    data = {
        'a': [1.0, 2.1, 3.5, '-', 2.0, 1.0, 2.1, 3.5, 4.0, 2.0, ],
        'b': [5.7, 6.1, 7.2, 8.3, 1.2, 5.7, 6.1, 7.2, 8.3, '-', ],
        }

    df = pd.DataFrame(data)

    fig, ax = plt.subplots(figsize=(3, 3))

    ax.axis('off')
    ax.axis('tight')

    ax.table(cellText=df.values,
             colLabels=df.columns,
             bbox=[0, 0, 1, 1],
             )

    plt.show()

pytable

表作るまでが少し面倒くさいし,表のデザインを変えるのも簡単にはいかない.
デザインを変えるには,

import matplotlib.pyplot as plt
import pandas as pd


if __name__ == '__main__':
    data = {
        'Tokyo': [27, 23, 27, 24, 25, 23, 26],
        'Osaka': [26, 23, 27, 28, 24, 22, 27],
    }

    df = pd.DataFrame(data)

    fig, ax = plt.subplots(figsize=(3, 3))

    ax.axis('off')
    ax.axis('tight')

    tb = ax.table(cellText=df.values,
                  colLabels=df.columns,
                  bbox=[0, 0, 1, 1],
                  )

    tb[0, 0].set_facecolor('#363636')
    tb[0, 1].set_facecolor('#363636')
    tb[0, 0].set_text_props(color='w')
    tb[0, 1].set_text_props(color='w')

    plt.show()

こんな感じにする必要がある.
pytable

ちょっとわざとらしいが,やっぱりデザインを凝るのならば面倒くさい.
そこで,このmatplotlibのtable関数をもとに,簡単にお洒落な表を作れるライブラリを作ろう,となった.
ついでにPyPIにも挑戦してみたかったので,pip installもできるようにもしてみた.

pyTable

なんともシンプルな名前だが,とりあえず作成してみた.
もちろんPyPIにも登録済みなので,

$ pip install pytab

でインストール可能だ.
本当はpytableにしたかったけど先約が居たので妥協.
(しばらく更新されていないやつPyPIから消して欲しいよね.)

そして以下のように引数を指定して,簡単かつお洒落な表が作れる.

import pytab as pt


if __name__ == '__main__':
    data = {
        'Tokyo': [27, 23, 27, 24, 25, 23, 26],
        'Osaka': [26, 23, 27, 28, 24, 22, 27],
    }

    pt.table(
        data=data,
        th_type='dark',
        table_type='striped'
    )

    pt.show()

pytable

その他細かく表を定義できるが,簡易なドキュメントは以下にまとめたので,気になった方は見て欲しい.
pyTable ドキュメント

Source

Github: HiroshiARAKI/pytable: pytable is the library to plot table easily.
PyPI: pytab · PyPI

Documentation: pyTable ドキュメント

あとがき

ソースコードを見るとわかるが,そんな大したコードは書いていません.
これでライブラリなんて,よくそんなに堂々と名乗れるな,と自分でも思う.
ただmatplotlibをラップしただけだろ!と言われると反論できません.笑

まあでも,まだまだ発展途上なライブラリなので,今後さらに利便性を上げていく予定です(たぶん).
気になった方は,pyTable是非使ってみてください!!

21
16
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
21
16