파이썬 그래프는 간단하다.
파이썬은 프로그래밍 언어다. 코딩도 간단하다. 단, 하고 싶은 기능의 모듈 사용법만 알면 된다 seaborn이 그렇다.
파이썬으로 그래프를 그리려면 matplotlib 을 사용하면 되었다. 근데, 조금 사용이 까다롭다. 그래서 나온게 seaborn이다. matplotlib보다 10배는 쉽다.
왜 10배냐!
seaborn이 matplotlib 에서 나왔기 때문이다.
이제 seaborn을 활용한 그래프를 그려보자. 그래프에 사용할 데이터는 타이타닉 데이터이다.
1. 모듈 불러들이기¶
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns # 여기에 seaborn을 불러들인다.
titanic = sns.load_dataset('titanic') # 그래프에 사용할 데이터로 타이타닉을 선택했다.
seaborn은 별칭으로 'sns'를 사용한다.
sns에 담겨있는 데이터셑에서 타이타닉('titanic')을 titanic변수에 담았다.
2. 데이터를 확인해 보자.¶
titanic.head()
survived | pclass | sex | age | sibsp | parch | fare | embarked | class | who | adult_male | deck | embark_town | alive | alone | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0 | 3 | male | 22.0 | 1 | 0 | 7.2500 | S | Third | man | True | NaN | Southampton | no | False |
1 | 1 | 1 | female | 38.0 | 1 | 0 | 71.2833 | C | First | woman | False | C | Cherbourg | yes | False |
2 | 1 | 3 | female | 26.0 | 0 | 0 | 7.9250 | S | Third | woman | False | NaN | Southampton | yes | True |
3 | 1 | 1 | female | 35.0 | 1 | 0 | 53.1000 | S | First | woman | False | C | Southampton | yes | False |
4 | 0 | 3 | male | 35.0 | 0 | 0 | 8.0500 | S | Third | man | True | NaN | Southampton | no | True |
3. 막대그래프 그리기
- 선실 등급을 기준으로 생존자 수를 막대그래프로 그려보면
sns.barplot(x='class', y='survived', data=titanic)
<AxesSubplot:xlabel='class', ylabel='survived'>
- 그래프가 그려졌다. 코드를 분석해 보면
- 막대그래프는 바차트라고 한다. 그래서 sns에 있는 barplot을 불러온다. 그 코드가 sns.barplot() 함수다.
- 막대그래프, 즉 바차트에 필요한 데이터 X축과 Y축에 대응하는 데이터다. 그래서 사용된 data는 'titanic'이고 X축에는 'class'가 Y축에는 'survived'가 대응된다. 그게 "(x='class', y='survived', data=titanic)" 이렇게 표시된다.
그러면 정박지(embarked)별 생존자(survived)의 막대그래프를 그려보자¶
sns.barplot(x='embarked', y='survived', data=titanic)
<AxesSubplot:xlabel='embarked', ylabel='survived'>
이렇게 나온다.
이제 선그래프로 그려보자.
sns.lineplot(x='embarked', y='survived', data=titanic)
<AxesSubplot:xlabel='embarked', ylabel='survived'>
단지, "barplot" 글자를 "lineplot" 으로 변경했을 뿐이다.
이렇게 쉽게 적용할 수 있다.
4. 빈도 그래프 그려보자
- 카테고리 변수에 대한 빈도를 나타내는 그래프이다.
- 빈도수를 의미하는 count를 적용하기 때문에 그래프 함수는 "sns.countplot()"이다.
아, 참,.. 빈도그래프(countplot)는 X축만 필요하다.
이유는 Y축이 빈도가 되기 때문이다.
코딩해 보면
sns.countplot(x='class', data=titanic)
<AxesSubplot:xlabel='class', ylabel='count'>
그래프는 위와 같다.
Y축의 제목을 보면 'count'라고 나타난 것을 볼 수 있다.
이전 막대그래프를 보면 Y축에 할당해선 데이터명이 Y축 제목으로 나와있다.
위위의 그래프를 보라. 확인할 수 있다.
5. 도수분포도인 히스토그램을 그려보자¶
- 히스토그램은 어떤 변수의 구간별 빈도수를 나타낸 그래프다.
그래서 히스토그램에는 수치형변수를 적용한다. - 함수명은 히스토그램 약어인 "hist"를 적용하여 "sns.histplot()"이 된다.
- 타이타닉 데이터에서 요금(fare)의 히스토그램을 그려보자.
sns.histplot(data=titanic, x="fare")
<AxesSubplot:xlabel='fare', ylabel='Count'>
그려졌다.
그런데, X축이 너무 좁게 편성되었다. 10 단위로 편성되었다.
그래서 폭을 조정해 보자. 50
으로 조정해 보자.
sns.histplot(data=titanic, x="fare", binwidth=50)
<AxesSubplot:xlabel='fare', ylabel='Count'>
모양이 바뀌었다.
seaborn 라이브러리는 이렇게 그래프를 간단하게 그릴수 있다.
그래프로 더욱 정교히 그리기 위해서는 각 함수가 제공하는 옵션을 익혀야 한다.
하나씩 하나씩 해 보면, 옵션을 하나씩 익힐 수 있다.
천천히 하나씩 익히도록 하자.
/