본문 바로가기

Python/Pandas

Pandas_06. 타이타닉

반응형
day3_타이타닉
In [1]:
import numpy as np
import pandas as pd

csv 데이타 파일 읽어오기

데이타프레임이름 = pd.read_csv(dataFile경로, index_col='인덱스로사용할컬럼')
데이타프레임이름.shape : 구조 확인
In [49]:
train = pd.read_csv('data/train.csv',index_col='PassengerId')
train.shape
Out[49]:
(891, 11)

데이타프레임에서 앞과 뒤에 갯수 정해서 표시하기

데이타프레임명.head() : 5개 
데이타프레임명.tail() : 5개 
데이타프레임명.head(숫자)
데이타프레임명.tail(숫자)
In [9]:
train.tail()
Out[9]:
Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
PassengerId
887 0 2 Montvila, Rev. Juozas male 27.0 0 0 211536 13.00 NaN S
888 1 1 Graham, Miss. Margaret Edith female 19.0 0 0 112053 30.00 B42 S
889 0 3 Johnston, Miss. Catherine Helen "Carrie" female NaN 1 2 W./C. 6607 23.45 NaN S
890 1 1 Behr, Mr. Karl Howell male 26.0 0 0 111369 30.00 C148 C
891 0 3 Dooley, Mr. Patrick male 32.0 0 0 370376 7.75 NaN Q

컬럼 정보 확인하기

  • PassengerId : 승객 번호
  • Survived : 생존여부(1: 생존, 0 : 사망)
  • Pclass : 승선권 클래스(1 : 1st, 2 : 2nd ,3 : 3rd)
  • Name : 승객 이름
  • Sex : 승객 성별
  • Age : 승객 나이
  • SibSp : 동반한 형제자매, 배우자 수
  • Patch : 동반한 부모, 자식 수
  • Ticket : 티켓의 고유 넘버
  • Fare 티켓의 요금
  • Cabin : 객실 번호
  • Embarked : 승선한 항구명(C : Cherbourg, Q : Queenstown, S : Southampton)
In [5]:
train.columns
Out[5]:
Index(['Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp', 'Parch', 'Ticket',
       'Fare', 'Cabin', 'Embarked'],
      dtype='object')

전체 갯수

len(데이타프레임이름)
In [6]:
len(train)
Out[6]:
891

컬럼의 데이터형 확인하기

In [7]:
train.dtypes
Out[7]:
Survived      int64
Pclass        int64
Name         object
Sex          object
Age         float64
SibSp         int64
Parch         int64
Ticket       object
Fare        float64
Cabin        object
Embarked     object
dtype: object

각 객실 등급별 분포 수 알아보기

데이타프레임[컬럼명].value_counts()

train['Pclass'].value_counts()

1등칸 객실 승객 10명 추출

train[train['Pclass'] == 1].head(10)

1등칸 객실 승객의 생존 리스트

train[(train['Pclass'] == 1) & (train['Survived'] == 1)].head()

1등칸 객실 승객의 생존자 수는?

In [23]:
# 1등칸 객실 승객의 생존자 수 
result = train[(train['Pclass'] == 1) & (train['Survived'] == 1)]
result.head(3)
Out[23]:
Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
PassengerId
2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
12 1 1 Bonnell, Miss. Elizabeth female 58.0 0 0 113783 26.5500 C103 S
In [24]:
len(result)
Out[24]:
136

3등칸 객실 남자 승객의 생존자 수는?

In [25]:
# 성별 컬럼 구성요소 확인하기
train['Sex'].value_counts()
Out[25]:
male      577
female    314
Name: Sex, dtype: int64
In [26]:
# 3등칸 객실 남자 승객의 생존자 수 
result = train[(train['Pclass'] == 3) & (train['Survived'] == 1) & (train['Sex'] == 'male')]
In [27]:
result.head()
Out[27]:
Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
PassengerId
37 1 3 Mamee, Mr. Hanna male NaN 0 0 2677 7.2292 NaN C
66 1 3 Moubarek, Master. Gerios male NaN 1 1 2661 15.2458 NaN C
75 1 3 Bing, Mr. Lee male 32.0 0 0 1601 56.4958 NaN S
82 1 3 Sheerlinck, Mr. Jan Baptist male 29.0 0 0 345779 9.5000 NaN S
108 1 3 Moss, Mr. Albert Johan male NaN 0 0 312991 7.7750 NaN S
In [28]:
len(result)
Out[28]:
47

전체 생존률 구하기

(생존자수/전체승객인원)*100

len(train[train['Survived'] == 1])

len(train)

(len(train[train['Survived'] == 1])/len(train))*100

round(숫자, 소수점자리수)

round((len(train[train['Survived'] == 1])/len(train))*100, 3)

