Pandas データフレーム テーブルを PNG として保存
- Pandas データフレーム テーブルを PNG 画像に変換する際の問題
- Matplotlib を使用して Pandas データフレーム テーブルを PNG イメージに変換する
- Plotly と Kaleido を使用して 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
を使用してテーブルをプロットする pandas
サポートのおかげで、全体的なプロセスは非常に単純です。
まず、matplotlib
と pandas.plotting
からそれぞれ pandas
、matplotlib.pyplot
と table
をインポートする必要があります。 これらのモジュールは、このソリューションがテーブルをプロットできるようにするものです。
pandas
モジュールをインポートしたら、DataFrame
クラスのインスタンスを作成し、df
という名前で示される変数に格納します。 私たちの要件に従って、date
というラベルの付いた列が作成され、続いて 5つの異なる日付が列に追加されます。
同じ手順を実行して 3つの追加の列を作成し、それぞれカロリー
、睡眠時間
、ジム
という名前を付けて、新しく作成した列に関連データを挿入します。
その後、plt.subplot
を使用してサブプロットを作成し、ax
という名前の変数に格納します。 これは、最終的な画像にフレームが表示されないようにするためです。
行われるもう 1つの最適化は、ax.xaxis.set_visible()
と ax.yaxis.set_visible()
を使用して x
と y
軸線を削除することです。
最後に、テーブルは table()
メソッドを使用して生成され、それをサブプロット、DataFrame、および中央の場所に渡して画像の中心に作成します。 これが完了すると、画像は mytable.png
という名前で保存されます。
Plotly と Kaleido を使用して Pandas データフレーム テーブルを PNG イメージに変換する
Plotly JavaScript ライブラリ plotly.js
の上に構築された plotly
を使用すると、Python のユーザーは美しいインタラクティブな Web ベースの視覚化を作成できます。
これらのビジュアライゼーションは、Jupyter
ノートブックに表示したり、スタンドアロンの HTML
ファイルとして保存したり、Dash
を使用して純粋な Python で構築された Web アプリの一部として使用したりできます。 plotly
は Plotly Inc. によって開発されました。
Kaleido
は、静的な画像 (png
、svg
、pdf
など) を生成するクロスプラットフォーム ライブラリであり、外部依存関係の必要性を取り除くことに特に重点を置いています。
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_factory
の create_table
メソッドを使用して、視覚化に適したテーブルを作成できます。
create_table
メソッドは、テーブルを作成したい Dataframe
インスタンスに渡され、PNG として表示される適切な形式に変換されます。
テーブルの作成された PNG の全体的なルック アンド フィールを更新する必要がある場合は、update_layout
メソッドを使用して、autosize
、width
、および height
などのさまざまな属性を使用してレイアウトを更新できます。
好みに基づいてレイアウトを設定したら、write_image
メソッドを使用して新しい PNG を保存し、必要に応じて画像の名前とスケールを渡します。
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