Pythonによる探索的解析(EDA)02


Python探索性分析EDA
前の記事では、ステップナビゲーションの方法について説明します.
次に、分析例データとしてパイライン符号化を用いて補足説明する.

(3)分析例


「caggle」(Kgloble)について説明します.
ケゲルは海外データコンテストサイトです.
キャッシュ・データには、多くの業界データ、問題の定義、低データの取得、および異なるデータのアップロード/ダウンロードの実験例の利点があり、比較分析が可能です.
データ分析チュートリアルの例として、一般的なタイタニックTitanic生存者予測例を示します.
1.データ計画
タイタニック号は1912年の北大西洋航行中に氷河に沈んだ客船泊である.

https://www.youtube.com/watch?v=PboGLRAEwFU&t=974s
[模擬タイタニック号事故]
ケゲル氏が提起した問題は、沈没したタイタニック号の生存者の性別、家庭、客室の等級情報に基づいて、生存率要求の特徴モデリング分析を模索することだ.
[解析目標]
タイタニック号の客船顧客データの特徴モデリングにより、タイタニック号の生存率を予測分析した.
2.データ収集
データ#データ#
https://www.kaggle.com/c/titanic/data
データをダウンロードすると、zipファイルにcsvファイルをダウンロードできます.


trainデータセット実験用のシミュレーションデータ(総データの60〜70%)
testデータセットはtrainデータセットをモデリングする方法で実際に検証されたデータ(全データの30-40%)である.
train,testデータが2種類に分かれている理由は.これは、列車のデータを分析し、新しいテストデータを使用して検証する必要があるためですが、既存のデータではなく、他のデータに対して高精度/低精度の信頼性検査を行うことができます.
3.データ構造の理解
[入庫とデータ]
# 라이브러리 
import pandas as pd
import numpy as np
import random as rnd
# 시각화
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline
# 오류처리 무시
import warnings
warnings.filterwarnings(action='ignore')

train_df=pd.read_csv("train.csv")
test_df=pd.read_csv("test.csv")
# 모델 적용의 일관성을 위해,
# train과 test를 합한 combine 데이터 셋도 지정
combine=[train_df,test_df]
[データ変数をチェック]
-変数の表示
print(train_df.columns.values)
['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch'
 'Ticket' 'Fare' 'Cabin' 'Embarked']
-変数(フィールド名)の説明
  • PassengerId:乗客一人当たりの固有番号
  • Survived:生存の有無(従属変数)
    0=死亡、1=生存
  • Pclass:客室等級-乗客の社会的・経済的地位
    1st = Upper, 2nd = Middle, 3rd = Lower
  • Name:名称
  • Sex:性別
  • Age:年齢
  • SibSp:添乗員のSibling(兄弟姉妹)とSpouse(配偶者)の数
  • パーカー:添乗員の親Child(子)の数
  • Ticket:チケット固有番号
  • Fare:運賃
  • Cabin:客室番号
  • Embarked:乗船港
    C = Cherbourg, Q = Queenstown, S = Southampton
  • #데이터 미리 보기
    train_df.head(5)
    #데이터 미리 보기
    train_df.tail(5)
    # 훈련 자료 정보
    train_df.info()
    
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 891 entries, 0 to 890
    Data columns (total 12 columns):
     #   Column       Non-Null Count  Dtype  
    ---  ------       --------------  -----  
     0   PassengerId  891 non-null    int64  
     1   Survived     891 non-null    int64  
     2   Pclass       891 non-null    int64  
     3   Name         891 non-null    object 
     4   Sex          891 non-null    object 
     5   Age          714 non-null    float64
     6   SibSp        891 non-null    int64  
     7   Parch        891 non-null    int64  
     8   Ticket       891 non-null    object 
     9   Fare         891 non-null    float64
     10  Cabin        204 non-null    object 
     11  Embarked     889 non-null    object 
    dtypes: float64(2), int64(5), object(5)
    memory usage: 83.7+ KB
    # 테스트 자료 정보
    test_df.info()
    
    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 418 entries, 0 to 417
    Data columns (total 11 columns):
     #   Column       Non-Null Count  Dtype  
    ---  ------       --------------  -----  
     0   PassengerId  418 non-null    int64  
     1   Pclass       418 non-null    int64  
     2   Name         418 non-null    object 
     3   Sex          418 non-null    object 
     4   Age          332 non-null    float64
     5   SibSp        418 non-null    int64  
     6   Parch        418 non-null    int64  
     7   Ticket       418 non-null    object 
     8   Fare         417 non-null    float64
     9   Cabin        91 non-null     object 
     10  Embarked     418 non-null    object 
    dtypes: float64(2), int64(4), object(5)
    memory usage: 36.0+ KB
    ユニーク-乗客番号、名前、およびTicket(チケット番号)
    カテゴリ-Sex(性別)、Pclass(客室等級)、Embarked(出発点)、SibSp(兄弟姉妹、配偶者)、Parch(親、子供)
    連続エージェント(年齢)、Fare(料金)
    4.データ解析
    [データ解析]
    # 훈련 자료 int, float 변수 통계치
    train_df.describe()
  • 訓練資料サンプル数:891(count=891)
  • 訓練資料サンプル内生存率:38.4%(平均的Survived=0.3838)
  • # 훈련 자료 object 변수 통계치
    train_df.describe(include=['O'])
  • 訓練資料男性数:577名(topのsex=男性、freqのsex=577)
  • 訓練資料が一番多い乗船地:S,644名(topのEmbarked=S,freqのEmbarked=644)
  • 5.データプリプロセッシング
    6.データの基本分析
    データフィールドによる分析
    性別、客室等級、兄弟姉妹/配偶者、両親/子供要因分析
    [性別]
    train_df[["Sex", "Survived"]].groupby(['Sex'], as_index=False).mean().sort_values(by='Survived', ascending=False)
    Sex Survived
    0 female 0.742038
    1 male 0.188908
    [客室等級]
    #groupby에 as_index를 False로 하면 Pclass를 index로 사용하지 않음
    # ascending : 오름차순
    # as_index를 True로 하면 Pclass를 index로 사용
    train_df[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean().sort_values(by='Survived', ascending=False)
    Pclass Survived
    0 1 0.629630
    1 2 0.472826
    2 3 0.242363
    [乗船した兄弟姉妹と配偶者数(SibSp)による生存率]
    train_df[["SibSp", "Survived"]].groupby(['SibSp'], as_index=False).mean().sort_values(by='Survived', ascending=False)
    SibSp Survived
    1 1 0.535885
    2 2 0.464286
    0 0 0.345395
    3 3 0.250000
    4 4 0.166667
    5 5 0.000000
    6 8 0.000000
    [乗船した親と子供の数による生存率]
    train_df[["Parch", "Survived"]].groupby(['Parch'], as_index=False).mean().sort_values(by='Survived', ascending=False)
    Parch Survived
    3 3 0.600000
    1 1 0.550847
    2 2 0.500000
    0 0 0.343658
    5 5 0.200000
    4 4 0.000000
    6 6 0.000000
    7.仮定の作成
    8.データ仮説分析
    9.結果分析