Matplotlib으로 데이터 시각화하기
데이터 분석에서 시각화는 매우 중요한 단계입니다. 특히 Python의 Matplotlib 라이브러리는 데이터 시각화를 위한 강력한 도구입니다. 이번 글에서는 Matplotlib을 활용하여 그래프를 그리는 방법에 대해 알아보겠습니다. 예시로 유명한 아이리스(Iris) 데이터를 사용하여 산점도(scatter plot)를 그려보겠습니다.
1. 데이터 준비하기
아이리스 데이터는 꽃잎과 꽃받침의 길이 및 너비 정보로 구성된 데이터셋으로, 총 150개의 관측치가 포함되어 있습니다. 이 데이터를 활용하기 위해 먼저 Pandas와 Matplotlib 라이브러리를 불러옵니다. pandas는 데이터 조작 및 분석을 용이하게 해주는 라이브러리입니다. 아래와 같이 코드를 작성하여 데이터를 불러올 수 있습니다.
import pandas as pd
import matplotlib.pyplot as plt
# 데이터 파일을 읽는다.
iris = pd.read_csv("ch9_data/iris.csv")
이제 데이터셋의 구성 요소를 확인하기 위해, 꽃받침의 길이(Sepal.Length)와 꽃잎의 길이(Petal.Length) 컬럼을 각각 객체로 생성합니다.
SL = iris['Sepal.Length']
PL = iris['Petal.Length']
2. 산점도 그래프 그리기
산점도 그래프를 그리기 위해서는 몇 가지 설정이 필요합니다. 먼저 그래프의 크기를 설정하고, x축과 y축의 레이블을 지정하는 것이죠. 이 설정을 위해서 아래의 코드를 사용할 수 있습니다.
plt.figure(figsize=(8, 6))
plt.xlabel('Sepal.Length', fontsize=10)
plt.ylabel('Petal.Length', fontsize=10)
plt.title('Scatter Plot of Sepal.Length & Petal.Length', fontsize=12)
이제 데이터를 기반으로 산점도를 그릴 차례입니다. scatter 함수를 이용하여 x축에는 꽃받침의 길이를, y축에는 꽃잎의 길이를 배치합니다.
plt.scatter(SL, PL, c=SL, alpha=0.35, s=50, marker='+', cmap='spring')
plt.colorbar(label='SL')
plt.show()
위 코드를 실행하면, 꽃받침의 길이와 꽃잎의 길이를 나타내는 산점도가 생성됩니다. 이때, 각 점의 색상은 꽃받침의 길이에 따라 다르게 표현되며, alpha 파라미터를 통해 점의 투명도를 조절할 수 있습니다. 마커의 크기와 모양도 자유롭게 설정할 수 있습니다.
3. 범주형 데이터 시각화
아이리스 데이터의 5번째 컬럼인 Species는 꽃의 종류를 나타내는 문자열 데이터입니다. 이 데이터를 색상으로 구분하기 위해서는 범주형 데이터로 분류가 필요합니다. 아래 코드를 통해 ‘setosa’, ‘versicolor’, ‘virginica’를 0, 1, 2로 매핑할 수 있습니다.
Spec = iris['Species']
Spec.color = Spec.replace({'setosa': 0, 'versicolor': 1, 'virginica': 2})
이제 이 범주형 데이터를 활용해 다시 산점도를 그려보겠습니다. 이전의 코드와 거의 동일하지만, c 파라미터에 Spec.color를 넣어줘야 합니다.
plt.figure(figsize=(8, 6))
plt.scatter(SL, PL, c=Spec.color, alpha=0.2, s=75, marker='o', cmap='winter')
plt.title('Scatter Plot of Sepal.Length & Petal.Length with Species(color)', fontsize=12)
plt.xlabel('Sepal.Length', fontsize=10)
plt.ylabel('Petal.Length', fontsize=10)
plt.colorbar(label='Species')
plt.show()
4. Matplotlib의 기본 설정
그래프를 그리기 전에 기본 설정을 통해 글꼴, 크기 등을 지정할 수 있습니다. 이 설정은 모든 그래프에 적용됩니다. 예를 들어, 다음과 같이 설정할 수 있습니다.
plt.rc('font', family='NanumGothic Eco')
plt.rcParams['figure.figsize'] = (8, 8)
이렇게 설정한 후에는 모든 그래프에서 설정한 글꼴과 사이즈가 자동으로 적용됩니다. 이를 통해 일관된 결과를 유지할 수 있습니다.
5. 추가적인 그래프 기능 알아보기
Matplotlib에는 다양한 그래프 유형과 옵션이 존재합니다. 다음은 몇 가지 기본적인 그래프의 사용 예입니다.
- 단일 그래프 그리기: plt.plot() 함수를 사용하여 단일 선 그래프를 그릴 수 있습니다.
- 다중 그래프: 하나의 캔버스에 여러 개의 그래프를 그리거나, subplot 기능을 이용해 여러 개의 그래프를 배치할 수 있습니다.
- 막대 그래프: plt.bar() 함수를 사용하여 범주형 데이터를 시각화할 수 있습니다.
이 외에도 Matplotlib은 히스토그램, 파이 차트, 3D 그래프 등을 지원하고 있으며, 이 모든 기능을 통해 데이터의 다양한 측면을 탐구하고 이해할 수 있습니다.
결론
이번 포스트에서는 Python의 Matplotlib 라이브러리를 활용하여 데이터 시각화를 하는 방법에 대해 살펴보았습니다. 기본적인 산점도 그래프부터 시작하여 범주형 데이터를 색상으로 구분하는 방법까지 다루었으며, 그래프의 다양한 설정과 옵션을 통해 더욱 효과적으로 데이터를 표현할 수 있는 방법을 제시했습니다. Matplotlib의 기능을 충분히 활용하면, 복잡한 데이터도 손쉽게 시각화하여 분석의 이해도를 높일 수 있을 것입니다.
자주 묻는 질문 FAQ
Matplotlib을 사용하여 산점도를 만드는 방법은 무엇인가요?
산점도를 그리려면 먼저 꽃받침의 길이와 꽃잎의 길이 데이터를 준비한 후, scatter() 함수를 사용해 x축과 y축에 각각 해당 데이터를 배치합니다. 그래프의 외관을 설정하기 위해 레이블과 제목도 추가해야 합니다.
아이리스 데이터셋은 어떤 정보로 구성되어 있나요?
아이리스 데이터셋은 꽃의 꽃받침과 꽃잎의 길이 및 너비 정보가 포함된 총 150개의 샘플로 이루어져 있으며, 각 샘플은 서로 다른 세 가지 품종으로 구분됩니다.
Matplotlib에서 그래프의 기본 설정을 어떻게 할 수 있나요?
기본 설정은 plt.rc() 함수를 사용하여 글꼴 스타일이나 그래프 크기 등을 지정할 수 있으며, 이렇게 설정하면 그 후 그려지는 모든 그래프에 자동으로 적용됩니다.