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

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

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

Colab환경에서 seaborn, matplotlib library를 이용하여 시각화를 통한 EDA를 실습해보자.

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

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

1) 수치형변수 1개

plt.hist(), sns.distplot(), sns.boxplot()

1.1) 히스토그램_plt.hist()

  • total_bill변수(연속형)의 구간별(x축) 빈도수(y축)를 알 수 있다.

1.2) 분포도_sns.displot()

  • 히스토그램에 커널밀도함수가 추가된 그래프로, 부드러운 확률밀도함수를 동시확인 가능하다.
  • 히스토그램의 경우 y축이 빈도수였으나, 분포도의 경우 비율로 표기된다.

1.3) 상자수염그림_sns.boxplot()

  • 최소값(가장 아래), 최대값(가장 위), Q1(1사분위수_하위25%), Q2(2사분위수_50%),
    Q3(3사분위수_75%), 이상치(outlier) 확인이 가능하다.
  • 자료의 퍼짐과 순위를 한번에 담고있으며, 이상치를 확인하는데 용이하다.
  • 이상치 판단 기준은 IQR = Q3-Q1 = 24.1275-13.3475 = 10.78 을 먼저 구한뒤
    Q1 - 1.5 X IQR > Outlier
    Q3 + 1.5 X IQR < Outlier
    에 의해
    13.3475 - 1.5 X 10.78 = -2.8225 보다 작거나
    24.1275 + 1.5 X 10.78 = 40.2975 보다 큰 값이 이상치가 된다.

    total_bill은 지불금액이기 때문에 음의값이 존재하지 않으며, boxplot상에서도 아랫부분 이상치를 확인할 수 없다.
    하지만, 40.2975보다 큰 값들은 boxplot상에서 점으로 표기된 이상치로 확인이 된다.

변수 한개에 한정하여 확인되기에, 전체 변수를 확인하기 어렵다면, 주요변수는 확인하자.


2) 수치형변수 2개

sns.heatmap(), sns.lineplot(), sns.scatterplot(), sns.regplot()

2.1) 히트맵_sns.heatmap()

  • 변수들간의 상관관계를 알 수 있다.
  • corr()함수를 시각화 한 것으로 상관관계에 따라 타일의 색이 변화한다.
  • tip이 많을수록 total_bill(총지불금액)이 증가하는 tip과 total_bill은 높은 양의 상관관계이다.
    (size 또한 상대적으로 약할 뿐 높은 양의 상관관계)

2.2) 선도표_sns.lineplot() feat.연속형+이산형

  • 연속형 데이터와 이산형 데이터의 관계를 선으로 나타내며, 상관관계를 알 수 있다.
  • size(식사인원)이 5명일때를 제외하곤 식사인원이 많아질수록 tip도 많아진다.
  • 데이터가 둘 다 연속형일 경우, 모든 경우의수를 반영하는 선도표가 그려져 파악이 어렵다.
    (산점도로 대체)

2.3) 산점도_sns.scatterplot() feat.연속형+연속형

  • 수치형 데이터 간 상관관계를 점으로 나타내며, x와 y 모두 연속형일때 선호된다.
  • 전체적으로 우상향 하고 있기 때문에, 다시한번 tip과 total_bill은 양의 상관관계임을 알 수 있다.
  • 연속형+이산형 조합일 경우 도식은 가능하나, 선도표가 더욱 직관적이다.

2.4) 회귀도표_sns.regplot() feat.연속형+연속형

  • 회귀선을 도식하여 산점도보다 구체적인 선형관계를 확인할 수 있다.
    (선의 음영으로 신뢰구간 정보 파악 가능)

새로운 특징을 만들어내거나, 통합하는 과정에서 특징간의 관계를 참고하자.
ex) 주성분 분석


연속형과 이산형 데이터를 구분하여 알맞은 시각화를 통해 직관적이고 효율적인 데이터탐색을 진행하며 필요시 근거로 제시할 수 있도록 한다.

Today_Summary : 수박을 고를때 줄무늬가 선명한지 보듯 직관성을 갖춘 탐색을 진행하자


References

Matplotlib가이드
Seaborn가이드

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

0개의 댓글