[25.02.14]사전캠프 18일차 타이타닉 생존자+sql 달리기반 6번

김명서·2025년 2월 14일
1

TIL_sparta

목록 보기
19/60

북스터디_타이타닉 생존자 데이터 분석

.
.

🔻분석 전

1️⃣데이터 분석 문제 정의!

  1. 분석 배경

: 일반 서민부터 넘치는 부를 축적한 유명한 부자들까지 각계각층사람들이 기꺼이 돈을 지불하고 탑승. 영국에서 출발하여, 프랑스와 아일랜드를 경유한 후 미국에 도착할 예정이었다고 함. 이 배에 탑승한 인원은 총 2,224명.

침몰 당시 타이타닉호는 정면충돌은 피했지만 대각방향으로 스쳐지나 선체 우측하단이 찢어져 물이 들어오기 시작함.

진동을 옅게 느낀 1등석 승객과는 달리 3등석 승객들은 배 아래층에 위치했기 때문에 진동을 크게 느꼈고 물이 차고있음을 빨리 발견해 사태의 심각성을 빨리 알아챌 수 있었다고 한다.

생존/사망률에 영향을 미쳤던 요인에 대해 알아보고 집단 간 생존가능성 차이가 있었는지를 알아보려함.

  1. 목적
    이와 관련하여 집단 간 생존율의 차이 유무를 알아보고자 한다.

1. 평가 지표 및 기준을 결정

어떤 요소와 지표가 더욱 목적에 부합하는가?

2️⃣사용한 데이터

사용한 데이터에 대한 설명

: 891명의 승객 데이터로 승객의 생존 여부, 개인 정보(나이, 성별 등), 티켓 정보(등급, 번호, 요금, 선착장 위치) 데이터로 구성되어 있음

수집한 데이터의 형식과 속성 설명

  • PassengerId(string) : 승객 고유 ID
    Survived(int) : 생존 여부[0이면 사망, 1이면 생존]
    Pclass(int) : 티켓 등급[1, 2, 3등급]
    Sex(string) : 승객의 성별[male, female]
    Age(float) : 승객의 나이
    SibSp(int) : 승객의 형제, 자매 수
    Parch(int) : 부모, 자식의 수의 합계
    Ticket(string) : 티켓 번호
    Fare(float) : 지불한 티켓 요금
    Carbin(string) : 승객의 객실의 번호
    Embarked(string) : 선착장 [C(Cherbourg), Q(Queenstown), S(Southampton)]

2. 적합한 데이터 및 그래프를 선택

어떤 데이터 형태와 그래프가 효과적인가?

3️⃣데이터 살펴보기

  1. sql 이용하기

🔻생존자 수 , 사망자 수

SELECT 'Survived' AS Status, COUNT(*) AS Count
FROM titanic
WHERE Survived = 1
UNION ALL
SELECT 'Died' AS Status, COUNT(*) AS Count
FROM titanic
WHERE Survived = 0;



🔻통계 툴 과 값을 비교해봤을 때, sql 을 사용하는 데 오류가 있었던 것 같아
일단은 통계툴 만으로 분석을 시행함

사망자 549, 생존자 342
여성 314, 남성 577


결측치를 제외하고나면 714개의 연령값 존재.
나이평균 29.7. 최고령 나이 80세. (20~40 사이에 가장 밀도가 높았음)

Pclass(int) : 티켓 등급[1, 2, 3등급]
1등급 24.2%, 2등급 20.7%, 3등급 55.1%

.

4️⃣데이터 분석하기

  • 티켓 등급별 생존률 분석 [집단의 차이를 알아보기 위해 일원분산분석 실행]
    (정규성 검증 결과 W=0.848, P=<.001로 정규성 만족, ANOVA F=56.5, P=<.001 임을 확인하였음)



3. 결론

결국 무슨 말을 할 수 있는가?

5️⃣결과 해석해보기

🔑데이터 분석하기

a.
성별-생존율

i.
남성 승객이 여성 승객보다 더 많았음
ii.
남성이 여성에 비해 더 많이 사망했음

사망자 549, 생존자 342
여성 314, 남성 577

b.
티켓 등급-생존율

i.
3등석이 승객이 가장 많고, 1, 2등석은 인구 수가 비슷함
ii.
티켓 등급이 높아질수록 생존율도 높아짐

1등급 24.2%, 2등급 20.7%, 3등급 55.1%

c.
가족 수- 생존율

