Data analysis of Titanic survivors and dead people

ds_lec·2023년 2월 28일
0

data.analysis

목록 보기
2/2

벌써 2번째 포스팅이 되겠다.
다시 한번더 언급하지만 이 글은 내 자신이 데이터분석 능력을 키우기위해 공부를 하기위해 기초적인 요소를 통해 공부한 기록을 남기기 위해 작성한다.
이전글 에서는 식용버섯과 독버섯을 구분할만한 범주(독립변수)를 데이터시각화를 통해서 확인을 해봤다.
이번 글은 seaborn라이브러이에 존재하는 "titanic"데이터를 이용하여 타이타닉의 생존자와 죽은 사람들에 대해서 어떠한 변수에 관해 연관성을 찾아보는 시간을 가지겠다.

Essential Library for data analysis.

import pandas as np
import seaborn as sns
import numpy as np

pandas와 seaborn, numpy 라이브러리는 데이터 분석,시각화에는 필수적이기 때문에 꼭 미리 코드를 적어두도록 하자!


Retrieve datasets that exist in seaborn

sns.get_dataset_names()

seaborn의 라이브러리에 저장되어져 있는 데이터셋들의 이름을 불러오기 위해서는 get_dataset_names()를 입력하면 아래와 같이 데이터셋의 이름들이 문자열로 출력되는걸 알수있다.

Recall datasets wthin an object called a dataframe

df= sns.load_dataset("titanic") # df(dataframe)객체에 titanic데이터셋을 로드
display(df) # display메소드는 데이터를 출력하였을때 가장 적합한 메소드이다.

feature Info 을 알수 있다.

  • survived(생존) : 0,1
  • pclass(등급) : 1~3등급
  • sex(성별) : man, woman, NaN
  • age(나이) : (0~연속형)
  • sibsp(형제+자매+배우자) : (0~연속형)
  • parch(부모+자식) : (0~연속형)
  • fare(티켓 가격) : (0~연속형)
  • embarked(탑승장) : S, C, Q
  • class(등급) : 1~3등급
  • who : man, woman,child
  • adult_male(성인남성) : Bool
  • deck(선실) : 'A', 'B', 'C', 'D', 'E', 'F', 'G',NaN
  • alive(생존) :0,1
  • alone(혼자왔는가?) : Bool

feature engineering

위의 인덱스 중 합쳐서 하나의 변수로 통합을 시켜줄수 있는 값들이 있을것이다.
바로 "parch"와 "sibsp"이다 이 둘을 합쳐서 하나의 인덱스(변수)로 만들어 주는 행위를 "feature engineering" 이라한다.

 df["ff"]=df["parch"]+df["sibsp"]+1 

우리는 'ff'라는 인덱스를 생성해 합을 저장했다. 여기서 +1를 해준 이유는 데이터에 본인을 포함하지 않기때문에 본인을 추가해줬다.

Cleanup duplicate indexes

feature info를 보면 중복된 내용을 지닌 인덱스들이 많다는걸 알수 있다.
이는 데이터를 분석하는데 있어 시간과 돈이 많이 들기 때문에 제거를 하는 습관을 지니는게 좋다.

df.drop("embarked_town",inplace=True, axis=1) # 지우고 싶은 인덱스가 1개일때.

df.drop(["parch","sibsp"], inplace=True, axis=1) # 지우고 싶은 인덱스가 2개이상일때.

Data Analysis

이러한 데이터를 분석하기 위해 seaborn의 catplot과 displot, hisplot를 이용할 것이다.
인덱스가 많은 관계로 생존율과 연관성이 있는 데이터 분석결과를 작성하겠다.

sns.catplot(data=df, x="survived", hue="sex",kind="count")#생존 남녀비율

타이타닉호가 영국에서 출발했음을 기본적인 사전지식을 지니고 있으면 영국의 "Lady first"의 사상을 잘 알고 있을것이다. 실제로 데이터를 통해 만든 그래프를 통해서 남성에 비해 여성이 많이 생존했음을 알수 있다. (데이터를 분석하는 사람에 따라 해석내용이 다를수 있음을 적는다.)

sns.catplot(data=df, x="deck",hue="pclass", kind="count") # 선실과 pclass를 통해서 등급이 높을수록 배위의 선실에 존재하는것을 알수있다.

  • "deck"과 "pclass"를 통해서 등급이 높을수록 배위의 선실에 존재하는것을 알수있다.

  • "deck"에 따른 생존을 데이터시각화로 그려보자.

sns.catplot(data=df, x="deck", hue="survived", kind="count")

deck = A,B,C는 1등급을 의미함을 위에서 확인할수 있었다 생존한 사람이 다른 곳 보다 많다는걸 알수 있다.

sns.catplot(data=df, x="deck", y="survived", kind ="bar") 

위의 그래프는 신뢰구간까지 나타낸 그래프이다.
신뢰구간에 따라 데이터들을 신뢰도가 달라지기 때문에 모든 데이터들은 의심하고 완전히 믿을수 없다.

Conclusion

  • The Titanic has more female survivors than men.
    Perhaps there is an influence of the British "lady first" culture.

  • Survival possibilitiy varys depending on "pclass" and "deck".
    Perhaps the higher the cabin grade, the higher the chances of survival.

profile
sturdy stupid

0개의 댓글