데이터분석

[혼자 공부하는 데이터 분석 with 파이썬] - 데이터 시각화, 복잡한 데이터 표현

주니빙 2023. 9. 23. 19:49

05 데이터 시각화

맷플롯립 기본요소 알아보기

맷플롯립이란?

맷플롯립(Matplotlib)은 파이썬에서 데이터 시각화를 위한 라이브러리이다. 맷플롯립을 사용하면 그래프, 플롯, 차트 등 다양한 형태로 데이터를 시각적으로 표현할 수 있다.

 

맷플롯립 그래프를 담는 객체 : 피겨, rcParams, 서브플롯

 

<Figure>

피겨 객체란?

피겨 객체는 맷플롯립에서 그래프를 그릴 수 있는 캔버스를 의미한다. 이 객체를 사용하여 그래프의 크기, 배경색, 축의 레이블 등을 설정할 수 있다.

import gdown
gdown.download('<https://bit.ly/3pK7iuu>', 'ns_book7.csv', quiet=False)

실습 데이터인 ns_book7.csv 파일을 구글 드라이브에서 다운로드

맷플롯립을 임포트한 후 scatter()함수로 ‘도서권수’ 열을 x축, ‘대출건수’ 열을 y축으로 설정 & 투명도 0.1로 설정

 

그래프 크기 바꾸기 : figsize 매개변수

figsize 매개변수란?

figsize 매개변수는 맷플롯립에서 그래프의 크기를 설정하는 매개변수이다. 이 매개변수를 사용하여 그래프의 가로와 세로 크기를 조정할 수 있다.

 

기본 그래프 크기는 (6,4)이고 각각 너비와 높이에 해당하며 단위는 인치다.

figsize 매개변수를 (9,6)으로 지정하여 산점도를 더 크게 그려보았다.

문제 발생 : 예상한 것보다 그래프가 작게 그려짐

문제 해결 : 픽셀 값을 DPI로 나누어 인치 값을 구해 figsize 매개변수에 전달

DPI(Dots Per Inch)란 ?

맷플롯립에서 그래프의 해상도를 설정하는 매개변수이며, 1인치를 몇 개의 점으로 표현하는지 나타낸다. 이 매개변수를 사용하여 그래프의 선명도와 해상도를 조절할 수 있다.

맷플롯립의 DPI 기본값은 72이다.  그래프 : 900X600 픽셀 크기의 그래프를 그리고 싶다고 가정

그래프에서 마우스 오른족 클릭 후 [새 탭에서 이미지 열기]로 실제 그래프 크기를 확인하면 그래프가 크게 그려졌음을 알 수 있다.

 

bbox_inches 옵션이란?

bbox_inches 옵션은 맷플롯립에서 그래프의 크기를 설정하는 옵션이다. 이 옵션을 사용하여 그래프의 가로와 세로 크기를 인치 단위로 조정할 수 있다.

%config InlineBackend.print_figure_kwargs = {'bbox_inches': None}
plt.figure(figsize=(900/72, 600/72))
plt.scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
plt.show()

코랩 노트북은 기본적으로 맷플롯립 그래프를 출력할 때 그래프 주변에 공백을 최소화하는 타이트 레이아웃을 사용한다.

bbox_inches 옵션을 None으로 지정하면 타이트 레이아웃이 사용되지 않으며 그래프 주변에 공백이 많이 생긴다.

 

그래프 크기 바꾸기 : dpi 매개변수

DPI 기본값인 72에서 144로 늘려주었다.

 

<rcParams>

rcParams란?

rcParams는 맷플롯립 그래프의 기본값을 관리하는 객체이다. 이 객체를 사용하여 그래프의 기본 설정을 변경하거나 사용자 정의 설정을 적용할 수 있다.

DPI 기본값 바꾸기

plt.rcParams['figure.dpi'] = 100

기본 그래프의 해상도를 높이기 위해 DPI 기본값을 100으로 바꿀 수 있다.

산점도 마커 모양 바꾸기

marker 매개변수란?

matplotlib의 marker 매개변수는 산점도에서 데이터 점을 나타내는 데 사용되는 마커의 유형을 의미한다. 이는 각 데이터 점을 그리는 데 사용되는 마커의 모양을 결정한다.

plt.rcParams['scatter.marker'] = '*'

marker 매개변수를 ‘*’로 지정하여 마커 모양 별로 정의 할 수 있다.

 

<서브플롯>

서브플롯이란?

서브플롯(Subplot)은 맷플롯립에서 Axes 클래스의 객체를 말하며 여러 개의 그래프를 한 번에 출력하기 위해 사용되는 기능이다. 서브플롯을 사용하면 하나의 그림(피겨) 안에 여러 개의 작은 그래프를 배열할 수 있다. 이를 통해 데이터 간 비교나 다양한 시각화를 동시에 확인할 수 있다.

axes 클래스란?

맷플롯립에서 그래프를 그리는 공간을 나타내는 객체이다. axes 클래스를 사용하여 그래프의 축, 레이블, 타이틀 등을 설정하고 다양한 그래프를 그릴 수 있다.

 

서브플롯 그리기 : subplots() 함수

