Pynote

Python、機械学習、画像処理について

pandas - pandas の DataFrame をマークダウン形式や tex 形式で出力する。

tabulate モジュール

tabulate モジュールを利用する。

pip install tabulate

出力形式を設定する。

import pandas as pd
from tabulate import tabulate

data = {'col_1': [3, 2, 1, 0],
        'col_2': ['a', 'b', 'c', 'd']}
table = pd.DataFrame(data)

print(tabulate(table, tablefmt='github'))
print(tabulate(table, tablefmt='latex'))
print(tabulate(table, tablefmt='html'))
|---|---|---|
| 0 | 3 | a |
| 1 | 2 | b |
| 2 | 1 | c |
| 3 | 0 | d |

\begin{tabular}{rrl}
\hline
 0 & 3 & a \\
 1 & 2 & b \\
 2 & 1 & c \\
 3 & 0 & d \\
\hline
\end{tabular}

<table>
<tbody>
<tr><td style="text-align: right;">0</td><td style="text-align: right;">3</td><td>a</td></tr>
<tr><td style="text-align: right;">1</td><td style="text-align: right;">2</td><td>b</td></tr>
<tr><td style="text-align: right;">2</td><td style="text-align: right;">1</td><td>c</td></tr>
<tr><td style="text-align: right;">3</td><td style="text-align: right;">0</td><td>d</td></tr>
</tbody>
</table>

列名を表示する。

  • headers='keys': DataFrame.columns を列名として表示する。
print(tabulate(table, tablefmt='github', headers='keys'))
|    |   col_1 | col_2   |
|----|---------|---------|
|  0 |       3 | a       |
|  1 |       2 | b       |
|  2 |       1 | c       |
|  3 |       0 | d       |

行インデックスを表示する。

  • showindex='True': 行インデックスを表示する。(デフォルト)
  • showindex='False': 行インデックスを表示しない。
print(tabulate(table, tablefmt='github', showindex=False))
|---|---|
| 3 | a |
| 2 | b |
| 1 | c |
| 0 | d |

数値のセルのアラインメント

  • numalign='right': 右寄せ
  • numalign='center': 中央寄せ
  • numalign='left': 左寄せ
import pandas as pd
from tabulate import tabulate

data = {'col_1': [1.2, 2.5, 6.7, 9.1],
        'col_2': [1, 12, 540, -12]}
table = pd.DataFrame(data)

print(tabulate(table, tablefmt='github', numalign='right'))
print(tabulate(table, tablefmt='github', numalign='center'))
print(tabulate(table, tablefmt='github', numalign='left'))
|---|-----|-----|
| 0 | 1.2 |   1 |
| 1 | 2.5 |  12 |
| 2 | 6.7 | 540 |
| 3 | 9.1 | -12 |

|---|-----|-----|
| 0 | 1.2 |  1  |
| 1 | 2.5 | 12  |
| 2 | 6.7 | 540 |
| 3 | 9.1 | -12 |

|---|-----|-----|
| 0 | 1.2 | 1   |
| 1 | 2.5 | 12  |
| 2 | 6.7 | 540 |
| 3 | 9.1 | -12 |

テキストのセルのアラインメント

  • stralign='right': 右寄せ
  • stralign='center': 中央寄せ
  • stralign='left': 左寄せ
import pandas as pd
from tabulate import tabulate

data = {'col_1': ['alpha', 'beta', 'gamma', 'omega'],
        'col_2': ['a', 'b', 'c', 'd']}
table = pd.DataFrame(data)

print(tabulate(table, tablefmt='github', headers='keys', stralign='right'))
print(tabulate(table, tablefmt='github', headers='keys', stralign='center'))
print(tabulate(table, tablefmt='github', headers='keys', stralign='left'))
|    |   col_1 |   col_2 |
|----|---------|---------|
|  0 |   alpha |       a |
|  1 |    beta |       b |
|  2 |   gamma |       c |
|  3 |   omega |       d |

|    |  col_1  |  col_2  |
|----|---------|---------|
|  0 |  alpha  |    a    |
|  1 |  beta   |    b    |
|  2 |  gamma  |    c    |
|  3 |  omega  |    d    |
|    | col_1   | col_2   |

|----|---------|---------|
|  0 | alpha   | a       |
|  1 | beta    | b       |
|  2 | gamma   | c       |
|  3 | omega   | d       |

DataFrame.to_html() を使う方法

html 形式の場合、DataFrame.to_html() を使っても html 形式で出力できる。

data = {'col_1': [3, 2, 1, 0],
        'col_2': ['a', 'b', 'c', 'd']}
table = pd.DataFrame(data)

print(table.to_html())
<table border="1" class="dataframe">
  <thead>
    <tr style="text-align: right;">
      <th></th>
      <th>col_1</th>
      <th>col_2</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th>0</th>
      <td>3</td>
      <td>a</td>
    </tr>
    <tr>
      <th>1</th>
      <td>2</td>
      <td>b</td>
    </tr>
    <tr>
      <th>2</th>
      <td>1</td>
      <td>c</td>
    </tr>
    <tr>
      <th>3</th>
      <td>0</td>
      <td>d</td>
    </tr>
  </tbody>
</table>