타이타닉 데이터를 선택한 이유
어디선가 한 번 즘은 들어봤던 타이타닉(Titanic)이 사실 데이터로 존재한다는 사실, 알고 계셨나요?
저는 몰랐습니다. 사실 영화도 제대로 본 적은 없고, 가끔 TV에서 틀어주는 장면만 지나가듯 본 정도였거든요. 그런데 알고 보니 이 타이타닉 데이터가 데이터 분석 입문자들에게는 거의 필수 코스처럼 사용되는 유명한 데이터셋이었습니다.
데이터 양도 적당하고, 결측치도 적당히 존재하며, 범주형 데이터와 수치형 데이터가 모두 포함되어 있어서 데이터 분석의 기본 과정을 연습하기에 좋다고 하더라고요.
그래서 이번 기회에 저도 타이타닉 데이터를 가지고 데이터 분석을 시작해보려고 합니다.
이번 프로젝트에서 사용할 라이브러리
파이썬으로 데이터 분석을 할 예정이라 빠질 수 없는 라이브러리들이 있습니다. 이번 프로젝트에서는 아래 라이브러리들을 사용할 예정입니다.
- `numpy`
- `pandas`
- `matplotlib`
- `seaborn`
- `plotly`
- `streamlit`
하나의 데이터로 할 수 있는 건 최대한 다 해보자는 마음으로 골랐습니다.
- `numpy`
다차원 배열과 수치 연산을 빠르게 처리하는 라이브러리입니다. 통계 계산(평균, 표준편차, 최댓값, 최솟값)을 수행할 때 사용하며, `pandas`를 포함한 대부분의 데이터 분석 라이브러리들이 내부적으로 `numpy`를 활용합니다.
눈에 띄는 역할은 적지만 데이터 분석 생태계의 기반을 담당하는 핵심 라이브러리라고 볼 수 있습니다. - `pandas`
표 형태(`DataFrame`)로 데이터를 다루는 데이터 분석의 핵심 라이브러리입니다. 타이타닉 CSV를 불러오고, 성별이나 객실 등급별로 데이터를 묶고, 생존율을 집계하는 대부분의 작업이 여기서 이루어집니다.
이번 시리즈에서 가장 많이 만나게 될 친구입니다. - `matplotlib`
가장 기본적인 시각화 라이브러리입니다. 막대그래프, 선그래프, 히스토그램 등 대부분의 정적 그래프를 만들 수 있으며 세부 설정도 매우 자유롭게 조정할 수 있습니다. - `seaborn`
`matplotlib` 위에서 동작하는 통계 시각화 라이브러리입니다. 더 적은 코드로 보기 좋은 그래프를 만들 수 있고, 상관관계 히트맵이나 그룹별 비교 그래프를 쉽게 그릴 수 있습니다. - `plotly`
마우스로 확대/축소하거나 특정 값을 확인할 수 있는 인터랙티브 시각화 라이브러리입니다. 정적인 이미지를 넘어 직접 데이터를 탐색할 수 있는 그래프를 만들 때 사용합니다. - `streamlit`
파이썬 코드만으로 웹 대시보드를 만들 수 있는 프레임워크입니다. 분석 결과를 단순한 이미지나 글로 끝내지 않고, 사용자가 직접 조작할 수 있는 웹앱 형태로 배포할 때 사용합니다.
이렇게 적어놓고 보니 꽤 많아 보이네요. 정리해 보자면, 데이터 처리(`numpy`, `pandas`), 정적 시각화(`matplotlib`, `seaborn`), 인터랙티브 시각화(`plotly`), 웹앱 배포(`streamlit`)에 사용됩니다.
개발 환경 준비하기
앞으로의 흐름은 아래 순서로 진행됩니다.
- 파이썬 버전 확인하기
- 프로젝트 폴더 만들기
- 가상환경 만들기
- 라이브러리 설치하기
- `requirements.txt`로 관리하기
- (선택) `. gitignore` 설정하기
- 폴더 구조 만들기
파이썬 버전 확인하기
$ python --version # Windows
$ python3 --version # macOS
Python 3.13.1
보통 Windows는 `python`, macOS는 `python3` 명령어를 사용하는 경우가 많습니다.
이 차이가 생기는 이유는 macOS가 과거에 시스템 내부에서 `python`이라는 이름으로 Python 2를 사용하던 시절의 흔적 때문입니다. 최근 버전에서는 많이 달라졌지만 여전히 `python3`를 사용하는 환경이 흔합니다. 이 글에서는 편의상 `python3`로 통일해서 표기하겠습니다.
만약 버전이 출력되지 않는다면, 파이썬이 설치되지 않은 상태일 수 있으니 python.org에서 설치 후 다시 진행해 주세요.
프로젝트 폴더 만들기
이번 프로젝트에서는 `titanic-data-journey`를 사용하겠습니다. 폴더를 만든 뒤 VS Code로 열어주세요. 이후에 등장하는 모든 명령어는 해당 폴더 기준으로 진행합니다.
가상환경 만들기
$ python3 -m venv venv
이 명령어를 해석해 보자면, `python3 -m venv`는 파이썬 내장 모듈인 `venv`를 실행하라는 말입니다. 뒤의 `venv`는 생성할 가상환경 폴더 이름을 의미합니다. 이름은 자유롭게 정할 수 있지만 관례적으로 `venv`를 많이 사용합니다.
일단 가상환경을 만들라고 하니까 만들었는데 왜 가상환경을 사용할까요?
컴퓨터 전체에 라이브러리를 설치할 수도 있습니다. 하지만 프로젝트마다 필요한 라이브러리 버전이 다를 수 있기 때문에 관리가 어려워집니다. 가상환경을 사용하면 프로젝트별로 독립된 라이브러리 버전을 유지할 수 있어 다른 프로젝트에 영향을 주지 않습니다. 약간 번거롭긴 하지만 장점이 훨씬 크기 때문에 대부분의 파이썬 프로젝트는 가상환경을 사용합니다.
참고로 가상환경을 만드는 방법은 `venv`, `conda`, `uv` 등 다양합니다. `conda`는 데이터 과학 분야에서 많이 사용되고, `uv`는 최근 등장한 빠른 패키지 관리 도구로 주목받고 있습니다. 다만 이번 프로젝트는 기본적인 파이썬 데이터 분석 학습이 목적이고, 저 역시 평소 `venv`를 사용해 왔기 때문에 가장 표준적이고 별도 설치가 필요 없는 `venv`를 선택했습니다.
가상환경의 활성화, 비활성화
$ venv\Scripts\Activate.ps1 # Windows PowerShell
$ source venv/bin/activate # macOS
(venv)
명령어를 입력하면 마지막줄처럼 터미널 앞에 가상환경 폴더명이 나타납니다. 이렇게 가상환경을 활성화합니다.
참고로 Windows PowerShell에서 실행 정책 오류가 발생한다면 `Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass` 이 명령어를 실행하거나 `venv\Scripts\activate.bat`을 사용하면 됩니다.
(venv) deactivate
$
가상환경의 비활성화는 운영체제와 관계없이 동일합니다.
라이브러리 설치하기
(venv) pip install numpy pandas matplotlib seaborn plotly streamlit
이번 프로젝트에서 사용할 라이브러리를 한 번에 설치합니다. 여기서 사용하는 `pip`는 Package Installer for Python의 약자입니다. 엄밀히 말하면 지금 설치하는 것은 라이브러리가 아니라 패키지이지만, 실무에서는 거의 같은 의미로 사용하는 경우가 많습니다. 그렇기에 타이타닉 시리즈에서는 패키지가 아닌 라이브러리라는 표현을 사용하도록 하겠습니다.
`requirements.txt`로 관리하기
(venv) pip freeze > requirements.txt
설치한 라이브러리 목록을 `requirements.txt`에 저장합니다. 생성된 파일은 `numpy==2.0.2` 이런 형태인데, `==` 뒤의 숫자는 버전을 의미합니다. 일반적으로 메이저. 마이너. 패치의 형태로 구성됩니다. 이 파일이 있으면 누구나 동일한 버전으로 환경을 재현할 수 있습니다.
아, 이걸 빼먹었네요. 파일명을 굳이 `requirements`를 사용할 필요는 없습니다. 자유롭게 정해도 동작에는 문제가 없어요. 하지만 '이 프로젝트를 실행하기 위해 필요한 라이브러리 목록'이라는 의미를 담고 있고, 파이썬 생태계는 이 관례를 따르는 것이 협업할 때나 이후에 코드를 다시 볼 때 모두가 편리하기 때문에 사용합니다.
(venv) pip install -r requirements.txt
설치는 위의 명령어를 사용하면 됩니다.
. gitignore 설정하기
# Python
venv/
__pycache__/
*.pyc
# macOS
.DS_Store
# VS Code
.vscode/
`git`을 사용한다면 `venv` 폴더는 저장소에 올리지 않는 것이 좋습니다. 대신 `requirements.txt`만 공유하면 누구나 동일한 환경을 다시 만들 수 있습니다. 프로젝트 폴더 안에 `. gitignore`라는 파일을 만들고 깃에 올리지 않을 폴더와 파일 목록을 적어두면 됩니다.
무엇을 적어야 할지 모르겠다면, gitignore.io에서 운영체제, 에디터, 언어 등을 입력하면 `. gitignore` 내용을 자동으로 생성해 줍니다.
프로젝트 폴더 구조 만들기
titanic-data-journey/
├── analysis # 타이타닉 탐사일지
├── data/ # 데이터
├── figures/ # 시각화 자료
│ ├── analysis/
│ └── tutorial/
├── tutorial/ # 타이타닉 항해일지
├── venv/ # 가상환경
├── utils/ # 한글 폰트, 색상 테마, save_fig() 헬퍼
├── .gitignore
└── requirements.txt
대략적인 폴더 구조는 이렇게 생겼습니다. 폴더 구조에서도 알 수 있듯이 타이타닉 탐사일지와 타이타닉 항해일지가 존재합니다. 여기에 대해서는 아래에서 좀 더 설명하도록 할게요.
항해일지(Tutorial)와 탐사일지(Analysis)
이 프로젝트는 단순히 타이타닉 데이터를 분석하는 프로젝트는 아닙니다. 같은 데이터를 가지고 두 번의 항해를 진행합니다.
항해일지(Tutorial)는 데이터 분석 도구를 배우는 과정입니다. `numpy`, `pandas`, `matplotlib`, `seaborn`, `plotly`, `streamlit`을 순서대로 학습하면서 데이터를 불러오는 방법이나 결측치를 처리하는 방법, 그래프를 그리는 방법 등을 실습 중심으로 정리합니다. 여기서는 '어떤 도구가 있고, 어떻게 사용하는가'에 초첨을 맞춥니다.
탐사일지(Analysis)는 도구 사용법보다 사고 과정을 기록합니다. 타이타닉 데이터를 처음 받았다고 가정하고, 어떤 질문을 던질 것이고, 어떤 칼럼을 사용할 것이고, 어떤 가설을 세우고, 어떤 근거로 검증할 것인가를 실제 분석 흐름대로 따라갑니다. 여기서는 '도구를 이용해 어떤 답을 찾아낼 것인가'에 초점을 맞춥니다.
그렇기에 먼저 항해일지에서 도구 사용법을 익히고, 이후 탐사일지에서 그 도구들을 활용해 실제 질문에 답을 찾아가는 과정을 경험해 보는 것을 추천합니다.
항해를 위한 준비는 모두 끝났습니다.
그럼 이제 첫 번째 항해를 시작해 보도록 하겠습니다.
'🚢 titanic' 카테고리의 다른 글
| [python] 항해일지 05. 더 선명하게 항해도 그리기: seaborn (0) | 2026.06.27 |
|---|---|
| [python] 항해일지 04. 갑판 위 풍경 스케치: matplotlib (0) | 2026.06.26 |
| [python] 항해일지 03. 선실 정리함 채우기: utils와 ModuleNotFoundError (0) | 2026.06.25 |
| [python] 항해일지 02. 승객 명단 펼쳐보기: pandas (0) | 2026.06.24 |
| [python] 항해일지 01. 엔진룸 구경하기: numpy (0) | 2026.06.23 |