[Python.TitanicOverview] 데이터 입력 및 전처리

2021. 2. 25. 05:00Python과 머신러닝/최종 실습 (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]:

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]:

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]:

Ou[10]

  • In[8]은 train data와 test data의 개수를 종종 사용해야 되기 때문에 정의한다.
    • 기준은 Survived 값이 null인지 여부에 따라서 확인 가능하다
  • In[9]는 두 가지 동작을 한다
    • 우선은 Survived 열을 제외시킨다. Machine Learning이든 데이터 분석이든 Y변수(종속변수)는 따로 관리하는 것이 용이하여 기존 df에서는 뺀다.
    • 그렇게 pop 한 Survived data에서 유의미한 데이터를 가진 것은 training dataset이기 때문에,
      이에 대한 y 데이터만 추출하여 y_true로 관리한다.
반응형