티스토리 뷰
타이타닉 데이터에 대해서 분석을 해보고자 한다.
이 데이터는 데이터 사이언스나 머신러닝을 공부한 사람들은 많이 들어봤을만한 데이터분석 경연 사이트인 캐글(Kaggle)에서 입문자용으로 가장 많이 사용하는 예제이다.
가장 많이 사용되는 데이터이므로 다양한 사람들이 다양한 방법으로 다양한 관점에서 데이터를 분석 하고 있기 때문에 이 데이터를 가지고 공부를 해보면 데이터 분석의 전반적인 과정을 습득하는데 도움이 되겠다 싶어 다뤄본다.
데이터는 kaggle사이트에 들어가면 얻을 수 있다. https://www.kaggle.com/
캐글 타이타닉 데이터 분석 - 1부터 3까지 3단계에 걸쳐 다룰것이다.
먼저 캐글 타이타닉 데이터 분석 - 1에서는 데이터를 불러오고 탐색적 자료 분석(EDA)을 적용해 시각화까지 해보자.
1. 데이터 수집¶
train 데이터셋과 test 데이터 셋을 케글에서 다운받아 로드하자.
import pandas as pd
train = pd.read_csv('titanic/train.csv')
test = pd.read_csv('titanic/test.csv')
2. 탐색적 자료 분석¶
train.head()
데이터 딕셔너리¶
- survived : 생존=1, 죽음=0
- pclass : 승객 등급. 1등급=1, 2등급=2, 3등급=3
- sibsp : 함께 탑승한 형제 또는 배우자 수
- parch : 함께 탑승한 부모 또는 자녀 수
- ticket : 티켓 번호
- cabin : 선실 번호
- embarked : 탑승장소 S=Southhampton, C=Cherbourg, Q=Queenstown
퍼스트 클래스의 가격은 3등급의 10배로 매우 비싸다. NaN은 Not a number로 data가 없다는 뜻이다. 모델링을 하기 전에 이런 missing필드는 feature engineering을 통해서 빠진 값을 넣어준다거나 평균값을 넣어준다거나 삭제같은 preprocessing이 필요하다.
전체 행과 열을 보자.
우리는 train 데이터 셋에서 891개의 행과 12개의 열을 확인할 수 있다.
test.head()
트레인 데이터 셋에서 정보를 받아서 머신러닝 모델을 만들고 그것을 통해서 테스트 데이터 셋에서 이 사람이 죽었는지 살았는지 분석해야 하므로 생존정보가 빠졌다.
train.shape
test.shape
train.info()
나이와 Cabin에 대한 정보가 많이 유실되었다. 이런 부분은 그냥 머신러닝에 넣으면 문제가 생기기 때문에 feature engineering을 이용해 바꿔줘야 한다.
test.info()
train.isnull().sum()
177개의 나이, 687개의 Cabin, 2개의 Embarked에 대한 정보 존재하지 않는다
test.isnull().sum()
시각화를 위해 파이썬 라이브러리 가져오기¶
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set() # 플롯의 seaborn 기본값 설정
범주형 features에 대한 막대차트¶
- pclass
- sex
- sibsp
- parch
- embarked
- cabin
살았는지 죽었는지 두개의 막대차트로 표시하는 함수를 정의해보자.
파라미터로는 feature를 하나씩 넣어 보내겠다.
def bar_chart(feature):
survived = train[train['Survived']==1][feature].value_counts()
dead = train[train['Survived']==0][feature].value_counts()
df = pd.DataFrame([survived,dead])
df.index = ['Survived','Dead']
df.plot(kind='bar',stacked=True, figsize=(10,5))
bar_chart('Sex')
차트는 여성이 남성보다 생존할 가능성이 더 높다는 것을 확인시켜 준다
bar_chart('Pclass')
차트는 1등급 클래스가 다른 클래스보다 생존할 가능성이 더 높다는 것을 확인시켜 준다
차트는 3등급 클래스가 다른 클래스보다 죽을 가능성이 더 높다는 것을 확인시켜 준다
bar_chart('SibSp')
차트는 혼자인 사람보다 형제나 배우자가 있는 사람들이 생존할 가능성이 더 높다는 것을 확인시켜 준다
bar_chart('Parch')
차트는 혼자인 사람보다 부모나 자식이 있는 사람들이 생존할 가능성이 더 높다는 것을 확인시켜 준다
bar_chart('Embarked')
C 선착장 탑승자의 경우 생존자가 더 많지만 다른 선착장 탑승자는 죽은 사람이 더 많을 가능성을 보여준다
여기 까지 우리는 탐색적 데이터 분석 과정에서 데이터 셋의 모양 확인, 타입을 확인하고 데이터의 Null값을 체크했다. 그리고 데이터 셋의 각 feature들이 생존(target)과 어떤 관계가 있는지 살펴보았다.
다음 과정은 feature engineering으로 머신러닝 알고리즘을 작동하기 위해 데이터에 대한 도메인 지식을 활용하여 특징(feature)를 만들어내는 과정이다.
출처: https://youtu.be/aqp_9HV58Ls 강의영상을 보면서 제작하였습니다.
'beginner > 파이썬 분석' 카테고리의 다른 글
맥주데이터 추천시스템_4/22 (0) | 2019.04.22 |
---|---|
캐글 타이타닉 데이터 분석 - 2 (1) | 2019.04.12 |
Pandas를 이용한 지하철 데이터 분석 (0) | 2019.03.12 |
분석 -1 (0) | 2019.03.06 |
로지스틱 회귀분석 실습 (0) | 2019.02.11 |