벌써 세번째 기술블로그~!
오늘의 주제는 Pandas로 그래프 그리는 방법입니당
<목차>
1. matplotlob로 데이터 시각화하기
2. seaborn으로 그래프 그리기
3. 판다스로 그래프 그리기
1. matplotlib로 데이터 시각화하기
먼저, matplotlib는 널리 사용하는 파이썬 시각화 라이브러리로, 하위 패키지인 pyplot을 불러오면 라이브러리의 다양한 시각화 기능을 사용할 수 있게 된다.
코드의 시작은 matplotlib.pyplot를 부르는 것이어야 한다.
import matplotlib.pyplot as plt
데이터셋을 불러오는 코드는 .load_dataset()이다.
대부분의 기본 그래프는 plt.plot()을 호출하면 그릴 수 있다. 여기에 변수 값을 전달하고 plt.show()를 호출하면 그래프를 확인할 수 있다. 기본 설정은 선그래프이고, 점 그래프 그릴려면 마지막 인수에 'o'만 넣으면 된다.
![]() |
![]() |
<그림영역과 하위 그래프>
![]() |
![]() |
plt.figure()로 그림영역 Figure 객체인 fig를 생성
-> 그래프 객체 Axes를 반환하는 axes = fig.add_subplot(행, 열, 위치) 로 빈 하위 그래프를 그림 영역에 삽입
-> 다시 axes.plot()을 사용해서 각 위치에 그래프를 그리고
-> 그림영역의 제목을 fig.suptitle() , 하위 그래프의 제목을 axes.set_title(), 하위 그래프에 제목을 삽입하면 겹칠 수 있으니 알아서 공간을 확보해주는 fig.set_tight_layout(True) 까지 입력하면
=> 깔끔한 그래프가 완성된다~~~
<산점도 그래프>
산점도: 연속 변수 사이의 관계를 나타내는 그래프
위에서 했던 대로 그림 영역과 하위 그래프를 추가하고, scatter() 매서드로 산점도를 그릴 수 있다.
![]() |
![]() |
산점도를 해석해보면 total bills와 tips가 양의 상관관계를 가진다는 것을 확인할 수 있다.
여기에 sex 변수를 추가해보자. 2가지 값(Male, Female) 뿐이므로 색을 다르게 해서 표현할 수 있다.
일행 수인 size 변수도 추가하려면, 제곱한 size에 10을 곱해서 원의 크기로 정한다.
scatter()에서 매개변수 s에 점의 크기를, 색상을 나타낸 매개변수 c에 성별에 따른 색상을 인수로 전달한다.
![]() |
![]() |
성별과 일행 수를 고려한 total bill에 따른 tip의 분포를 알 수 있다.
2. seaborn으로 그래프 그리기
seaborn은 matplotlib에 기반을 둔 통계 그래프에 특화된 라이브러리이다. 짧은 코드로도 복잡한 그래프를 그릴 수 있다.
라이브러리를 먼저 불러와보자.
import seaborn as sns
<분포 그래프>
sns.displot() 함수를 사용하면 여러 개의 일변량 그래프를 하나의 그래프로 표현할 수 있다.
하위 그래프가 아니라 FaceGrid 객체를 반환하고, 히스토그램, 밀도 분포 그래프, 러그 그래프를 한 번에 그릴 수 있다.
밀도 분포 그래프는 히스토그램과 같이 일변량 분포를 시각화하고, 각 값을 중심으로 정규 분포를 그리고 곡선 아래 넓이가 1이 되도록 겹친 그래프를 매끄럽게 만든 것이다. 러그 그래프는 변수 분포를 1차원으로 나타내고, 일반적으로 다른 유형의 그래프에 추가 정보를 제공할 때 사용한다.
![]() |
![]() |
매개변수 kde는 밀도 분포 그래프를 나타내고, True면 그래프를 그리고 False면 그래프를 그리지 않는다.
<바이올린 그래프>
다양한 통계 수치를 확인할 때 자주 사용하지만 박스 그래프보다 데이터 분포가 뚜렷한 그래프이다. (커널 밀도 추정이 포함되어 있기 때문!)
![]() |
![]() |
Lunch보다 Dinner에 total bill의 평균이 높고, 이상치가 더 크다는 것을 확인할 수 있다.
3. 판다스로 그래프 그리기
판다스 객체에도 자체 시각화 기능이 있다.
일반적인 판다스의 시각화 매서드는 DataFrame.plot.<그래프 유형>, Series.plot.<그래프 유형> 형식이다.
hist-히스토그램, kde-밀도 분포 그래프, scatter-산점도, hexbin-육각 그래프, box-박스 그래프
<육각 그래프>
![]() |
![]() |
오늘은 여기까지~













