Python/기타

[seaborn 시본(2)] 데이터 시각화 - 범주 데이터

노트북 산 김에 공부 2023. 4. 30. 18:00

정형 데이터는 크게 수치형 데이터와 범주형 데이터로 나뉩니다.

수치형 데이터는 사칙 연산이 가능한 데이터입니다. 범주형 데이터는 사칙 연산이 불가능합니다.

이러한 수치형 데이터를 시각화를 하여 데이터의 구성 및 피처 관리를 효율적으로 할 수 있습니다.

matplotlib(맷플롯립)과 seaborn(시본) 모두 파이썬으로 그래프를 그릴때 많이 사용하는 라이브러리입니다.

그러나 이 포스트는 seaborn으로 예제를 풀겠습니다 (더 간결하고 정결합니다)

import seaborn as sns
titanic = sns.load_dataset('titanic') # 타이타닉 데이터 불러오기

seaborn은 load_dataset( ) 함수로 특정 데이터셋을 쉽게 불러올수 있습니다.

titanic 데이터셋을 분석해 보겠습니다.


범주형 데이터

범주형 데이터는 범주를 나눌 수 있는 데이터로, 사칙 연산이 불가능합니다

순서형 데이터는 순위를 매길 수 있는 데이터입니다 예를 들어 학점은 A+, B 등 순위가 정해져있습니다.

명목형 데이터는 순위가 따로 없는 데이터입니다 성별과 우편번호가 여기 속합니다.

seaborn 제공 주요 범주형 함수
barplot( ) 막대 그래프
pointplot( ) 포인트 플롯
boxplot( ) 박스 플롯
violinplot( ) 바이올린 플롯
countplot( ) 카운트 플롯

막대 그래프 ( barplot )

막대 그래프는 범주형 데이터 값(x)에 따라 수치형 데이터 값(y)이 어떻게 달라지는지 파악할 때 사용합니다.

수치형 데이터 평균은 막대 높이로, 신뢰구간은 오차 막대(error bar)로 표현합니다.

sns.barplot(data=titanic, x='class',y='fare') # 좌석 등급별 가격

포인트 플롯( pointplot )

포인트 플롯은 막대 그래프를 점과 선으로 나타냅니다.

그렇기에 한 화면에 여러 그래프를 그릴 때 유용합니다.

sns.pointplot(data=titanic, x='class', y='fare', hue='sex')

박스플롯( boxplot )

박스플롯은 막대 그래프나 프인트 플롯보다 더 많은 정보를, 구체적으로 5가지 요약 수치를 제공합니다.

  • 제 1사분위 수(Q1) : 전체 데이터 중 하위 25%에 해당하는 값
  • 제 2사분위 수(Q2) : 50%에 해당하는 값(중앙값)
  • 제 3사분위 수(Q3) : 상위 25%에 해당하는 값
  • 사분위 범위 수(IQR) : Q3 - Q1
  • 최댓값 : Q3 + (1.5 * IQR)
  • 최솟값 : Q1 - (1.5 * IQR)
  • 이상치 : 최댓값보다 큰 값과 최솟값보다 작은 값

boxplot( )의 x, y 파라미터에는 각각 범주형 데이터와 수치형 데이터를 전달합니다.

sns.boxplot(data=titanic, x='class', y='age') # 객실 등급별 나이

바이올린플롯( violinplot )

바이올린플롯은 박스플롯과 커널밀도추정 함수 그래프를 합쳐 놓은 그래프입니다.

박스플롯이 제공하는 정보를 모두 포함하며, 모양은 커널밀도추정 함수 그래프 형태입니다.

sns.violinplot(data=titanic, x='class', y='age', hue='sex')
sns.violinplot(data=titanic, x='class', y='age', hue='sex', split=True) # 피처를 반으로 나누기

split 파라미터를 Ture로 전달해 좀더 간편하게 그래프를 출력할 수 있습니다.