퀴즈

1. 여자 생존자수 ? 남자 생존자수 ?
2. 남자와 여자의 생존률 구하기
3. 1등칸의 생존률 구하기
In [ ]:
 
In [43]:
# 여자 생존자수
result_female = train[(train['Sex'] == 'female') & (train['Survived'] == 1)]
print('여자 생존자수 : ', len(result_female))

# 남자 생존자수
result_male = train[(train['Sex'] == 'male') & (train['Survived'] == 1)]
print('남자 생존자수 : ', len(result_male))
여자 생존자수 :  233
남자 생존자수 :  109
In [ ]:
train['Sex'].value_counts()
In [ ]:
len(train[train['Sex'] == 'female'])
In [ ]:
len(train[train['Sex'] == 'male'])
In [44]:
# 남자와 여자의 생존률 구하기 

print('여자 : ', (len(result_female)/len(train[train['Sex'] == 'female']))*100, '%')
print('남자 : ', (len(result_male)/len(train[train['Sex'] == 'male']))*100, '%')
여자 :  74.20382165605095 %
남자 :  18.890814558058924 %
In [45]:
# 1등칸의 생존률 구하기 

print('1등칸 생존률 : ', 
      round((len(train[(train['Pclass'] == 1) & (train['Survived'] == 1)])
            /len(train[train['Pclass'] == 1])) * 100, 2), '%')
1등칸 생존률 :  62.96 %

결측값(NaN) 확인하기

In [20]:
# 결측값(NaN) 이면 True
train['Age'].isnull().head()
Out[20]:
PassengerId
1    False
2    False
3    False
4    False
5    False
Name: Age, dtype: bool
In [22]:
train.head()
Out[22]:
Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
PassengerId
1 0 3 Braund, Mr. Owen Harris male 22.0 1 0 A/5 21171 7.2500 NaN S
2 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 0 PC 17599 71.2833 C85 C
3 1 3 Heikkinen, Miss. Laina female 26.0 0 0 STON/O2. 3101282 7.9250 NaN S
4 1 1 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 0 113803 53.1000 C123 S
5 0 3 Allen, Mr. William Henry male 35.0 0 0 373450 8.0500 NaN S
In [50]:
# Age 컬럼값에서 결측값(NaN) 총 갯수 확인하기 
len(train[train['Age'].isnull()])
Out[50]:
177
In [63]:
# Age 컬럼값이 결측값(NaN)인 행 추출 5개만 표시 
train[train['Age'].isnull()].head()
Out[63]:
Survived Pclass Name Sex Age SibSp Parch Ticket Fare Cabin Embarked
PassengerId

'Age' 컬럼의 결측값(NaN)을 평균값으로 대체하기

In [65]:
# 평균값
age_avr = round(train['Age'].mean(),2)
age_avr
Out[65]:
29.7
In [66]:
# 평균값을 'Age' 컬럼의 NaN으로 교체
train.loc[train['Age'].isnull(), 'Age'] = age_avr
In [67]:
# Age 컬럼값에서 결측값(NaN) 총 갯수 확인하기 
len(train[train['Age'].isnull()])
Out[67]:
0

Quiz

1) 'Cabin' 결측값 NaN 을 공백으로 교체하기

2) 'Embarked'컬럼에서 아래와 같이 데이터값을 교체한다.
C -> France
Q -> New Zealand
S -> England
In [57]:
len(train.loc[train['Cabin'].isnull()])
Out[57]:
687
In [58]:
train.loc[train['Cabin'].isnull(), 'Cabin'] = " "
In [59]:
len(train.loc[train['Cabin'].isnull()])
Out[59]:
0
In [61]:
train.loc[train['Embarked']=='C', 'Embarked'] = "France"
train.loc[train['Embarked']=='Q', 'Embarked'] = "New Zealand"
train.loc[train['Embarked']=='S', 'Embarked'] = "England"
In [62]:
train[['Name','Embarked']].head(7)
Out[62]:
Name Embarked
PassengerId
1 Braund, Mr. Owen Harris England
2 Cumings, Mrs. John Bradley (Florence Briggs Th... France
3 Heikkinen, Miss. Laina England
4 Futrelle, Mrs. Jacques Heath (Lily May Peel) England
5 Allen, Mr. William Henry England
6 Moran, Mr. James New Zealand
7 McCarthy, Mr. Timothy J England
In [ ]:
 
In [ ]:
 
반응형

'Python > Pandas' 카테고리의 다른 글

Pandas_05  (0) 2019.08.11
Pandas_04  (0) 2019.08.11
Pandas_03  (0) 2019.08.11
Pandas_02  (0) 2019.08.11
Pandas_01  (0) 2019.08.11