본문 바로가기
인공지능/머신러닝

8. 데이터 결측치 시각화 - 데이터 결측치 시각화

by 으노으뇨 2023. 9. 25.
728x90
반응형
SMALL

https://www.kaggle.com/competitions/titanic/data?select=train.csv 

 

Titanic - Machine Learning from Disaster | Kaggle

 

www.kaggle.com

위 데이터를 받아서 파이썬으로 데이터 시각화를 해보겠습니다.

Kaggle에서 데이터셋 가져오기

위 주소로 들어가 타이타닉에 대한 정보가 있는 데이터셋을 검색한다.
데이터 익스플로어를 통해 데이터파일들을 CSV파일로 다운로드한다.


 데이터 결측치 시각화

다운로드 받은 3개의 파일을 이용해서 활용해 보곘습니다.

그리고 같은 폴더에 "ex1.py" 이렇게 파이썬 소스를 생성했습니다.

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sbn

train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

print(train.head())
print(test.head())

대강 확인하니 정보들이 모두 나오는 것을확인 할 수 있습니다.


모델 시각화

모델 훈련 및 모델검증

import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sbn

def drawChart(dataset, feature):
    Survived = dataset[dataset['Survived'] == 1][feature].value_counts()
    NSurvived = dataset[dataset['Survived'] == 0][feature].value_counts()
    df = pd.DataFrame([Survived, NSurvived])
    df.index = ['Survived','dead']
    df.plot(kind='bar', stacked=True)

train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

plt.style.use('ggplot')
sbn.set()
sbn.set_palette("Set2")

1. 1~3등석별 생존자

drawChart(train, 'Pclass')
plt.title("seat")
plt.show()

2. 성별 생존자

#성별 생존자
drawChart(train, 'Sex')
plt.title("sex")
plt.show()

3. 가족수 별 생존자.

tmp=train[(train['SibSp']>=3)] #가족수가 3명 이상인사람의 생존자
drawChart(tmp,'SibSp')
plt.title("family")
plt.show()

데이터 결측치 시각화

seaborn을 통해 결측치 시각화
import pandas as pd
import numpy as np

import matplotlib.pyplot as plt
import matplotlib as mpl
import seaborn as sbn

def drawChart(dataset, feature):
    Survived = dataset[dataset['Survived'] == 1][feature].value_counts()
    NSurvived = dataset[dataset['Survived'] == 0][feature].value_counts()
    df = pd.DataFrame([Survived, NSurvived])
    df.index = ['Survived','dead']
    df.plot(kind='bar', stacked=True)

train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

sbn.heatmap(train.isnull(),cbar=True)
plt.show()

데이터가 null 인경우에 히트맵을 채워보아라 라는 의미의 소스이다.

 아래 그림을 보면 age부분의 하얀색부분이 결측치이다.

그리고 cabin의 경우는 결측치가 굉장히 많다는 것을 알 수 있다.

missingno 를 이용한 데이터 결측치 시각화

1. 매트릭스를 이용해서 시각화

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import missingno as msno

train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')

msno.matrix(train)
plt.show()

생각보다 엄청크게 나온다.

2. 바 차트로 보기

3. 히트맵으로 보기

히트맵은 -1~1까지 에서 -1과 가까울수록 연관성이 적은 그래프이다.

그러나 현재 타이타닉에 대한 컬럼들은 모두 독립적인 변수여서 히트맵이 그렇게 유용하지 않다.

4. 댄드로그램

댄드로그램은 계층형 클러스터링 알고리즘을 사용한다.

@ 계층, #계층  클러스터링을 하여 보여주는 것이다.

0에 가까울 수록 결측치가 적다고 볼 수 있다.

728x90
반응형
LIST

댓글