#データ分析の手順 (titanic)
備忘録としてデータ分析の手順を記載する。
##必要なライブラリのインストール
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
from pandas import Series,DataFrame
##データの取り込み
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
submission = pd.read_csv('gender_submission.csv')
##取り込んだデータを確認す る
#上位5件を表示
train.head()
#下位5件を表示
train.tail()
#各列のデータ数や平均、標準偏差、最小値、中央値、最高値などを表示
train.describe()
#データサイズを表示
train.shape
#データ数の確認(欠損値の確認)
train.info()
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S |
1 | 2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th... | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
2 | 3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S |
3 | 4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S |
4 | 5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 3 |
PassengerID: 乗客ID
Survived: 生存結果 (1: 生存, 2: 死亡)
Pclass: 乗客の階級 1が一番位が高い
Name: 乗客の名前
Sex: 性別
Age: 年齢
SibSp 兄弟、配偶者の数。
Parch 両親、子供の数。
Ticket チケット番号。
Fare 乗船料金。
Cabin 部屋番号
Embarked 乗船した港 Cherbourg、Queenstown、Southamptonの3種類がある。
取り込んだデータを様々な観点から確認する。
shapeとinfo()から欠損値の数を確認し、後ほど補完していく。
##データを可視化して確認する
男女の比を見てみる。
sns.countplot('Sex',data=train)
男女ごとの生存比率を見てみる。
sns.countplot('Sex',data=train,hue='Survived')
男女ごとのチケットのランクを見てみる。
sns.countplot('Sex',data=train,hue='Pclass')
年齢の分布を見てみる。
train['Age'].hist(bins=70)
男女の年齢層を見てみる・
fig = sns.FacetGrid(train,hue='Sex',aspect = 4)
fig.map(sns.kdeplot,'Age',shade=True)
oldest=train['Age'].max()
fig.set(xlim=(0,oldest))
fig.add_legend()
現段階でのデータを軽く確認したところ、
男女比:男子の方が多い
生存率(男女):女性の方が生存率が高い
年齢:幅広く分布している。20〜30が中心
チケット:男性の方がランクの低いチケットを買っている
ということがわかる。
続いて、欠損値や文字列でのデータの補完を行う。
##欠損値の補完
欠損値を補完するため、どのデータに欠損値があるのか調べる。
##欠損データがどれくらいあるか調べる
#データ数の確認(欠損値の確認)
train.info()
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
上記の結果から、「Age」、「Cabin」、「Embarked」の3つのデータに欠損値があることがわかる。
##欠損データをなんとかする
##新しい列を追加する
##ピボット化
##グループ化
##カウント
##棒グラフ化
##なんかそれっぽいグラフ化
##散布クラフ化
##ヒートマップ
##折れ線グラフ
##参考にさせていただきました!