AI Big Data/pandas

matplotlib 라이브러리 사용하기

retro_blue 2020. 7. 9. 15:54
반응형

matplotlib 라이브러리는  플롯(그래프)을 그릴 때 주로 쓰이는 2D, 3D 플롯팅 패키지(모듈) 입니다.

 

 

# 기초 그래프 (히스토그램 / 산점도 / 박스 그래프 그리기)

 

- seaborn 라이브러리의 tips 라는 데이터 집합을 사용해보도록 하겠습니다.

- tips 데이터 집합은 어떤 식당에서 팁을 지불한 손님의 정보를 모아둔 것입니다.

- 데이터프레임의 total_bill, tips 등의 열을 변수라고 부릅니다. 

 

 

1-1. 히스토그램

 

* 히스토그램은 데이터프레임의 열 데이터 분포와 빈도를 살펴보는 용도로 자주 사용합니다.

 tips 데이터프레임의 히스토그램을 그려보도록 하겠습니다. total_bill 변수를 사용한 일변량 그래프를 만들어보겠습니다.

 

 

지불 금액, 팁, 성별, 흡연 유무, 요일, 시간, 전체 인원 정보를 담고 있다
x축의 간격을 bins 인잣값을 통해 10으로 조정하였습니다.

 

 

1-2. 산점도 그래프

- 산점도 그래프는 변수 2개를 사용해서 만드는 그래프이며, 변수 2개를 사용하기 때문에 통계 용어로 '이변량 그래프' 라고 부릅니다.

 

- 산점도 그래프는 scatter 메서드를 사용합니다.

 

x 축에는 total_bill 변수를, y 축에는 Tip 변수를 적용하였습니다.

 

 

1-3. 박스 그래프

 

- 박스 그래프는 이산형 변수연속형 변수를 함께 사용하는 그래프입니다.

- 이산형 변수란 Female, Male과 같이 명확하게 구분되는 값을 의미하고, 연속형 변수란 Tip과 같이 명확하게 셀 수 없는 범위의 값을 의미합니다.

 

- boxplot 메서드를 사용하면 됩니다.

 

 첫 번째 인자에는 tips 데이터프레임에서 성별이 Female인 데이터와 Male인 데이터에서 tip 열 데이터만 추출하여 리스트에 담아 전달한 것입니다.

 두 번째 인자에는 labels 인잣값으로 성별을 구분하기 위한 이름을 추가했습니다.

 

 

1-4. 다변량 그래프 그리기

 

- 3개 이상의 변수를 사용한 그래프를 '다변량 그래프'라고 부릅니다.

 

 

Q. 위의 산점도 그래프에서는 지불 금액(total_bill)과 팁(tip)만을 사용하여 그렸는데 여기에 만약 식사 비용을 추가한다면 어떻게 해야할까요?

 

A. 이럴 때는 점의 색상을 다르게 하거나 혹은 점의 크기를 다르게 하는 방법이 있습니다. 뿐만 아니라 점의 크기 대신 점의 투명도를 조절하는 방법도 있습니다.

 

 

지불 금액, 팁 변수를 이용하여 만든 산점도 그래프에 성별을 새 변수로 추가해 보겠습니다.

새 변수(성별)는 점의 색상으로 구분해보도록 하겠습니다.

Female, Male와 같은 문자열은 산점도 그래프의 색상을 지정하는 값으로 사용이 불가능합니다.

그렇게 때문에 Female 인 경우 정수 1을, Male인 경우 정수 0을 반환하도록 함수를 만들었습니다.

 

그리고 recode_sex 메서드가 반환한 값 (0, 1)을 데이터프레임에 sex_color 열을 새로 생성하여 추가합니다.

sex 열에 recode_sex 함수를 브로드캐스팅하기 위해 apply 메서드를 사용합니다.

 

scatter 메서드에 s, c 인잣값으로 테이블당 인원 수와 성별의 치환값을 전달합니다.

s는 점의 크기(size)를, c는 점의 색상(color)을 의미합니다.

alpha 인잣값을 0.5로 지정하여 점의 투명도를 보기 좋게 조절할 수 있습니다.

 


[참고자료]

(Data) matplotlib (https://matplotlib.org/)

 

Matplotlib: Python plotting — Matplotlib 3.2.2 documentation

 

matplotlib.org

(Book) Do it! 데이터 분석을 위한 판다스 입문 (Chen. Daniel Y 저) - 이지스퍼블리싱

Do it! 데이터 분석을 위한 판다스 입문
국내도서
저자 : 다니엘 첸(Chen, Daniel Y.) / 김영하역
출판 : 이지스퍼블리싱 2018.10.11
상세보기
반응형