【備忘録】データ分析の手順 (titanic)

#データ分析の手順　(titanic)
備忘録としてデータ分析の手順を記載する。

##必要なライブラリのインストール 
```python:titanic.ipynb
import  pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline
from pandas import Series,DataFrame
```

##データの取り込み 
```python:titanic.ipynb
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
submission = pd.read_csv('gender_submission.csv')
```

##取り込んだデータを確認す る
```python:titanic.ipynb
#上位5件を表示
train.head()
#下位５件を表示
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の３種類がある。

取り込んだデータを様々な観点から確認する。
shapeとinfo()から欠損値の数を確認し、後ほど補完していく。



##データを可視化して確認する
男女の比を見てみる。

```python:titanic.ipynb
sns.countplot('Sex',data=train)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431646/2584b524-26a5-2893-1355-61345b7c979b.png)

男女ごとの生存比率を見てみる。

```python:titanic.ipynb
sns.countplot('Sex',data=train,hue='Survived')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431646/90a30c5a-2db4-af6d-398b-064243227816.png)


男女ごとのチケットのランクを見てみる。

```python:titanic.ipynb
sns.countplot('Sex',data=train,hue='Pclass')
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431646/800d0617-390a-9068-a0d5-9102c3e609b9.png)

年齢の分布を見てみる。

```python:titanic.ipynb
train['Age'].hist(bins=70)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431646/598a6d51-987a-08c8-f3ff-32c5448a54f7.png)

男女の年齢層を見てみる・

```python:titanic.ipynb
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()
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/431646/47248bde-c94f-c229-c3f4-82e1153d8da5.png)

現段階でのデータを軽く確認したところ、
男女比：男子の方が多い
生存率（男女）：女性の方が生存率が高い
年齢：幅広く分布している。20〜30が中心
チケット：男性の方がランクの低いチケットを買っている

ということがわかる。
続いて、欠損値や文字列でのデータの補完を行う。

##欠損値の補完
欠損値を補完するため、どのデータに欠損値があるのか調べる。


##欠損データがどれくらいあるか調べる 
```python:titanic.ipynb
#データ数の確認（欠損値の確認）
train.info()
```
<class 'pandas.core.frame.DataFrame'>
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」の３つのデータに欠損値があることがわかる。

##欠損データをなんとかする 
```python:titanic.ipynb

```
##新しい列を追加する 
##ピボット化 
##グループ化 
##カウント 
##棒グラフ化 
##なんかそれっぽいグラフ化 
##散布クラフ化 
##ヒートマップ 
##折れ線グラフ 
##参考にさせていただきました！