본문 바로가기
Python/Pandas

Pandas에서 플롯 생성 방안

by 찐남 2021. 8. 15.
본 내용을 보기 전에 Python 사전 준비 및 Python 완전 기초를 먼저 이해하셔야 합니다.
본 포스팅은 pandas 공식 홈페이지를 기반으로 작성하였습니다.

 

우선, 이번 포스팅에서 학습할 데이터를 다운로드하시길 바랍니다. 

air_quality_no2.csv
0.03MB

(이번 포스팅에서는 NO2에 대한 대기질 데이터(openaq에서 제공하고 py-openaq 패키지를 사용)를 사용합니다. air_quality_no2.csv 데이터 세트는 각각 파리, 앤트워프 및 런던에 있는 측정 스테이션 FR04014, BETR801 및 런던 웨스트민스터에 대한 NO2 값을 제공합니다.)

 

 

위의 예제 파일을 Python 내부로 불러오겠습니다.

 

import pandas as pd
import matplotlib.pyplot as plt

air_quality = pd.read_csv("C:/Temp/python_exer/data/air_quality_no2.csv", index_col=0, parse_dates=True)
print(air_quality.head())

 

 

(Note: read_csv 함수의 index_col 및 parse_dates 매개변수를 사용하여 첫 번째(0번째) 열을 결과 DataFrame의 인덱스로 정의하고 열의 날짜를 각각 Timestamp 개체로 변환합니다.)

 

 



 

1. pandas에서 플롯 생성 방안

 

 

데이터를 빠르게 시각적으로 확인하고 싶을 땐 아래와 같이 실행하시면 됩니다.

 

air_quality.plot()

 

 

DataFrame을 사용하면 pandas는 기본적으로 숫자 데이터가 있는 각 열에 대해 하나의 선 플롯을 만듭니다.

 

 

파리의 데이터로 데이터 테이블의 열만 그래프로 나타내고자 한다면, 아래와 같이 실행하시면 됩니다.

 

air_quality["station_paris"].plot()

 

 

특정 열을 그리려면

2021.08.14 - [Python/Pandas 기초익히기] - Pandas 데이터프레임의 부분 데이터 세트 선택 방법을 활용하여 plot() 방법과 함께 사용합니다. plot() 메서드는 Series와 DataFrame에서 모두 작동합니다. 

 

 

 



 

 

런던과 파리에서 측정한 N02 값을 시각적으로 비교하고 싶으면 아래와 같이 실행하시면 됩니다.

air_quality.plot.scatter(x="station_london", y="station_paris", alpha=0.5)

 

 

플롯 기능을 사용할 때 기본 선 플롯 외에도 데이터를 플롯 하는 데 사용할 수 있는 여러 가지 방법이 있습니다. 표준 Python을 사용하여 사용 가능한 플롯 방법에 대한 개요를 살펴보겠습니다. 

 

[ method_name for method_name in dir(air_quality.plot) if not method_name.startswith("_") ]

(note: 많은 개발 환경과 IPython 및 Jupyter Notebook에서 TAB 버튼을 사용하여 사용 가능한 메서드(예: air_quality.plot + 탭)에 대한 개요를 확인합니다.)

 

옵션 중 하나는 boxplot을 참조하는 DataFrame.plot.box()입니다.

air_quality.plot.box()

 

 

 

각 열을 별도의 서브플롯에 넣고 싶으면, 아래와 같이 실행하시면 됩니다.

 

axs = air_quality.plot.area(figsize=(12, 4), subplots=True)

 

 

각 데이터 열에 대한 별도의 서브플롯은 플롯 함수의 subplots인수에서 지원됩니다. 각 pandas plot 기능에서 사용할 수 있는 내장 옵션은 알아두면 유용하게 사용할 수 있습니다.

 

 

결과 플롯을 추가로 사용자 정의, 확장 또는 저장하고 싶을 땐 아래와 같이 실행하시면 됩니다. pandas에 의해 생성된 각 플롯 객체는 matplotlib 객체입니다. Matplotlib는 플롯을 사용자가 정의할 수 있는 많은 옵션을 제공하므로 pandas와 matplotlib 간의 링크를 명시적으로 만들면 matplotlib의 모든 기능을 플롯에 사용할 수 있습니다. 

 

fig, axs = plt.subplots(figsize=(12, 4))    # 빈 matplotlib Figure 및 Axes 생성
air_quality.plot.area(ax=axs)  # pandas를 사용하여 준비된 Figure/Axes에 면적 플롯 삽입
axs.set_ylabel("NO$_2$ concentration")   # 원하는 matplotlib 사용자 정의 수행
fig.savefig("no2_concentrations.png") # 기존 matplotlib 메서드를 사용하여 Figure/Axes 저장

 

 

2. Remember!

 

  • .plot.* 메서드는 Series 및 DataFrames 모두에 적용 가능합니다.
  • 기본적으로 각 열은 다른 요소(line, boxplot,…)로 표시됩니다.
  • pandas가 만든 모든 플롯은 Matplotlib 개체입니다.

 

 

 

반응형

댓글