본문 바로가기
AI 공부/파이썬

파이썬 (seaborn)

by AI Sonny 2022. 8. 31.
728x90

Seaborn

  • 내부적으로 Matplotlib을 호출하여 시각화하는 라이브러리

Seaborn 모듈을 사용하면 단순히 Matplotlib 하나만 사용할 때 보다 더 편하게 차트를 그릴 수 있다.

 

즉, Matplolib 시각화 차트 그리기를 Seaborn이 쉽게 그릴 수 있도록 도와준다.

 

예제를 통해 따라가보자.

 

- 교육용 데이터 가져오기

 

matplolib과 동일하게 Colab한글 깨짐 방지 코드를 실행해준다.

 

 

파이썬 (Matplotlib)

colab 한글 깨짐 방지 실행 후 런타임 다시 시작할 것 !apt -qq -y install fonts-nanum > /dev/null import matplotlib.pyplot as plt import matplotlib.font_manager as fm fontpath = '/usr/share/fonts/truet..

ai-sonny.tistory.com

 

import pandas as pd
import numpy as np
import seaborn as sns

 

이 후 pandas랑 numpy 그리고 seaborn을 import해준다.

 

seaborn에 교육용데이터인 iris를 load하고, 컬럼명을 한글로 바꿔준다.

 

df = sns.load_dataset("iris")
df.columns = ["꽃받침길이","꽃받침너비","꽃잎길이","꽃잎너비","꽃종류"]
df.head()

=>

꽃받침길이 꽃받침너비 꽃잎길이 꽃잎너비 꽃종류
0	5.1	3.5	1.4	0.2	setosa
1	4.9	3.0	1.4	0.2	setosa
2	4.7	3.2	1.3	0.2	setosa
3	4.6	3.1	1.5	0.2	setosa
4	5.0	3.6	1.4	0.2	setosa

 


seaborn 그래프 종류

- Relational plots

  • 두 변수의 관계를 볼 때

- Distribution plots

  • 변수의 데이터에 분포를 볼 때

- Categorical plots

  • 범주형 변수의 집계나 범주형 변수와 수치형 변수간에 관계를 볼 때

Relational plots

- line plot

sns.lineplot(x="꽃받침길이",y="꽃잎길이",hue="꽃종류",data=df) # hue = groupby같은 개념
plt.show()

 

line plot과 유사하게 x와 y에 대해 비교하여 볼 수 있다.

 

lineplot을 scatterplot으로 변경하면 산점도를 볼 수 있다.

 

hue는 groupby와 비슷한 기능이라 볼 수있다.

 

- relplot

  • lineplot 과 scatterplot 모두 그릴 수 있다.
sns.relplot(x="꽃받침길이",y="꽃잎너비",data = df,kind = "line") # kind 값에 따라 그래프가 달라지게 나온다.
plt.show() # hue 사용이 안된다.

 

replot은 kind값을 어떤 것을 넣느냐에따라 lineplot과 scatterplot을 나타낼 수 있다.

 

 

  • col 아규먼트는 열, row 아규먼트는 행
sns.relplot(x="꽃받침길이",y="꽃잎너비",kind="line", data=df, col="꽃종류") # row 시 행으로 나온다!
plt.show()

 

col과 row를 설정하면 행과 열로 그래프가 나타나는 것을 볼 수 있다.

 

 

- lmplot

  • 추정회귀선과 산점도를 그린다.
  • 추정회귀선이란 x에 따른 y값의 변화를 잘 설명하는 직선
sns.lmplot(x="꽃받침길이", y="꽃잎너비", data=df,hue="꽃종류")
plt.show()

 

lmplot은 산점도에서 추정회귀선을 그어 x와 y에 대한 변화를 쉽게 볼 수 있게 해준다.

 

lmplot도 hue가 가능하다.

 


heatmap

히트맵은 출력을 해보면 바로 알 수 있다.

 

sns.heatmap(df.corr(),annot=True,cmap="Blues") # corr 상관계수 나타내는 것
plt.show()

 

다음과 같은 형식이 히트맵이라고 볼  수 있다.

 

 

  • pairplot
    • 대각선 방향으로 히스토그램을 나타낸다.
    • 서로 다른 두 변수간의 산점도를 그린다.
sns.pairplot(data=df,hue="꽃종류")
plt.show()

 

개인적으로 pairplot이 유용해보였다.

 

두 변수의 산점도와 히스토그램을 볼 수 있어서 편리하였지만 속도가 너무 느렸다.

 

이것도 hue 사용가능하다.

 

 

reg라는 추정회귀선을 옵션을 주면 산점도에 추정회귀선이 나타나는 것도 볼 수 있다.

 

sns.pairplot(data=df,kind="reg") # reg = 추정회귀선
plt.show()

 


Distribution plots

 

  • distplot
sns.distplot(df["꽃받침너비"])
plt.show()

 

distplot을 보면 2개의 그래프를 동시에 볼 수 있다.

 

 

  • kdeplot
sns.kdeplot(df["꽃받침너비"]) # 정규분포인지 파악하기 위해 씀!
plt.show()

 

kdeplot은 정규분포인지를 파악할 때도 쓰인다.

 

 

sns.kdeplot(x="꽃받침길이", y="꽃받침너비",data=df,shade=True) # shade = 음영효과
plt.show()

 

이런 식으로도 그래프를 뽑아낼 수 있다.

 


Categorical

 

categorycal을 하기 위해 데이터를 titanic으로 변경한다.

 

df = sns.load_dataset("titanic")
cols_rename = {
    "survived" : "생존여부",
    "pclass" : "티켓등급",
    "sex" : "성별",
    "age":"나이",
    "sibsp":"형제자매_배우자수",
    "parch":"부모_자식수",
    "fare": "운임",
    "embarked" : "탑승항구"
}
df = df.rename(columns = cols_rename)
df.head()

 

  • countplot
# 성별로 생존여부 카운팅!!
sns.countplot(x="성별",hue="생존여부",data=df)
plt.show()

 

countplot을 이용하여 생존여부에 대한 카운팅을 할 수 있는데 이게 matplotlib에 비해 간단한 것 같다.

 

 

  • barplot
    • x(범주형)에 대한 y(수치형)의 통계치를 bar형태로 시각화
    • 신뢰구간도 표시!!
# 티켓등급별로 운임료의 표준편차를 보고싶다면?
sns.barplot(x="티켓등급",y="운임",data=df,estimator=np.std)
plt.show()

 

  • boxplot
sns.boxplot(x="나이",data=df) # 나이가 많은 쪽에 이상치가 많음!
plt.show()

 

boxplot도 표현이 가능하다.

 

 

추가적으로 matplotlib이나 seaborn 같은 경우 발표용이나 보고용이 아니다.

 

그저 데이터에 대한 새로운 정보를 찾거나 모델링 전후의 데이터를 비교하기 위해 사용된다.

 

발표용은 plotly라는 것이 있다.

 

나중에 한번해봐야겠다.

 


강사님이 seaborn과 matplotlib은 나중에 보고 그래프를 만들 수 있기만 하면 괜찮다 하였다.

 

그보단 pandas 기초에 중점을 두고 복습하는 것이 우선인 것 같다.

728x90

'AI 공부 > 파이썬' 카테고리의 다른 글

파이썬 (Matplotlib)  (0) 2022.08.31
파이썬 (Pandas를 이용한 전처리 - 1)  (0) 2022.08.30
파이썬 (Pandas를 이용한 EDA)  (0) 2022.08.30
파이썬 (Pandas 기초)  (0) 2022.08.30
파이썬 (Numpy)  (0) 2022.08.24

댓글