Pandas Dataframe 테이블을 PNG로 저장

Salman Mehmood 2023년6월21일
  1. Pandas 데이터 프레임 테이블을 PNG 이미지로 변환할 때의 문제
  2. Matplotlib를 사용하여 Pandas 데이터 프레임 테이블을 PNG 이미지로 변환
  3. Plotly 및 Kaleido를 사용하여 Pandas 데이터 프레임 테이블을 PNG 이미지로 변환
Pandas Dataframe 테이블을 PNG로 저장

이 기사의 주요 목표는 Pandas에서 데이터 프레임을 테이블로 변환하고 PNG 이미지로 저장하는 방법을 보여주는 것입니다. 또한 Pandas 데이터 프레임 테이블을 PNG 이미지로 변환할 때 어떤 문제가 발생하는지 알아봅니다.

Pandas 데이터 프레임 테이블을 PNG 이미지로 변환할 때의 문제

데이터를 처리하고 운영하는 것은 엄청난 시대에 그 규모가 증가하고 있는 이 기술 시대에 매우 중요합니다. 이를 위해서는 데이터를 저장하고 조작할 수 있는 다양한 방법과 관행이 필요합니다.

Pandas는 사용자가 다양한 방식으로 데이터를 조작하고 분석할 수 있도록 하는 것을 목표로 하는 Python 모듈입니다. 시간이 지남에 따라 상당한 인기를 얻었으며 엄청난 속도로 인기를 얻고 있는 Python도 마찬가지입니다.

Dataframe은 테이블 형식 데이터를 처리하는 데 가장 널리 사용되는 도구 중 하나이며 대규모 데이터를 구성하는 데 매우 유용합니다. 때로는 생성된 테이블을 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 모듈에서 사용할 수 있는 많은 기능 중 하나는 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에서 각각 pandas, matplotlib.pyplottable을 가져와야 합니다. 이러한 모듈은 이 솔루션이 테이블을 구성할 수 있도록 합니다.

pandas 모듈을 가져온 후 DataFrame 클래스의 인스턴스를 생성하고 df라는 이름으로 표시된 변수에 저장합니다. 요구사항에 따라 날짜 열이 생성되고 열에 5개의 서로 다른 날짜가 추가됩니다.

동일한 절차를 수행하여 3개의 추가 열을 생성한 다음 각각 칼로리, 수면 시간체육관이라는 이름을 지정하고 새로 생성된 열에 관련 데이터를 삽입합니다.

그런 다음 plt.subplot을 사용하여 서브플롯을 만들고 ax라는 변수에 저장합니다. 이는 최종 이미지에 프레임이 표시되지 않도록 하기 위한 것입니다.

수행된 또 다른 최적화는 ax.xaxis.set_visible()ax.yaxis.set_visible()을 사용하여 xy 축 선을 제거한 것입니다.

마지막으로 테이블은 table() 메서드를 사용하여 생성되며 이를 서브플롯인 DataFrame 및 중앙 위치에 전달하여 이미지 중앙에 생성합니다. 이 작업이 완료되면 mytable.png라는 이름으로 이미지가 저장됩니다.

Plotly 및 Kaleido를 사용하여 Pandas 데이터 프레임 테이블을 PNG 이미지로 변환

Plotly JavaScript 라이브러리 plotly.js 위에 구축된 plotly를 사용하면 Python 사용자가 아름다운 대화형 웹 기반 시각화를 만들 수 있습니다.

이러한 시각화는 Jupyter 노트북에 표시하거나 독립 실행형 HTML 파일로 저장하거나 Dash를 사용하여 순수 Python 구축 웹 앱의 일부로 사용할 수 있습니다. 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_factorycreate_table 메소드를 사용하여 시각화에 적합한 테이블을 생성할 수 있습니다.

create_table 메서드는 테이블을 만들려는 Dataframe 인스턴스에 전달되며 PNG로 볼 수 있도록 적절한 형식으로 변환됩니다.

테이블의 생성된 PNG의 전체적인 모양과 느낌을 업데이트해야 하는 경우 update_layout 메서드를 사용하여 autosize, widthheight와 같은 다양한 속성을 사용하여 레이아웃을 업데이트할 수 있습니다.

기본 설정에 따라 레이아웃을 설정한 후 write_image 메서드를 사용하여 새 PNG를 저장하고 필요한 경우 이미지 이름과 배율을 전달할 수 있습니다.

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