Python_Basic

[Python. Seaborn] FacetGrid, PairGrid, PairPlot, kdeplot

Genie Lee 2022. 2. 24. 21:02
728x90
반응형

이번 글에서는 그래프 시각화에 자주 쓰이는 plot들을 정리해 보았습니다.

 

Keywords

- FacetGrid

- PairGrid / PairPlot 

- kdeplot

 

Facet Grid

  • 쉽게 말해 Multi plot이라고 이해하면 됩니다.
  • 하나의 데이터를 여러 개의 plot으로 나눠서 보고자 할 때 사용됩니다.
g = sns.FacetGrid(tips, col='time', row='smoker') #2x2 graph 그리기 
g = g.map(plt.hist, 'total_bill') #각 분류별 total_bill의 histogram

 

  • 위의 예시는 row/col을 나눠서 흡연자 여부와 점심/저녁 여부에 따른 총 식사 비용의 histogram을 보여주고 있습니다.
  • tips 데이터를 column은 time을 기준으로 구분하고, row는 smoker를 기준으로 구분하여 plt.hist(histogram)으로 표현하라는 의미입니다.

Pair Grid

 

  • PairPlot 혹은 PairGrid 한 dataset에 존재하는 모든 series들 간의 상관관계를 한 번에 보여주는 표이다.
  • 각 X변수들 간에 어떤 관계가 있는지 보는 것도 데이터 분석에 큰 도움이 된다.
  • 아래 같이 기본으로 설정할 경우, 대각선 (diagonol)자리에 무의미한 분포도가 나오는데, 이 자리에 특정  그래프 타입을 지정할 수도 있다.
iris = sns.load_dataset('iris') 
g = sns.PairGrid(iris) 
g.map(plt.scatter)

 

원하는 위치에 원하는 형태의 그래프를 지정해서 X변수들 간의 상관관계 그리기

  • g.map_diag(plt.hist) : 대각선(diagonal) 위치에는 histogram을 그려라
  • g.map_offdiag(plt.scatter) : diagonal 외에는 변수들 간의 scatter plot을 그려라
g = sns.PairGrid(iris) 
g.map_diag(plt.hist)
g.map_offdiag(plt.scatter)

 

kdeplot

데이터가 어떤 모양으로 얼마나 퍼져 있는지 분포를 확인할 때는 히스토그램(histogram)을 많이 활용하곤 합니다. 하지만 히스토그램은 구간을 어떻게 설정하냐에 따라 결과물이 매우 달라져서, 엉뚱한 결론과 해석을 내릴 수 있기 때문에 조심해야 합니다.

그래서 그 대안으로 많이 쓰이는 게 커널 밀도 추정(KDE: Kernel Density Estimator)입니다.

 

쉽게 얘기하면 히스토그램 같은 분포를 스무스~ 부드럽게 곡선화(?) 시켜서 그려주는 겁니다. 이렇게.


seaborn으로 KDE plot 그리기

기본적으로 두 개 인자만 넣어주면 된다. data shade

  • data: pandas의 DataFrame, 파이썬의 list, numpy의 배열 등 시각화시키고 싶은 데이터 세트
  • shade: 곡선 아래의 공간을 음영 처리할지 결정 (True/False)

예를 들어 3개의 데이터 세트를 가지고 KDE 플롯을 그린다고 하면 이렇게!

sns.kdeplot(dataset1, shade=True)
sns.kdeplot(dataset2, shade=True)
sns.kdeplot(dataset3, shade=True)
plt.legend()
plt.show()

출처: https://hleecaster.com/python-seaborn-kdeplot/

728x90
반응형