특징의 형태가 파악되었다면, 적합한 시각화를 통해 직관적인 탐색을 진행한다.
Colab환경에서 seaborn, matplotlib library를 이용하여 시각화를 통한 EDA를 실습해보자.
실습데이터 : seaborn 라이브러리를 통해 불러 올 수 있는 tips 데이터
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상에서 점으로 표기된 이상치로 확인이 된다.
변수 한개에 한정하여 확인되기에, 전체 변수를 확인하기 어렵다면, 주요변수는 확인하자.
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) 주성분 분석
연속형과 이산형 데이터를 구분하여 알맞은 시각화를 통해 직관적이고 효율적인 데이터탐색을 진행하며 필요시 근거로 제시할 수 있도록 한다.