Developer's Development

3.2.5 [데이터 분석] 데이터 시각화 본문

데이터 분석과 머신러닝, 딥러닝/데이터 분석

3.2.5 [데이터 분석] 데이터 시각화

mylee 2025. 7. 17. 17:39

데이터 시각화는 데이터를 그래프로 표현하여 데이터의 패턴, 추세, 관계 등을 쉽게 이해할 수 있도록 하는 과정이다.

Python에서는 다양한 시각화 라이브러리가 있지만, 그 중에서도 Matplotlib는 가장 널리 사용되는 라이브러리 중 하나이다.

 

❗데이터 시각화의 중요성

데이터 분석에서 시각화는 중요한 역할을 한다. 숫자나 텍스트로만 분석 결과를 전달하는 것보다, 그래프나 차트로 데이터를 시각화하면 패턴이나 트렌드를 더 쉽게 파악할 수 있다. 이를 통해 데이터의 이해도와 전달력이 높아지고, 분석 결과에 대한 설득력이 향상된다. 따라서, 데이터를 효과적으로 시각화하는 능력은 데이터 과학자, 분석가에게 필수적인 스킬이다.

 

 

Matplotlib

 

Python에서 2D 그래프를 그리기 위한 포괄적인 라이브러리

간단한 선 그래프부터 복잡한 2D/3D 그래프까지 모두 지원하며, 높은 수준의 커스터마이징을 지원한다.

 

  • 기본 구조

👉🏻 pyplot 인터페이스

Matplotlib는 pyplot이라는 인터페이스를 제공한다.

이 인터페이스는 간단하게 그래프를 그릴 수 있도록 도와주는 함수형 인터페이스로, MATLAB과 유사한 방식으로 작동한다.

 

👉🏻 Figure와 Axes의 개념

Figure: 그래프의 전체적인 틀(캔버스) 역할

Axes: 실제 그래프가 그려지는 영역

→ Figure는 그래프의 전체 화면이고, Axes는 그 화면 안에 있는 개별 그래프라고 생각하면 된다.

Figure는 하나 이상의 Axes를 포함할 수 있으며, 하나의 Figure 안에 여러 개의 Axes를 배치하여 복합적인 그래프를 만들 수 있다. 

 

👉🏻 객체 지향 인터페이스

pyplot 인터페이스는 간단한 그래프에 적합하지만, 보다 복잡한 그래프를 그리거나 여러 개의 그래프를 한 화면에 그릴 때는 객체 지향 방식이 더 유용하다.

pip install matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

 

  • 기본 사용법
x = [1, 2, 3]
y = [4, 5, 6]

plt.plot(x, y)
plt.show()

 

  • Figure | Axes

Figure: 전체 그림이 그려지는 컨테이너

Axes: 그래프가 실제로 그려지는 영역

fig = plt.figure(figsize=(6,4), facecolor='lightblue')
print(fig)

ax = plt.gca()
ax.plot(x, y)
print(ax)

plt.title('Hello Matplotlib')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

fig, ax = plt.subplots(nrows=2, ncols=3, figsize=(10,6))
print(fig)
print(ax)
plt.show()

 

  • plot 메서드 → x, y 인자
# 1. 파이썬의 List

# 2. ndarray
x = np.arange(1, 11)
y = x * 2

# 3. Series
x = pd.Series(x)
y = pd.Series(y)

# 4. DataFrame
x = pd.DataFrame({'x': x})
y = pd.DataFrame({'y': y})

plt.plot(x, y)
plt.show()

 

  • plot 메서드의 매개변수
plt.figure(figsize=(6, 4))

plt.plot(
    x,
    y,
    color='coral',
    marker='.',  # 대따 다양함!
    markersize=10,
    linestyle='dashdot',
    linewidth=5
)

plt.show()

 

  • plt 속성 설정
# 한글 폰트 사용을 위한 설정
import matplotlib.font_manager as fm
import matplotlib

font_path = 'C:\\Windows\\Fonts\\batang.ttc'
font = fm.FontProperties(fname=font_path).get_name()
matplotlib.rc('font', family=font)
# label: 기본적으로 한글 '폰트' 지원하지 않음
plt.plot(x, y)
plt.title('제목')
plt.xlabel('시간')
plt.ylabel('점수')
plt.show()
# ticks (눈금)
plt.figure(figsize=(3, 2))

x = np.arange(1, 101)
y = np.linspace(2, 200, 100)

plt.xticks(ticks=np.arange(0, 101, 5), rotation=90)
plt.yticks(rotation=45)

plt.plot(x, y)
plt.show()

# lim (보여지는 범위 재지정)
plt.figure(figsize=(3, 2))

x = np.arange(1, 101)
y = np.linspace(2, 200, 100)

plt.xlim(1, 50)
plt.ylim(2, 100)

plt.plot(x, y)
plt.show()
# lengend (범례)
plt.figure(figsize=(4, 3))

x = np.arange(1, 101)
y = np.linspace(2, 200, 100)
y2 = np.linspace(3, 300, 100)

plt.plot(x, y, label='시간')
plt.plot(x, y2, label='공간')

# 범례 위치 loc
# - 기본값: best
# - center
# - (upper | lower) (left | right)
plt.legend(loc='center')

plt.show()

 

  • 그래프 여러 개 그리기
# 여러 종류의 그래프를 동시에 그리기
plt.figure(figsize=(3, 2))

x = np.arange(1, 11)
y = x * 3
y2 = x * 2

plt.plot(x, y, label='선', color='lightpink', marker='^')
plt.bar(x, y2, label='바', color='lightgreen')

plt.legend()
plt.grid()

plt.show()

# 여러 그래프를 각각 그리기 -> subplots()
fig, ax = plt.subplots(1, 2, figsize=(10, 5))

x1 = np.arange(1, 11)
y1 = x1 * 2
x2 = np.arange(11, 20)
y2 = x2 * 2

ax[0].plot(x1, y1, label='선', color='red')
ax[0].set_xlabel('X1')
ax[0].set_ylabel('Y1')
ax[0].set_title('빨간 선')
ax[0].legend()
ax[0].grid()

ax[1].bar(x2, y2, label='바', color='yellowgreen')
ax[1].set_xlabel('X2')
ax[1].set_ylabel('Y2')
ax[1].set_title('연두 막대')
ax[1].legend()
ax[1].grid()

plt.show()

 

 

Seaborn

 

Matplotlib을 기반으로 한 고급 데이터 시각화 라이브러리로, 통계적 그래프를 간편하게 그릴 수 있도록 도와준다.