Python

pandas DataFrameの整形表示

公開日:2021-08-14 更新日:2023-06-05

pandasをよく使うのですが、記事内で出力結果等を貼り付けると、表示が崩れてしまうことがあります。

そんなときはtabulateというライブラリを使うと便利です。

テストプログラム

from tabulate import tabulate
import pandas as pd
from pprint import pprint

df = pd.read_csv('small_category.csv', encoding='utf-8-sig')
br = '\\n'

print(br + 'print'.center(20, '=') + br)
print(df.head())

print(br + 'pprint'.center(20, '=') + br)
pprint(df.head())

print(br + 'tabulate psql'.center(20, '=') + br)
print(tabulate(df.head(), headers='keys',
               tablefmt='psql',
               numalign='right',
               stralign='left', showindex=False))

print(br + 'tabulate simple'.center(20, '=') + br)
print(tabulate(df.head(), headers='keys',
               tablefmt='simple',
               numalign='right',
               stralign='left', showindex=False))

----------出力----------

=======print========

     Id   Type  mediumId  largeId         Name
0    50  small        66       10  ソーセージ・ウインナー
1  1491  small        67       10          生ハム
2  1492  small        67       10          鶏ハム
3   321  small        67       10       その他のハム
4    49  small        68       10         ベーコン

=======pprint=======

     Id   Type  mediumId  largeId         Name
0    50  small        66       10  ソーセージ・ウインナー
1  1491  small        67       10          生ハム
2  1492  small        67       10          鶏ハム
3   321  small        67       10       その他のハム
4    49  small        68       10         ベーコン

===tabulate psql====

+------+--------+------------+-----------+-------------+
|   Id | Type   |   mediumId |   largeId | Name        |
|------+--------+------------+-----------+-------------|
|   50 | small  |         66 |        10 | ソーセージ・ウインナー |
| 1491 | small  |         67 |        10 | 生ハム         |
| 1492 | small  |         67 |        10 | 鶏ハム         |
|  321 | small  |         67 |        10 | その他のハム      |
|   49 | small  |         68 |        10 | ベーコン        |
+------+--------+------------+-

----------+-------------+

==tabulate simple===

  Id  Type      mediumId    largeId  Name
----  ------  ----------  ---------  -----------
  50  small           66         10  ソーセージ・ウインナー
1491  small           67         10  生ハム
1492  small           67         10  鶏ハム
 321  small           67         10  その他のハム
  49  small           68         10  ベーコン

tabulate simpleが綺麗かな?と思いました。

Twitter Share