matplotlib는 파이썬에서 그래프를 그리기 위해서 사용하는 라이브러리 중 하나이다. matplotlib에는 여러가지 형태의 그래프를 그리기 위한 함수들이 존재하는데, seaborn 라이브러리에 내장되어있는 tips데이터를 가지고 matplotlib의 여러 형태의 그래프를 살펴보자. 우선 필요한 라이브러리를 호출하고 데이터셋을 불러오자.
우선 tips데이터 셋을 보면 변수는 total_bill, tip, sex, smoker, day, time, size로 구성 되어있는것을 볼 수 있다. 우선 간단한 히스토 그램을 그려보자. 히스토 그램이란 데이터셋의 변수에 대한 분포 및 빈도를 살펴볼 때 사용되는 그래프이다. 히스토 그램을 그릴때는 변수 하나를 사용하는데, 히스토그램과 같이 변수가 하나 사용되는 그래프를 '일변량 그래프'라고 부른다. 히스토그램을 그릴때는 hist함수를 이용한다. 당연히 matplotlib를 그리기 위해서는 figure()객체 선언과 subplot()을 만들어 주어야 한다.
히스토그램을 그리기 위해서는 hist메소드를 작성해 주어야 한다고 하였다. hist()메소드의 매개변수로는 히스토 그램에 나타내어줄 변수 하나와(필수) x축의 간격을 설정해 줄 수 있는 bins 매개변수를 넣어줄 수 있다. set_title()메소드는 히스토그램의 제목을 set_xlabel과 set_ylabel은 각각 x,y축의 이름을 붙여주는 역할을 한다.
이번에는 산점도 그래프를 그려보자. 산점도 그래프의 산점도 그래프란 2개의 연속형 변수끼리의 관계를 파악하기 위한 그래프이다. 변수를 두개 사용하기 때문에 '이변량 그래프'라고 부르기도 한다. 이변량 그래프의 예시로 total_bill에 따른 tip의 분포를 나타낸 산점도 그래프를 그려보자. 동일하게 우선적으로 figure()객체 선언과 subplot()을 추가해주자.
산점도 그래프를 그릴때는 scatter()이라는 함수를 사용해 준다. 산점도 그래프는 변수가 2개 쓰이는 이변량 그래프이므로 당연히 매개변수로도 그래프에서 사용할 변수 두개를 넣어주어야한다.
세번째로 박스 그래프를 작성해 보자. 박스그래프는 이산형 변수, 연속형 변수를 함께 사용해 줄 수 있는 변수이다. 여기서 이산형 변수와 연속형 변수의 정의를 한번 짚고 넘어가자.
이산형 변수 : 성별과 같이 구분되는 값을 가지고 있는 변수
연속형 변수 : 화폐가치와 같이 단정지을수 없는 값들의 모임
박스 그래프를 작성할 때는 boxplot()이라는 메소드를 이용해준다.
boxplot()메소드의 매개변수로 넣어준 매개변수 값을 해석해 보면, 변수 'sex'의 값이 'Male'과 'Female'이라는 데이터의 변수가 'tip인 부분의 데이터를 추출하여 리스트에 담은 것이고, labels 매개변수는 성별을 구분해 주기 위해 작성해 주었다.
히스토그램 같은 경우에는 변수가 한개인 값인 '일변량 그래프'이고 산점도 그래프는 변수가 두개 이상인 '이변량 그래프'라고 명칭하엿다. 추가로 변수의 개수가 두개 이상인 그래프를 '다변량 그래프'라고 한다. 다변량 그래프의 예시를 들어보면, 앞에서 산점도 그래프를 작성해 줄때 지불 금액별 팁의 가격을 산점도 그래프로 그려주었다. 만약 거기서 성별로 지불금액에 따른 팁 금액을 산점도 그래프로 그린다고 다시 가정을 해보자. 이 경우에는 변수가 세개가 되며, 다변량 그래프가 된다. 이런 경우에 다변량 그래프가 이용되는 것이다.
다변량 그래프를 그리기 위해서 우선 위에서 작성하였던 산점도 그래프를 다시 작성해 보자.
그 다음에 'sex'변수의 값을 통해 성별로 구분을 해주어야 하는데 'sex'변수의 값은 Female, Male로 문자열로 이루어져 있다. 성별로 구분하기 위해서는 색상으로 구분하는것이 일반적인데, scatter()메소드에서 색상을 지정해 줄 때는 문자열 값을 넣어줄 수 없고, 정수형태로 넣어주어야 한다. 그렇기 때문에 문자열 값을 정수형 데이터로 변환해 주는 함수를 작성해 주고 변환된 데이터를 새로운 변수를 생성하고 저장하는 방법을 사용하면 된다.
우선 다음과 같이 함수를 만들어 주었다. 이 함수는 값이 'Female'일 경우 0을 반환하고 'Male'인 경우에 1을 반환하는 함수이다. col()메소드를 sex변수에 대해 브로드 캐스팅해서 새로운 변수에 저장해주기 위한 코드는 다음과 같이 작성해 주면 된다. (브로드 캐스팅 정의는 머신러닝 부분에 해놓음)
apply()메소드는 함수를 브로드 캐스팅 하기 위해서 작성해 주는 메소드이다. 이제 다변량 그래프를 그려보자.
동일한 산점도 그래프를 그리는 scatter()메소드이다. 허나 다른 점이라면 단지 이변량 그래프의 경우에는 x,y축 각각의 값이 될 두개의 매개변수만 넣어주었다면 지금의 경우에는 매개변수가 4개나 들어가게 된것을 볼 수 있다. 우선 다변량 그래프에서의 scatter()메소드의 내부를 살펴보자. 우선 x,y의 값은 해석 그대로 x,y축의 값이 될 변수를 넣어준 것이다. 그 다음 s, c매개변수를 보자. s의 매개변수 값으로 dat['size']즉 size변수의 값이라고 했는데 'tip'데이터 셋의 size변수를 보면 다음과 같은 값을 가지고 있다.
이는 한 테이블에 앉은 사람의 명수를 의미하는 데이터인데, 그래프 상에서 나타나는 점의 크기가 클수록 한 테이블에 앉은 사람의 수가 더 많다고 해석하면 된다. 그 다음 매개변수 c는 color를 의미하는 매개변수이다.c 의 값으로는 아까 색상을 성별로 구분하기로 하였었는데, 이때 scatter()메소드의 색상 구분을 위해서는 문자열이 안되고 정수형만 매개변수로 전달이 가능하다고 하였다. 그렇기에 아까 함수를 만들어서 성별에 따라 0,1값이 저장된 새로운 변수 'se_col'이라는 새로운 변수를 만들었었는데, 색상 구분을 위한 변수 c에는 성별에 따른 정수값이 저장된 se_col 이라는 변수를 전달하여 색상을 구분해 준것이다. alpha매개변수의 경우에는 점의 투명도 매개변수로 넣어주면 된다.
'DataAnalysis > Python Pandas' 카테고리의 다른 글
데이터 시각화 : Seaborn 라이브러리 폭넓게 활용해 보기 2 (0) | 2019.03.12 |
---|---|
데이터 시각화 : Seaborn 라이브러리 폭넓게 활용해 보기 (0) | 2019.03.11 |
판다스 데이터 시각화 - 그래프 그리기, matplotlib : 2 (0) | 2019.03.09 |
판다스 데이터 시각화 - 그래프 그리기, matplotlib : 1 (0) | 2019.03.09 |
그래프 그리기 (0) | 2019.03.07 |