데이터 씹고 뜯고 맛보고 즐기기 - EDA

Henry Lee·2020년 12월 19일
0
post-thumbnail

EDA?
탐색적 데이터 분석: Exploratory Data Analysis

CNN, RNN 등의 방법론적 접근이 아니라,
데이터 그 자체만으로부터 인사이트를 얻어내는 접근법.


Process

  1. 분석 목적변수 확인
  2. Data 전체적으로 살펴보기
  3. Data 개별 속성 파악하기

Example: Titanic Problem

  • 분석 목적
    생존자들은 어떤 특징이 있을까?
    가설: Pclass가 높을 수록 생존율이 높다.
  • 변수
    var(변수명), definition(그 정의), key(확인사항, 표현방식) 등을 확인.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

%matplotlib inline

titanic_df = pd.read_csv("./train.csv")

# 각 col의 dtype 확인
titanic_df.dtypes

# Data 전체 정보 확인
titanic_df.describe()

# 상관 계수 확인 - 상관성과 인과성의 차이 인지
titanic_df.corr()

# 결측치 확인
titanic_df.isnull()

# 생존자 / 사망자 수
titanic_df["Survived"].value_counts()

# Barplot으로 시각화
sns.countplot(x="Survived", data=titanic_df)
plt.show()

# Pclass에 따른 인원 파악
titanic[['Pclass', 'Survived']],groupby(['Pclass']).count()

# 생존자 인원을 Pclass 분류
titanic[['Pclass', 'Survived']],groupby(['Pclass']).sum()

# 생존율
ratio = titanic[['Pclass', 'Survived']],groupby(['Pclass']).mean()

# 히트맵으로 시각화
sns.heatmap(ratio)
plt.show() #plot?

가설: 어린 아이와 노인의 생존율이 높다.

fig, ax = plt.subplots(1,1,figsize=((0,5))
sns.kdeplot(x=titanic_df[titanic_df.Survived==1]['Age'], ax=ax)
sns.kdeplot(x=titanic_df[titanic_df.Survived==0]['Age'], ax=ax)

plt.legend(['Survived', 'Dead'])
plt.show()

*가설: 복합적인 요소(성별과 Pclass)가 생존율에 미치는 영향

sns.catplot(x="Pclass", y="Survived", hue="Sex", kind="point", data=titanic_df)
plt.show()

많은 DataCase를 다루는 것만큼, 한 Data를 다각적으로 분석하는 것도 중요!

profile
Today I Learned. AI Engineer.

0개의 댓글