2022年 11月 9日

用Python轻松制作漂亮的表格

用Python轻松制作漂亮的表格
Python太有用而且很方便

图表可以用matplotlib轻松制作,数值计算只要有numpy就行。

最近,Python被广泛用于机器学习系统的研究,甚至还能制作游戏。

我突然想知道:“是否可以用Python来制作图表而不是表格?”

这个时候,我在想“用Python可以制图,是不是也可以制作表格呢?”突然产生了这样的疑问。

matplotlib

答案就在本文。

显然,matplotlib似乎具有创建表的功能。

代码看起来就是像下面的这样。

import matplotlib.pyplot as plt
import pandas as pd

if __name__ == '__main__':
    data = {
        'linux': [1.2, 2.2, 3.1, '-', 2.0, 1.0, 2.1, 3.5, 4.0, 2.0, ],
        'linuxmi': [5.2, 6.7, 7.9, 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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

创建表有点麻烦,并且更改表的设计并不容易。

要改变设计,如下代码:

import matplotlib.pyplot as plt
import pandas as pd

if __name__ == '__main__':
    data = {
        'Linux': [29, 23, 29, 20, 25, 23, 26],
        'linuxmi': [26, 23, 29, 28, 24, 22, 29],
    }

    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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

看起来像这样。

有目的要求,设计就麻烦了。

于是,就以matplotlib的table函数为基础,制作一个能够简单地制作漂亮表格的库。

我也想尝试PyPI,所以我也尝试了pip install。

pytable

这是一个简单的名称,但是我现在创建了它。

pip install pytab

可以安装。

本来想要pytable但是因为之前约好了所以妥协。

(希望你能从暂时没有更新的PyPI中删除吧。)

然后像以下那样指定自变量,制作出简单且漂亮的表格。

import pytab as pt

if __name__ == '__main__':
    data = {
        'Linux': [29, 23, 29, 20, 25, 23, 26],
        'LinuxMi': [26, 23, 29, 28, 20, 22, 29],
    }

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

    pt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

其他详细的表格可以自定义,感兴趣的朋友可以自己测试下。