본문 바로가기
데이터 분석

데이터 분석 with Python 3장 - Matplotlib를 활용한 데이터 분석 -

by ChocoPeanut 2017. 6. 11.

데이터 분석 with Python 3

- Matplotlib를 활용한 데이터 분석 -

 

Matplotlibnumpy 혹은 pandas를 통해 얻은 데이터에 대한 분석 결과를 시각화시키는데 사용하는 라이브러리이다. MatplotlibDataFrame 혹은 Series 형태의 데이털르 가지고 다양한 형태의 플록을 만들어 주는 기능을 가지고 있다.



Matplotlib설치하는 방법cmd 프로그램이나 터미널에 pip install matplotlib라는 명령을 입력해주면 쉽게 설치가 가능하다. Matplotlib를 사용하기 위해서는 Python에서 %matplotlib이라는 매직 명령어를 통해 플롯팅 옵션을 먼저 지정해야한다.(ipython에서 사용하는 경우) %matplotlib nbagg를 실행하는 경우, 노트북 상에서 생성되는 플롯을 인터랙티브하게 조작할 수 있고 %matplotlib inline을 실행하면 노트북 상의 특정 셀에서 플롯을 일단 생성하면 이를 조작할 수 없다. 이후 import 함수를 통해 matplotlib을 사용할 수 있는 상태로 만든다. import matplotlib.pyplot as plt 라고 명령을 입력하면 matplotlib에서 python을 위한 plot을 사용할 수 있는 모듈을 가져올 수 있게 된다.


matplotlib은 많은 종류의 플롯을 가지고 있다. 연속적인 직선으로 구성된 라인 플롯, 막대 형태의 플롯인 바 플롯, 구간에 속하는 개수를 막대 형태로 나타낸 히스토그램, 값들의 관계를 알 수 있는 산점도가 대표적이라고 할 수 있다.


라인 플롯은 연속적인 직선으로 구성된 플롯이다. 어떤 특정한 독립변수 X가 변화함에 따라 종속변수 Y가 어떻게 변화하는지를 나타내고자 할 때 라인 플롯을 사용한다. 라인 플롯은 plt.plot() 함수를 사용해서 나타낼 수도 있고 DataFrame이나 Series의 이름 뒤에 .plot()을 입력해도 실행시킬 수 있다. [] 기호를 사용하면 특정 열에 대한 plot도 생성할 수 있다.


바 플롯은 막대 형태의 플롯이다. 독립변수 X가 변화하면서 종속변수 Y가 변화하는 양상을 나타내는데 X가 유한 개의 값만을 가질 경우 바 플롯을 사용한다. 바 플롯의 경우 DataFrame이나 Series 이름 뒤에 .plot(kind = “bar”)를 사용하여 나타낼 수 있다. 라인 플롯의 경우 default 라면 바 플롯은 임의로 kindbar로 지정해 주어야한다. 그런데 bar라고 지정하는 것은 index와 수직 방향으로 그려주는 것이고 barh라고 지정하면 수평 방향으로도 그릴 수 있다. 이 때 stacked라는 인자를 지정해줄 수 있는데 stacked=True로 지정할 경우 하나의 index에 대한 각 열의 값을 한 줄로 쌓아 표시해준다.


히스토그램은 하나의 변수 X가 가질 수 있는 값의 구간을 여러 개 설정한 뒤, 각각의 구간에 속하는 개수를 막대 형태로 나타낸 플롯이다. SeriesDataFrame 이름 뒤에 .hist()라는 함수를 사용하게 되면 히스토그램을 생성할 수 있다. 각 구간에 속하는 값의 개수를 카운팅할 때, 구간의 개수는 자동으로 10개로 설정되어 있다. 이를 조정하기 위해서는 bin이라는 인자를 바꾸어주면 된다. bins = 50 이라고 설정하면 50개의 구간으로 나누어서 그래프를 그려준다. normed라는 인자도 존재하는데 이는 bin에 속하는 개수를 전체 개수로 나눈 비율로 정규화한 값을 나타낼 때 normed = True로 지정해준다.


산점도는 서로 다른 두 개의 독립변수 x1, x2간의 어떠한 관계가 있는지 알아보고자 할 때 사용된다. 산점도는 두 독립변수의 값들을 각각의 축으로 하여 2차원 평면 상에 점으로 나타낸 플롯이다. 이는 DataFrame에서 두 개의 열을 비교할 때 사용될 수 있다. plt.scatter()함수를 사용하여 산점도를 그릴 수 있는데, 인자로 두 개의 열을 넣어주면 된다. 열을 나타낼 때는 [] 기호를 사용하면 된다.


matplotlib에서는 여러 개의 플롯을 같은 공간에 그릴 수 있는 기능인 figure를 제공한다. plt.figure()를 통해 여러 플롯을 넣을 수 있는 공간을 만든다. figure의 이름을 fig라고 한다면 fig.add_subplot()을 하게 되면 figure 안에 하나의 플롯이 들어가게 된다. 이 때 위치를 지정해줄 수 있는데 fig.add_subplot(2, 2, 1)이라고 한다면 subplot이 몇 개의 행, 몇 개의 열로 배치할 것인지를 앞의 인자 두 개가 가리키고 마지막 인자는 subplot이 어느 위치에 배치할지를 나타내는 번호이다.


플롯들의 경우 색상, 마킹 기호, 스타일 등을 지정할 수 있다. 색은 color라는 인자를 통해 마킹 기호는 marker라는 인자를 통해 스타일은 linestype 인자를 통해 지정할 수 있다. 다음의 예시들을 넣어보고 실습해보면 좋을 것 같다.