[Python.TitanicOverview] 데이터 입력 및 전처리
2021. 2. 25. 05:00ㆍPython과 머신러닝/최종 실습 (Titanic Dataset)
1. 데이터 입력
In [1]:import pandas as pd
import os
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
In [2]:sns.set(style='white') #white background style for seaborn plots
sns.set(style='whitegrid', color_codes=True)
In [3]:DATA_DIR='titanic'
os.listdir(DATA_DIR)
Out[3]:['test.csv', 'train.csv']
In [4]:data_files = reversed([os.path.join(DATA_DIR, filename) for filename in os.listdir(DATA_DIR)]) #train data가 먼저 들어오도록 넣어주기
In [5]:df_list=[]
for filename in data_files:
df_list.append(pd.read_csv(filename))
In [6]:df = pd.concat(df_list, sort=False) # df_list [0] [1]을 합치기
df
Out[6]:
- Data 원본 다운로드 : www.kaggle.com/c/titanic/data
- test와 train 데이터를 전부 다운받아서 작업 중인 폴더에 titanic이란 폴더 내에 저장한다.
- In[4]는 titanic 폴더 내의 파일들을 data_files에 옮기는데, train이 먼저 들어오고 test가 뒤에 붙도록 reversed를 했다.
- In[5]는 이렇게 읽은 데이터를 df_list에 하나씩 붙여 넣는다.
즉, df_list[0]에는 train data가, df_list[1]에는 test data가 들어간다. - In[6]는 이렇게 두 개의 별도 DataFrame에 있던 데이터를 하나로 합치기 위해서 pd.concat을 한다.
- 이렇게 하면 data의 index는 합쳐지기 전의 index를 갖고 있기 때문에 다시 reset을 해줄 필요가 있다.
In [7]:df = df.reset_index(drop=True)
df
Out[7]:
2. 기타 필요한 병수 정의
In [8]:number_of_train_dataset = df.Survived.notnull().sum()
number_of_test_dataset = df.Survived.isnull().sum()
print(number_of_train_dataset)
print(number_of_test_dataset)
Out[8]:891
418
In [9]:y_true = df.pop('Survived')[:number_of_train_dataset]
In [10]:df.tail()
Out[10]:
- In[8]은 train data와 test data의 개수를 종종 사용해야 되기 때문에 정의한다.
- 기준은 Survived 값이 null인지 여부에 따라서 확인 가능하다
- In[9]는 두 가지 동작을 한다
- 우선은 Survived 열을 제외시킨다. Machine Learning이든 데이터 분석이든 Y변수(종속변수)는 따로 관리하는 것이 용이하여 기존 df에서는 뺀다.
- 그렇게 pop 한 Survived data에서 유의미한 데이터를 가진 것은 training dataset이기 때문에,
이에 대한 y 데이터만 추출하여 y_true로 관리한다.
'Python과 머신러닝 > 최종 실습 (Titanic Dataset)' 카테고리의 다른 글
[Python.TitanicOverview] 데이터 전처리 2 - 결측치 처리 (0) | 2021.02.26 |
---|