Thinking Box

[판다스] matplotlib 라이브러리로 기초 그래프 그리기: <Do it! 데이터 분석을 위한 판다스 입문> 실습 본문

카테고리 없음

[판다스] matplotlib 라이브러리로 기초 그래프 그리기: <Do it! 데이터 분석을 위한 판다스 입문> 실습

레야_Reya 2024. 3. 26. 15:58

 

 

<Do it! 데이터 분석을 위한 판다스 입문> 교재를 실습한 내용을 정리해보았다.


*목차*

4장 | 그래프 그리기

4-1. 데이터 시각화가 필요한 이유

 

 

오늘의 실습에 사용될 앤스콤 데이터 집합은 seaborn 라이브러리에 포함되어 있다.


데이터 집합 불러오기
import seaborn as sns

anscombe = sns.load_dataset('anscombe')

 

matplotlib 라이브러리 불러오기

 

   그래프로 시각화하기 위해서 먼저 라이브러리를 불러와야 한다.

%matplotlib notebook
import matplotlib.pyplot as plt

 

 


 

이제 본격적으로 그래프를 그려보면서 시각화를 어떻게 할 수 있는지 실습해보자.

📌 plot method :
선 그래프와 점 그래프를 그릴 때 사용한다.

 

첫 번째 데이터 그룹 (데이터 값=I ) 만 추출해서 변수에 넣어주기
dataset_1 = anscombe[anscombe['dataset']=='I']

 

plot method 사용해서 선 그래프 그리기
plt.plot(dataset_1['x'], dataset_1['y'])

 

 

선 대신 점 그래프를 그리고 싶다면?

o 를 세 번째 인자로 전달하면 된다.

plt.plot(dataset_1['x'],dataset_1['y'],'o')

 

 

그런데 위의 작업을 연달아 수행하면 그래프가 리셋되는 것이 아니라,

아래처럼 기존의 선 그래프 위에 점이 찍힌 그래프를 얻게 된다.

 

이 때 새로운 그래프만 보고 싶다면 그래프를 깨끗하게 clear 하고 새로운 작업을 수행하면 된다.

📌 clf method :
matplotlib 라이브러리에서 그래프의 figure 을 지운다.
(used to clear the figure)
plt.clf()

 

 

깨끗하게 지워진 하얀 배경 위에 다시 위의 점 그래프를 그려보면 이렇게 잘 그려진다. 

 


한 번에 여러 개의 그래프 그리기 (with matplotlib 라이브러리)

이번에는 matploblib 라이브러리로 4개의 그래프 그리는 법을 실습해보자.

 

우선 dataset 열의 값대로 나누어 저장한다.

dataset_1 = anscombe[anscombe['dataset']=='I']
dataset_2 = anscombe[anscombe['dataset']=='II']
dataset_3 = anscombe[anscombe['dataset']=='III']
dataset_4 = anscombe[anscombe['dataset']=='IV']

 

저장한 dataset_1 에서 dataset_4 까지 출력해보면 이런 식으로 잘 담겨있다.

 

Step 1. 전체 그래프가 들어갈 기본 틀 만들기
fig = plt.figure()

 

 

Step 2. add_subplot method로 그래프 격자 그리기
axes1 = fig.add_subplot(2,2,1)
axes2 = fig.add_subplot(2,2,2)
axes3 = fig.add_subplot(2,2,3)
axes4 = fig.add_subplot(2,2,4)
📌 add_subplot method :
 만들어 둔 기본 틀에 격자를 추가한다.

 add_subplot(
기본 틀의 행 크기, 열 크기, 몇 번째 격자인지)
 
격자에 그래프가 추가되는 순서는 왼쪽에서 오른쪽, 위에서 아래 행.

 

 

Step 3. plot method에 데이터를 넣어서 그래프 그리기
axes1.plot(dataset_1['x'],dataset_1['y'], 'o']
axes2.plot(dataset_2['x'],dataset_2['y'], 'o']
axes3.plot(dataset_3['x'],dataset_3['y'], 'o']
axes4.plot(dataset_4['x'],dataset_4['y'], 'o']

 

 각 그래프 격자에 제목 추가하기

axes1.set_title('dataset_1')
axes2.set_title('dataset_2')
axes3.set_title('dataset_3')
axes4.set_title('dataset_4')

 

기본 틀에도 제목 추가하기

fig.suptitle('Anscombe Data')

 

그럼 이런 그래프가 짜잔~

 

 

각 그래프 이름과 숫자가 겹쳐 보이는 현상을 해결해보자.

fig.tight_layer()

완벽해 :)

 

 

🔍 Today's Review..

 

...