注目キーワード

【Python】pandas のデータフレームを表形式で出力する(to_csv、to_markdown、to_html)

Pythonを用いたデータ解析に便利なライブラリであるpandasを使って読み込み、加工したデータフレームを出力するいろんな方法を見ていきます。

インストール

pandasはインストールされているとしています。

この記事で紹介するデータフレームの画像出力を試すには matplotlib が必要になるので、インストールされていない場合には pip install matplotlib を実行するか、Google colaboratoryなどのmatplotlibがインストールされている環境を利用してください。

またいずれの場合も、matplotlibの日本語化に対応するために pip install japanize-matplotlib を実行してください。

データの準備

Yahooのスポーツナビから取ってきたセ・リーグの順位表を使ってみます(ページはこちらです。執筆時の情報を使っています。表をコピーしてきてtsvファイルとして整形しました)。

表を to_csv() を使って別ファイルに出力・保存する

作成したデータを読み込み、主要な部分だけを抽出してから、別のファイルに保存してみました。

サンプルソース

サンプルのコードです。

まず先頭でpandasライブラリを読み込みました。

次に作成したサンプルデータjuni.tsvを読み込みます。ファイルはタブで区切られているので、区切り文字として「\t」を指定しました。また順位(1位から6位)を index に設定しました。その後、読み込んだファイルを出力して確認しました。

更にニュースなどでよく見る部分だけを抽出した df_main を作成し、出力して確認しました。
最後に新しく作った df_main をCSVに出力するために、to_csv() を利用して出力しました。

実行結果

実行結果を図に示します。

データフレームを読み込み、必要な部分だけを抽出してprintした

出力された juni-main.csv ファイルを以下の図に示します。

出力したCSVファイルの中身

作成したデータフレームが表として出力・保存できていることが分かります。

データフレームを表として出力する(markdown、HTML、画像)

作成してきた表を読み込み、いろんな形式の表で出力してみましょう。

マークダウン(markdown)の表で出力する

markdownはGithubや様々なサイトで利用できるテキストのフォーマットです。解析して作ったデータフレームなどをmarkdownに出力できると、応用範囲が広そうです。データフレームをmarkdownの表形式で出力するためには、to_markdown() を利用します。

markdown出力のサンプルコード

サンプルコードを示します。

markdown出力の実行結果

markdown形式のテーブルが出力されていることが分かります。

markdown形式で出力した様子

HTMLの表(table)で出力する

markdownの表と似た形で、Webサイトなどに利用できるHTMLの表としても出力できます。この場合には to_html() を利用します。

HTMLで表を出力するサンプルソース

サンプルコードを示します。

HTMLで表を出力するサンプルソースの実行結果

HTMLタグでデコレーションされたテーブルが表示されることが分かります。

HTML形式で出力した様子

matplotlibを用いて表を画像で出力する

matplotlibはpandasとあわせて使われることの多いグラフ描画ライブラリです。matplotlibにもデータフレームなどのテーブルデータを表示する手法が用意されています。細かい設定がいくつかありますが、サンプルコードで例を見ていきましょう。

スポンサーリンク

matplotlibを用いて画像出力するサンプルソース

サンプルの実装を示します。

まずはじめに、pandas、matplotlibを利用できるようにした上で、日本語対応を行います。

データの用意までは他のスクリプトと同じです。

最後に画像の処理です。それぞれ次のような処理を行っています。

  • figure() を利用して、6:3の比率のグラフ描画領域を作成します。
  • gca() を利用してグラフ描画領域の上の描画軸を取得します。こちらに具体的なグラフを描画します。
  • table()を利用してデータフレームの内容を描画します。値には df_main の中身のデータを取得してきたもの(values)、列のラベルにはデータフレームの列の名前を、位置配置は中心(center)にします。最後のbboxは描画範囲を全体(0から1まで)に設定します。
  • 保存する前に、tight_layout()を使って描画を余白いっぱいにします。
  • 最後にsavefigを利用して表を保存します。

matplotlibを用いて画像出力する実行結果

結果を確認します。

matplotlibで出力した画像

それらしい表が得られたと思います。matplotlibにも細かなパラメータがいくつかありますが、いろいろ変えながら実行結果を確認していくと、動作の雰囲気がよく分かるのではないかと思います。

データフレームを出力する機能はデータ処理の前後や確認作業を行う場合など、多くの場面で必要になります。ぜひいろんな出力方法を比較して、使いやすそうなものを使ってみてくださいね