타이타닉 데이터 시각화 연습을 통해Python Pandas, Matplotlib, Seaborn익숙해지기(Titanic Data Visualization)
# 글쓰기에 앞서…
데이터 분석을 공부하는 것은 정말 방대하고,처음 공부하는 입장에서 무엇을, 어떻게, 무엇부터 공부를 해야할지 정말 깊은 고민을 하게 만든다.
필자는 근무하던 회사에서 운 좋게 데이터를 만지는 일을 하긴 하였으나, 위계 질서가 확실하며, 보안체계가 엄격한 외국계 회사에서 일을 하여 주도적으로 데이터를 만지기 보단, 명확한 업무 프로세스를 따랐어야 했고, 이로 인해 내가 데이터를 다루는 스킬이 성장하지 않는 다는 것을 느꼈고, 퇴사를 결심하게 되었다.
깊은 고민 후, 내 기본기를 다지는 것이 중요하다고 판단하여, 데이터 분석 부트캠프를 수강해보기로 결심 하였으며, R보다는 범용성이 좋은 Python을 공부해보기로 하였다.
Python에 대한 기본 지식이 부족한 상태지만, 그래도 조금은 익숙한 시각화 작업을 통해서 공부를 시작해 보려 한다.
# 데이터 불러오기
요리를 하려면 재료가 있어야 하듯, 당연한 말이겠지만, 데이터 분석을 하려면 데이터가 있어야 한다.
오늘 분석해 볼 데이터는 Titanic 데이터로, 아래 링크에서 데이터를 확인할 수 있다.
https://web.stanford.edu/class/archive/cs/cs109/cs109.1166/stuff/titanic.csv
해당 데이터를 파이썬으로 불러오는 커맨드는 아래와 같다.
그 결과값은 아래와 같다
# Matplotlib 라이브러리 불러오기
위와 같이 데이터를 Python으로 불러오는데 성공하였다면, 그 다음은 데이터를 분석하고 시각화 해보는 작업이다.
시각화를 하는데 가장 기본적으로 사용 되는 라이브러리는 Matplotlib이다.
Matplotlib를 불러오는 커맨드는 아래와 같다
# 나이와 요금 데이터를 활용해 Scatter Plot 그려보기
Scatter Plot이란 두 변수의 관계를 X와 Y축을 이용해 표현하는 방법이다.
두 변수의 관계를 분석하는 이외에도 해당 데이터를 보기 쉽게 점을 찍어 나타내주기 때문에, Outlier이 어디에 위치하고 있는지 파악하는데 효과적인 방법이라고 생각한다.
Titanic 데이터에는 여러 종류의 데이터가 존재하지만, Titanic 승객의 나이와 지불한 요금과 관련이 있는지 scatter plot을 한번 그려보려고 한다.
해당 Scatterplot을 그리는 코드는 아래와 같다
해당 커맨드를 실행한 결과 값은 아래와 같다.
해당 그래프를 통해 나이와 요금은 별 관계가 없다는 결론을 도출해 낼 수 있으며, 그래프에서 Outlier 값들(500 달러 이상의 요금을 지불한)이 30대에 존재하고 있다는 것을 쉽게 볼 수 있을 것이다.
# Histogram을 이용해 생존자와 사망자 빈도 확인하기
Histogram이란 어떤 특정 변수가 어느 정도의 빈도를 갖고 있는지 확인하기 쉽게 그래프로 나타낸 그래프이다. 기본적으로 Scatter Plot과 마찬가지로 Pandas를 활용하기 때문에 커맨드가 유사하다.
사망자의 빈도를 확인하는 커맨드는 아래와 같다
그 결과는 아래와 같다
0이 사망자라는 가정하에, Titanic 사고로 인한 사망자가 생존자보다 많다는 것을 확인할 수 있다.
결과값이 ‘사망' 혹은 ‘생존' 두가지 이기 때문에 0 과 1 두가지의 데이터만 존재하는 것을 볼 수 있다.
적어도 Titanic 사고에서는 아래와 같은 상황은 없었던 것으로 볼 수 있다 🤣🤣
# 30대 이하 승객 남녀 별 정보 정리하기(Boxplot 활용하기)
Boxplot이란 아래와 같은 정보들을 요약한 그래프들이다.
그 값들은 아래와 같다.
- 최솟값 : 제 1사분위에서 1.5 IQR1을 뺀 위치이다.
- 제 1사분위(Q1) : 25%의 위치를 의미한다.
- 제 2사분위(Q2) : 50%의 위치로 중앙값(median)을 의미한다.
- 제 3사분위(Q3) : 75%의 위치를 의미한다.
- 최댓값 : 제 3사분위에서 1.5 IQR을 더한 위치이다
Boxplot을 그리기 위해서는 seaborn이라는 패키지가 필요하며,
이를 불러오는 커맨드는 아래와 같다.
Boxplot을 그리는 커맨드는 아래와 같다
그 결과는 아래와 같다.
30대 이하 남녀를 살펴 본다면 남자 승객의 나잇대가 여자 승객의 나잇대 보다 살짝 높다는 것을 직관적으로 볼 수 있다.
# 글을 마치며 느낀점
파이썬이 아직 손에 익숙해지지 않아서 그런 것일 가능성이 크지만,
적어도 데이터 시각화에 있어서는 Python보다는 R이 조금 더 쉬운 것 같다.
Python도 얼른 손에 익힐 수 있도록 추가적인 공부가 많이 필요할 것으로 보인다.