axs[0]은 첫 번째 그래프(산점도)를, axs[1]은 두 번째 그래프(히스토그램)를 그린다.

 

set_title() 메서드란?

set_title() 메서드는 맷플롯립에서 그래프의 제목을 설정하는 메서드입니다.

fig, axs = plt.subplots(2, figsize=(6, 8))

axs[0].scatter(ns_book7['도서권수'], ns_book7['대출건수'], alpha=0.1)
axs[0].set_title('scatter plot')

axs[1].hist(ns_book7['대출건수'], bins=100)
axs[1].set_title('histogram')
axs[1].set_yscale('log')

fig.show()

 

서브플롯을 가로로 나란히 출력하기

subplots() 함수에 첫 번째 매개변수는 서브플롯 행의 개수이고 두 번째 매개변수는 열의 개수이다.

subplots(1,2)은 하나의 행에 두 개의 열을 가진 피겨이다.

set_xlabel()메서드와 set_ylabel() 메서드를 사용해 두 서브플롯의 축 이름도 지정할 수 있다.

 

연도별 발행 도서 개수 구하기

value_counts() 메서드란?

value_counts() 메서드는 pandas에서 제공하는 메서드로, 시리즈 객체의 고유한 값들의 개수를 세는 함수이다. 이 메서드를 사용하면 해당 시리즈에 있는 각 값의 빈도를 확인할 수 있다.

값을 기준으로 내림차순으로 정렬된다.

 

 

sort_index() 메서드란?

sort_index() 메서드는 pandas에서 제공하는 메서드로, 인덱스를 기준으로 데이터를 정렬하는 함수이다. 이 메서드를 사용하면 시리즈나 데이터프레임을 인덱스를 기준으로 오름차순 또는 내림차순으로 정렬할 수 있다.

선 그래프 그리기

plot() 함수란?

plot() 함수는 맷플롯립에서 제공하는 함수로, 선 그래프를 그리는 데 사용된다. 이 함수를 사용하면 데이터의 변화를 시각적으로 표현할 수 있다. plot() 함수는 x축과 y축에 대한 데이터를 인자로 받아 선 그래프를 그린다.

선 모양과 색상 바꾸기

linestyle 매개변수란?

linestyle 매개변수는 맷플롯립에서 선 그래프의 선 스타일을 설정하는 매개변수이다. 이 매개변수를 사용하여 선의 종류와 모양을 지정할 수 있다.

color 매개변수란?

color 매개변수는 맷플롯립에서 선 그래프의 색상을 설정하는 매개변수이다. 이 매개변수를 사용하여 선의 색상을 지정할 수 있다.

 

06 복잡한 데이터 표현하기

pyplot 방식과 객체지향 API 방식

pyplot 방식이란?

pyplot 방식은 맷플롯립에서 제공하는 하위 패키지 중 하나로, 그래프를 그리는 데 사용되는 함수들을 모아놓은 인터페이스이다. 이 방식을 사용하면 간편하게 다양한 종류의 그래프를 그릴 수 있다.

객체지향 API 방식이란?

객체지향 API 방식은 맷플롯립에서 제공하는 그래프 그리기 방법 중 하나로, 객체지향 프로그래밍의 개념을 활용하여 그래프를 그리는 방식이다. 이 방식을 사용하면 그래프와 관련된 모든 요소를 객체로 다룰 수 있으며, 그래프의 속성을 더욱 자세하게 제어할 수 있다.

막대 그래프 그리기

bar() 함수란?

bar() 함수는 맷플롯립에서 제공하는 함수로, 막대 그래프를 그리는 데 사용된다. 이 함수를 사용하면 범주형 데이터의 크기를 시각적으로 비교할 수 있다.

barh() 함수란?

barh() 함수는 맷플롯립에서 제공하는 함수로, 수평 막대 그래프를 그리는 데 사용된다. 이 함수를 사용하면 범주형 데이터의 크기를 시각적으로 비교할 수 있다.

pyplot 방식으로 그래프 그리기

 

 

객체지향 API 방식으로 그래프 그리기

객체지향 API 방식은 피겨 객체와 Axes 객체를 사용한다.

 

폰트 지정하기

font.family 속성이란?

font.family 속성은 맷플롯립에서 사용되는 폰트 패밀리를 설정하는 속성이다. 이 속성을 사용하여 그래프의 폰트를 지정할 수 있다.

rc() 함수란?

rc() 함수는 맷플롯립에서 제공하는 함수로, 그래프의 기본 설정을 변경하는 함수이다. 이 함수를 사용하여 폰트, 색상, 선 스타일 등의 그래프 속성을 설정할 수 있다.

마커 꾸미기

  1. 투명도 조절하기 : alpha 매개변수
  2. 마커 테두리 색 바꾸기 : edgecolor 매개변수
  3. 마커 테두리 선 두께 바꾸기 : linewidths 매개변수
  4. 산점도 색 바꾸기 : c 매개변수

값에 따라 색상 표현하기 : 컬러맵

컬러맵이란?

컬러맵은 데이터 값에 따라 색상을 표현하는 방법이다. 맷플롯립에서는 다양한 컬러맵을 제공하여 데이터의 특성을 시각적으로 전달할 수 있다.