혼자 탄 승객이 가장 많았고 , 가족과 함께 탄 사람의 인구는 가족 수가 많을 수록 감소함

d.연령

결측치를 제외하고나면 714개의 연령값 존재.
나이평균 29.7. 최고령 나이 80세. (20~40 사이에 가장 밀도가 높았음)
대부분의 나이 대에서는 여성이 남성에 비해 생존율이 확실히 높음

0~9세 나이 대는 다른 나이 대에 비해 비교적 성별에 무관하게 생존율이 높음

→ 당시 여성과 아이를 먼저 한정된 개수의 구명보트에 태우라는 선장의 지시가 있었다고 함


2.인사이트 도출

💡

티켓 등급 중 3등급이었던 집단의 사망률이 상대적으로 매우 높았음을 알 수 있었는데,
3등급의 탑승인원이 가장 많았기도 했지만, 배가 충돌로 파손되어 물이 차기 시작했던 위치가 타이타닉 중하단부=즉 3등급 자리였고 당시 사고분석을 보면 3등급층에서 외부로 탈출 할 수 있는 경로가 매우 복잡하고 미로같았다고 한다. 생존이 걸린 급박한 상황이었다면 더욱 탈출하기 힘들었을 것이다.
이러한 당시 상황에 대한 정보들에 정확한 데이터분석이 합쳐진다면, 향후 사고를 방지하기 위한 여러 해결책과 인사이트들을 효과적으로 도출할 수 있을 것이라 생각한다.

한계점.

sql에서 정상적으로 조회할 수 있었다면, 좀 더 여러 데이터들 간의 조합을 해볼 수 있었을 것 같다.

분석 후에 노션에 있는 예시를 보았은데 나이대별 생존률 분석을 내가 하지 못했던 것 같아, 이 점에 대한 보완이 필요해보인다.

팀원들의 인사이트

실제 타이타닉 사례를 찾아보시고 상황지식과 데이터를 긴밀히 연결짓는 것이 인상적이었다.

티켓 등급+지불금액 과 생존율에 보다 심화된 데이터분석을 하신 것,

선착장과 그 지역, 탑승객분포를 알아보고자 한 가설설정이 참신했던 것 같다. 또한 가설설정과 분석 결과를 예측하는 태도를 경계해야겠다는 인사이트에 공감할 수 있었다.
.
.
.
.

달리기반

Lv6. 가장 많이 팔린 품목은?

  1. 각 고객이 구매한 모든 제품의 총 금액을 계산하고, 고객 이름, 총 구매 금액, 주문 수를 출력하는 SQL 쿼리를 작성해주세요.
select c.customername, sum(p.price*o.quantity) total_amount, count(o.orderid) ordercount
from customers c
join orders o on c.customerid=o.customerid
join products p on o.productid=p.productid
group by c.customername
  1. 각 제품 카테고리별로 가장 많이 팔린 제품의 이름과 총 판매량을 조회하는 SQL 쿼리를 작성해주세요.

이 문제도 결과적으로는 정답 슥 훑고 힌트받고 품
전에 풀었던 문제들과 전체적으로 비슷한 구조임을 알 수 있었다.

select p.category, p.productname Top_product, sum(o.quantity) totalsold
from products p join orders o
on p.productid=o.ProductID
group by  p.category, p.productname
having sum(o.quantity) =(
	select max(a) 
    from ( select p2.category, sum(o2.quantity) a 
			from orders o2 
			join products p2
            on o2.productid=p2.productid
            group by p2.Category, p2.ProductID) s
		where s.category=p.category
        );

겪은 오류
❌서브쿼리에서 select 절에서 p2.category를 불러오지 않았던 점과,
❌o.quantity를 o.quntity로 오타입력한 것이 과정상의 오류였다.

.
.

느낀점

오늘 발렌토크데이도 기대를 안했는데, 재미있었다. 확실히 곧 본캠프인게 실감이 나는 것 같다. 주말동안 sql과 python을 가능한대로 보충하고 싶다 !
마지막에 영은쌤께서 해주신 말씀이 가장 기억에 남는다.
포기하고 싶다면, 일단 수료라도 하자는 마음가짐으로 임하자.
걱정이 많은 나는 이 말을 듣고 나니, 긴장감을 많이 줄일 수 있었다!

profile
경영학도의 데이터분석 성장기💥

2개의 댓글

comment-user-thumbnail
2025년 2월 14일

명서님 사전캠프 기간동안 고생 많으셨어요~!! 본캠프도 화이팅입니다!!

1개의 답글

관련 채용 정보