seaborn, matplotlib으로 진행하는 시각화 EDA (범주형)

  • 일정한 범위 내에서 어떻게 분포되어있는지 확인

    특징의 형태가 파악되었다면, 적합한 시각화를 통해 직관적인 탐색을 진행한다.

수치형과 동일하게 Colab환경에서 seaborn, matplotlib library를 이용하여 시각화를 통한 EDA를 실습해보자.

실습데이터 : seaborn 라이브러리를 통해 불러 올 수 있는 tips 데이터

  • total_bill: 총 합계 요금표
    tip: 팁
    sex: 성별
    smoker: 흡연자 여부
    day: 요일
    time: 식사 시간
    size: 식사 인원

1) 범주형변수 1개

sns.countplot(), plt.pie()

1.1) 카운트도표_sns.countplot()

  • day변수(명목형)의 카테고리별 빈도수(y축)를 알 수 있다.

1.2) 파이차트_plt.pie()

  • sex변수(명목형)의 각 부분의 차지 비율을 알 수 있다.(남성 64.34% / 여성 35.66%)

기초적인 수치를 통해 해당 변수가 어떤 분포를 띄고있는지 알 수 있는 도표를 먼저 사용해보자.


2) 범주형변수+수치형변수

sns.lineplot(), sns.scatterplot(), sns.barplot(), sns.pointplot(), sns.boxplot(), sns.violineplot()

2.1) 선도표_sns.lineplot()

feat.범주형(명목형)+수치형(연속형+이산형)

  • 수치형(연속형) + 수치형(이산형) 일때 쓰였던 선도표에 범주형(명목형)을 표기할 수 있다.
  • 식사자리에 흡연자 여부에 따라 식사인원과 팁의 상관관계를 확인할 수 있다.
    (흡연자가 자리한다면 3명이내의 식사에선 비흡연자 테이블보다 tip의 상승폭이 크지만, 4명 이상일 경우 tip이 오히려 줄어들며, 흡연자 존재시 식사인원이 결정될 수도 있다는 인사이트 확보)

2.2) 산점도_sns.scatterplot()

feat.범주형(명목형)+수치형(연속형+연속형)

  • 수치형(연속형) + 수치형(연속형) 일때 쓰였던 산점도에 범주형(명목형)을 표기할 수 있다.
  • total_bill(지불금액)과 tip(팁)의 상관관계를 확인하되, sex(성별)을 포함하여 구체적인 확인이 가능하다.
    (지불금액이 30 이상인 식사는 남성들의 식사가 많았고, 같은 구역에서 팁 또한 남성이 더 많이 준다는 인사이트 확보)

2.3) 막대그래프_sns.barplot()

feat.범주형(명목형)+수치형(연속형)

  • x축과 y축에 각각 범주형과 수치형을 도식하여 카테고리별 평균,중위수,최댓값 등 확인가능
  • day(요일)에 따른 total_bill(지불금액) 평균치 확인 가능 (중앙에 그려진 검은 선은 95%의 신뢰구간 정보를 담음)
    (평일식사보다 주말식사에 지불하는 비용의 평균이 더 높다는 인사이트 확보)

2.4) 포인트도표_sns.pointplot()

feat.범주형(명목형)+수치형(연속형)

  • 막대그래프와 같은 개념으로 같은 기능을 한다.
  • x축과 y축에 각각 범주형과 수치형을 도식하여 카테고리별 평균,중위수,최댓값 등 확인가능
    (주말식사에 지불하는 비용의 평균이 더 높으며, 금요일 식사에 지불하는 비용의 분포가 넓다는 인사이트 확보)

2.5) 상자수염도표_sns.boxplot()

feat.범주형(명목형)+수치형(연속형)

  • 막대그래프와 포인트도표는 y축이 평균,중위수,최댓값과 같은 특정값 확인에 특화되어있으나, 상자수염도표는 분포를 확인할 수 있다.
  • x축과 y축에 각각 범주형과 수치형을 도식한다.
    (점심식사와 저녁식사의 지불금액 분포를 확인하였을때 중위값은 저녁식사가 더 높으며, 점심식사의 상자크기가 더 작으므로, 점심식사는 중위수 근처에 데이터가 몰려있다는 인사이트 확보)

2.6) 바이올린도표_sns.violineplot()

feat.범주형(명목형)+수치형(연속형)

  • 상자수염도표에서 표현이 취약한 분산 정보를 커널밀도함수를 통해 표현한다.
  • 중앙 검은색 직사각형 모양이 Q1(1사분위수)~Q3(3사분위수)를 나타내며 흰색점이 Q2(2사분위수)를 표현한다.
    (양쪽으로 볼록 튀어나온 부분이 중위수 값이며, 돌출길이가 저녁식사보다 점심식사가 길기에 중위수 부근에 더 많은 값들이 분포했다는 인사이트를 보다 직관적으로 확보)
  • 범주형(명목형) + 범주형(명목형) + 수치형(연속형) 에 대한 정보도 담을 수 있다.
    (식사시간 + 성별 + 지불금액)
  • split 옵션을 통해 성별에 따른 분포를 더 직관적으로 확인할 수 있다.
  • 점심식사에서 돌출길이를 보면, 남성의 지불금액(좌츨 푸른색)보다 여성의 지불금액(우측 주황색)이 더 길단것을 알 수 있고, 여성의 지불금액이 중위수에 몰린 분포란 인사이트를 얻을 수 있다.
  • 저녁식사에서 돌출길이는 남녀가 비슷하지만, 돌출부분의 높이에서 여성이 더 낮은곳에 위치하고 있으므로, 여성 지불금액은 남성 지불금액보다 낮다고 볼 수 있으며, 남성이 돈을 더 썼다는 인사이트를 얻을 수 있다.

복합적인 변수들의 정보를 담고있는 도표를 사용하여 직관적으로 파악하자.


분석가가 데이터를 개인적으로 간편히 파악하기 위해 사용하는 대중적인 도표들을 소개해 보았다.

측정 척도의 유형에 따라 활용할 수 있는 도표들을 익히고 내포하는 의미들을 이해하여 신뢰도 갖춘 분석의 시작점을 찾길 바란다.

추가적으로 새로운 특징을 만들거나, 삭제하는 등 타인에게 근거로 제시하는 과정에선 심미성을 향상시켜 더 높은 직관성을 갖춰야 하기에 도표의 색, 점모양 등의 변경으로 심미성 향상이 가능함을 추가적으로 시사한다.

Today_Summary :

수박을 고를때 줄무늬가 선명한지, 수박꼭지가 마르지 않았는지, 두드렸을때 소리가 청명한지 등 복합적으로 확인하여 선택하듯 내포하는 정보들을 복합적으로 종합하여 이해하자.


References

측정척도의 유형과 내용
Matplotlib가이드
Seaborn가이드

profile
암묵지를 형식지로 풀어내는 데이터사이언티스트

0개의 댓글