본문 바로가기
데이터 분석/SQL 분석

SQL (타이타닉 가족 찾기)

by AI Sonny 2022. 8. 21.
728x90

My SQL을 배우고, 데이터의 컬럼들을 파악하고, 새로운 정보를 얻는 실습을 해봤다.

 

강사님이랑 했을 땐 여자가 생존율이 높다, 나이가 어릴 수록 생존율이 높다, 돈이 많을수록 생존율이 높다. 등

 

여러 분석을 하였다. 강사님이 이 데이터를 가지고, 남편을 찾을 수도 있다고 강의 중에 말씀하셨다.

 

그래서 나는 남편을 알 수 있으면 가족도 찾을 수 있지 않을까해서 나름대로 데이터를 분석해 가족을 찾아냈다.

 

이것에 대한 정답이 없기 때문에 다양한 가설이 나온다. 나의 결론을 참고만 해줬으면 좋을 것 같다.

 

Column 정보

 

더보기

/*

passengerid - 승객 id (PK),

survied - 생존 여부 (0:사망, 1:생존),

pclass - 객실 등급 (1, 2, 3),

name - 이름,

gender - 성별 (male: 남성, female: 여성),

sibsp - 동반한 형제 또는 자매 또는 배우자 수,

parch - 동반한 부모 또는 자식의 수,

ticket - 티켓번호,

fare - 요금,

cabin - 객실번호,

embarked - 탑승한 항구 (C: 프랑스 항국, Q: 아일랜드 항구, S: 영국 항구)

*/

 


가설 1

처음 같은 가문(famliy name)일 경우 같은 가족이라 생각하여 SUBSTRING_INDEX를 통해서 family_name을 추출하였다.

 

이 후 left join을 통해 데이터를 name과 family_name을 join하였다.

 

family_name과 pclass, ticket, fare, embarked 값이 같고,

 

sibsp + parch 값이 0이 아닐 때 가족이라고 추측할 수 있다.

 

select a.name, a.sibsp,a.parch,a.ticket,a.fare, a.pclass, a.embarked, family_name
from titanic_raw as a
left join  (select name, SUBSTRING_INDEX(name,",",1) as family_name
from titanic_raw) as b
on b.name = a.name
where sibsp+parch != 0
order by name;

 

결과

 

 

이 데이터를 보고, 같은 성씨에 ticket과 fare와 pclass, embarked가 같으면 같은 가족이구나를 추측해봤다.

 

그러나 데이터를 확인하던 도중 Davies, Master.John Morgan Jr와

 

Davies, Master.John Morgan (Elizabeth Aqnes Mary White) 가 가족수가 맞지 않았다.

 

 

그래서 첫번째 가설이 틀리게 되었다.

 


가설 2

같은 위와 같은 조건에서 같은 cabin이면 가족 전체를 알지 못해도 가족의 일부라도 알 수 있지 않을까?

 

cabin이 null값이 아닌 것들 중에서 같은 cabin쓰고, 가설 1과 같은 조건이면

 

parch와 sibsh의 수가 맞을 것 같았다. 

 

select a.name, a.sibsp,a.parch,a.ticket,a.fare, a.pclass, a.embarked, age, cabin
from titanic_raw as a
left join  (select name, SUBSTRING_INDEX(name,",",1) as family_name
from titanic_raw) as b
on b.name = a.name
where sibsp+parch != 0 and cabin is not null
order by name;

 

결과

 

 

내 가설과 다르게 처음 데이터부터 sibsp와 parch의 수가 맞지 않는 것을 알 수 있었다.

 

그래서 cabin의 결측치가 많아서 생긴 문제인 것 같아 cabin의 결측치를 채우려 생각해봤다.

 

One-Hot Encoding을 이용하여 수로 변환하고, cabin에 수자를 곱해 pclass별로 나눠 결측값에 채워 넣으려 했다.

 

그러나 위와 같이 cabin이 한 개만 있는 경우가 아니라 수치화하기엔 범위가 넓어질 것 같았다.

 

 


가설 3

가설 1에 안맞는 경우를 찾아서 분석해보자!

 

다시 가설1로 돌아가 요금이 36.75인 경우를 조회해봤다.

 

select name,fare,parch,sibsp,pclass,embarked,age,ticket,cabin
from titanic_raw
where fare = 36.75 and sibsp+parch;

 

결론

 

 

데이터를 보니 가설 1에 family name을 제외하고, 보면 parch와 sibsp의 수가 맞아떨어졌다.

 

이로써 family name에 대한 뭔가 있지않을까라는 생각하였다.

 

그래서 타이타닉 사건이 일어난 년도를 찾아보았다.

 

1912년 4월에 영국에서 미국으로 가는 도중 침몰한 것을 알 수 있었다.

 

출처

 

RMS 타이타닉 - 위키백과, 우리 모두의 백과사전

rms 타이타닉 컬러화 사진 RMS 타이타닉(영어: RMS Titanic)은 영국의 화이트 스타 라인이 운영한 북대서양 횡단 여객선이다. 1912년 4월 10일 영국의 사우샘프턴을 떠나 미국의 뉴욕으로 향하던 첫 항

ko.wikipedia.org

 

이 때 당시 영구의 문화에 대해 자료를 찾아봤다.

 

"영국 왕실 공식사이트(http://www.royal.gov.uk)에 따르면 영국 왕족은 성을 사용하지 않는다.  조지 5세가 1917년 윈저 왕조를 선포하기 이전까지만 해도 영국 왕족에게는 공식적인 성이 없었다.  유럽 국왕과 왕족들이 통치 국가나 영지의 이름을 성으로 사용해 온 관례 때문이다. 모든 공식문서에도 첫 번째 이름만 서명한다. 필요할 경우 왕조나 아버지 가문의 성을 사용출처: https://www.joongang.co.kr/article/21920541할 수도 있다. 이 두 가지가 같을 수도 있지만 다를 수도 있다."

 

출처: https://www.joongang.co.kr/article/21920541

 

학교 간 영국 조지 왕자, 교사·친구들이 부르는 말은?

전하? 왕자?

www.joongang.co.kr

 

이 기사에서 영국의 왕족은 성을 사용하지않는 다는 것을 알게 되었다.

 

 

그래서 엘리자베스를 보아 Davies는 왕족이라는 것을 알 수 있고,

 

왕족 특성 상 같은 성씨를 사용하지 않아서 이름이 다르다는 것을 알 수 있다.

 

더 나아가 이 시대의 영국의 평민들의 삶을 찾아보았다.

 

출처: https://blog.naver.com/thebeyond3355/222450673030

 

계보학 족보학 그리고 내가 마주친 특이 영국 성씨

평민들이 성을 가진 지는 얼마 되지 않았다. 성없이 이름으로만 불려진 시기가 훨씬 길다. 한국에서 성씨는...

blog.naver.com

 

영국은 우리나라와 달리 성의 기원이 다양했다.

 

직업이 성이거나 개인적 특징(키가 큼)이 성이거나 장소에 따른 성 등 다양한 성이 존재하였다.

 

문화적인 차이로 인해 지역별로 성을 나눈 우리나라와 달리 영국은 그렇지 않았던 것이었다...

 

그래서 문화적인 차이가 데이터를 분석할 때 family name이 오히려 혼란을 주었던 것이였다.

 

따라서 결론은 pclass, ticket, fare, embarked 값이 같고,

 

sibsp+parch이 0이 아닌 값이 동일할 때 가족이라는 결론이 도출되었다.

728x90

댓글