Pandas データフレーム テーブルを PNG として保存

Salman Mehmood 2023年6月21日
  1. Pandas データフレーム テーブルを PNG 画像に変換する際の問題
  2. Matplotlib を使用して Pandas データフレーム テーブルを PNG イメージに変換する
  3. Plotly と Kaleido を使用して Pandas データフレーム テーブルを PNG イメージに変換する
Pandas データフレーム テーブルを PNG として保存

この記事の主な目的は、データフレームをテーブルに変換し、Pandas で PNG 画像として保存する方法を示すことです。 また、Pandas データフレーム テーブルを PNG 画像に変換するときに直面する問題についても学びます。

Pandas データフレーム テーブルを PNG 画像に変換する際の問題

データの処理と操作は、このテクノロジーの時代に非常に重要であり、その規模が途方もない時代に大幅に増加しています。 これには、データを保存して操作できるようにするためのさまざまな方法と実践が必要です。

Pandas は、ユーザーがさまざまな方法でデータを操作および分析できるようにすることを目的とした Python モジュールです。 時間の経過とともに非常に人気が高まっており、驚異的な速度で人気を博し続けているため、Python でも同じことが当てはまります。

Dataframe は、表形式のデータを処理するために最も広く使用されているツールの 1つであり、大規模なデータの整理に非常に役立ちます。 PNG 画像のように、生成されたテーブルを視覚的な状態で保存する必要がある場合があります。

次のコードを検討してください。

import pandas as pd

df = pd.DataFrame()
df["date"] = ["2016-04-01", "2016-04-02", "2016-04-03", "2016-04-03", "2016-04-03"]
df["calories"] = [2200, 2100, 1500, 2200, 2100]
df["sleep hours"] = [8, 7.5, 8.2, 3, 4]
df["gym"] = [True, False, False, True, True]

print(df)

出力:

         date  calories  sleep hours    gym
0  2016-04-01      2200          8.0   True
1  2016-04-02      2100          7.5  False
2  2016-04-03      1500          8.2  False
3  2016-04-03      2200          3.0   True
4  2016-04-03      2100          4.0   True

次の図は、毎日のカロリー摂取量、睡眠に費やした時間数、運動に費やした合計時間を記録した表を示しています。

ここで挙げた例は比較的短いものですが、データが大規模な場合は、(要件により) テーブルを画像に変換して、コードとは別に表示したり、他の処理のために表示したりすることが適切な場合があります。

この問題を解決するには、いくつかの方法を使用できます。その一部を次のリストに示します。

Matplotlib を使用して Pandas データフレーム テーブルを PNG イメージに変換する

pandas モジュールで利用できる多くの機能の 1つで、作成したテーブルを Matplotlib を使用して画面にプロットできます。

次のコードを検討してください。

import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import table

df = pd.DataFrame()
df["date"] = ["2016-04-01", "2016-04-02", "2016-04-03"]
df["calories"] = [2200, 2100, 1500]
df["sleep hours"] = [8, 7.5, 8.2]
df["gym"] = [True, False, False]

ax = plt.subplot(111, frame_on=False)  # no visible frame
ax.xaxis.set_visible(False)  # hide the x axis
ax.yaxis.set_visible(False)  # hide the y axis
table(ax, df, loc="center")  # where df is your data frame
plt.savefig("mytable.png")

出力画像は次のようになります。

Matplotlib の使用

テーブルを作成したら、matplotlib を使用してプロットを生成できます。 matplotlib を使用してテーブルをプロットする pandas サポートのおかげで、全体的なプロセスは非常に単純です。

まず、matplotlibpandas.plotting からそれぞれ pandasmatplotlib.pyplottable をインポートする必要があります。 これらのモジュールは、このソリューションがテーブルをプロットできるようにするものです。

pandas モジュールをインポートしたら、DataFrame クラスのインスタンスを作成し、df という名前で示される変数に格納します。 私たちの要件に従って、date というラベルの付いた列が作成され、続いて 5つの異なる日付が列に追加されます。

同じ手順を実行して 3つの追加の列を作成し、それぞれカロリー睡眠時間ジムという名前を付けて、新しく作成した列に関連データを挿入します。

その後、plt.subplot を使用してサブプロットを作成し、ax という名前の変数に格納します。 これは、最終的な画像にフレームが表示されないようにするためです。

行われるもう 1つの最適化は、ax.xaxis.set_visible()ax.yaxis.set_visible() を使用して xy 軸線を削除することです。

最後に、テーブルは table() メソッドを使用して生成され、それをサブプロット、DataFrame、および中央の場所に渡して画像の中心に作成します。 これが完了すると、画像は mytable.png という名前で保存されます。

Plotly と Kaleido を使用して Pandas データフレーム テーブルを PNG イメージに変換する

Plotly JavaScript ライブラリ plotly.js の上に構築された plotly を使用すると、Python のユーザーは美しいインタラクティブな Web ベースの視覚化を作成できます。

これらのビジュアライゼーションは、Jupyter ノートブックに表示したり、スタンドアロンの HTML ファイルとして保存したり、Dash を使用して純粋な Python で構築された Web アプリの一部として使用したりできます。 plotly は Plotly Inc. によって開発されました。

Kaleido は、静的な画像 (pngsvgpdf など) を生成するクロスプラットフォーム ライブラリであり、外部依存関係の必要性を取り除くことに特に重点を置いています。

plotly は以下を使用して簡単にインストールできます。

pip install plotly

カレイドに関しては:

pip install kaleido

次のコードを検討してください。

import plotly.figure_factory as ff
import pandas as pd

df = pd.DataFrame()
df["date"] = ["2016-04-01", "2016-04-02", "2016-04-03", "2016-04-03", "2016-04-03"]
df["calories"] = [2200, 2100, 1500, 2200, 2100]
df["sleep hours"] = [8, 7.5, 8.2, 3, 4]
df["gym"] = [True, False, False, True, True]

fig = ff.create_table(df)
fig.update_layout(
    autosize=False,
    width=500,
    height=200,
)

fig.write_image("table_plotly.png", scale=2)

出力画像は次のようになります。

プロット画像

Dataframe が作成された後、plotly.figure_factorycreate_table メソッドを使用して、視覚化に適したテーブルを作成できます。

create_table メソッドは、テーブルを作成したい Dataframe インスタンスに渡され、PNG として表示される適切な形式に変換されます。

テーブルの作成された PNG の全体的なルック アンド フィールを更新する必要がある場合は、update_layout メソッドを使用して、autosizewidth、および height などのさまざまな属性を使用してレイアウトを更新できます。

好みに基づいてレイアウトを設定したら、write_image メソッドを使用して新しい PNG を保存し、必要に応じて画像の名前とスケールを渡します。

著者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn

関連記事 - Pandas Dataframe