개요
"선배, 이 그래프 좀 봐줄 수 있어요?"
민서가 노트북 화면을 기울여 보여줬습니다. 팀 프로젝트 발표가 사흘 앞으로 다가왔고, 화면에는 식당 데이터를 분석한 산점도가 있었습니다. Matplotlib으로 열심히 만들었지만, 뭔가 허전했습니다. 색상도 밋밋하고, 범례도 어색하고, 그루핑 처리에만 열 줄 넘게 코드를 써야 했습니다.
강주원 선배가 화면을 보더니 한마디 했습니다.
"Seaborn 써봐. 코드가 절반으로 줄어."
이 교재는 그 한마디에서 시작합니다. "소설처럼 읽는 Matplotlib"을 통해 시각화의 기초를 다졌다면, 이제는 통계 시각화의 우아한 세계로 한 걸음 더 나아갑니다. 같은 시리즈의 후속편으로, Matplotlib 위에서 동작하는 Seaborn이 어떻게 코드를 단순하게 만들고 그래프를 더 풍부하게 만드는지 민서의 이야기를 따라가며 배웁니다.
이 교재에 대하여
민서는 통계학과 2학년입니다. 지난 학기 데이터분석 수업에서 Matplotlib을 배웠고, 기본적인 그래프는 그릴 수 있습니다. 문제는 팀 프로젝트였습니다. 식당 팁 데이터를 분석해서 발표해야 하는데, 성별과 요일에 따른 팁 분포를 한 번에 보여주는 그래프를 만들려다 막혔습니다.
Matplotlib으로 그루핑, 색상 지정, 범례 설정까지 하려면 코드가 길어졌고, 그마저도 결과가 세련되지 않았습니다. 선배의 조언대로 Seaborn을 검색해봤더니, 같은 결과를 단 두 줄로 그릴 수 있었습니다.
이 교재는 민서가 Seaborn을 처음 접하는 순간부터 팀 프로젝트를 완성하고, 이후 더 복잡한 통계 시각화까지 도전하는 여정을 따라갑니다. 개념 설명보다 실제 코드와 결과가 먼저 나오고, 코드가 왜 그렇게 생겼는지 민서와 선배의 대화로 풀어냅니다.
대상 독자
이 교재는 다음 분께 맞습니다.
- Python 기초 문법을 알고 있는 분
- Pandas로 DataFrame을 다뤄본 분
- Matplotlib을 배웠지만 코드가 너무 길다고 느끼는 분
- 통계 시각화를 더 깔끔하게 만들고 싶은 분
- 대학교 데이터 분석 수업이나 프로젝트를 준비하는 분
R의 ggplot2처럼 통계적으로 의미 있는 그래프를 Python으로 그리고 싶다면, Seaborn이 그 답입니다.
선수 지식
이 교재를 따라가려면 아래 수준의 지식이 필요합니다.
| 영역 | 필요 수준 | 참고 교재 |
|---|---|---|
| Python 문법 | 반복문, 조건문, 함수 정의 | 소설처럼 읽는 Python (입문) |
| Pandas | DataFrame 생성, 필터링, groupby | 실전 Pandas |
| Matplotlib | plt.plot, plt.show 수준 | 소설처럼 읽는 Matplotlib |
| Jupyter Notebook | 셀 실행, 결과 확인 | — |
Matplotlib을 깊이 몰라도 괜찮습니다. Seaborn은 Matplotlib 위에서 동작하지만, 사용하는 데 Matplotlib 지식이 필수는 아닙니다.
왜 Seaborn인가
Seaborn을 선택해야 하는 이유는 네 가지입니다.
첫 번째, 통계 시각화에 특화되어 있습니다. 신뢰구간, 회귀선, 분포 추정 같은 통계적 요소를 별도 계산 없이 그래프에 바로 넣을 수 있습니다.
두 번째, Matplotlib보다 코드가 훨씬 짧습니다. 그루핑, 색상 팔레트, 범례를 수동으로 처리하지 않아도 됩니다. hue 하나로 범주형 변수를 색상으로 분리합니다.
세 번째, 기본 스타일이 아름답습니다. 아무 설정 없이도 발표 자료에 쓸 수 있는 수준의 그래프가 나옵니다. 논문 스타일, 발표 스타일을 테마 한 줄로 바꿀 수 있습니다.
네 번째, Pandas DataFrame을 네이티브로 지원합니다. DataFrame을 직접 넘기고 컬럼명을 문자열로 지정하면 됩니다. x, y 배열을 따로 추출할 필요가 없습니다.
교재 구성
| 파트 | 제목 | 주요 내용 |
|---|---|---|
| PART 00 | 들어가기 | Matplotlib vs Seaborn 비교, 환경 설정 |
| PART 01 | 첫 번째 통계 그래프 | 환경 설정, 기본 플로팅, Figure-level vs Axes-level, hue/style/size |
| PART 02 | 다양한 차트 | barplot, boxplot, violinplot, heatmap |
| PART 03 | 레이아웃과 스타일링 | FacetGrid, 테마, 팔레트, 폰트 |
| PART 04 | Pandas와 실전 | 실제 데이터셋으로 분석 + 시각화 통합 |
| PART 05 | 마무리 | 민서의 팀 프로젝트 완성, 다음 단계 안내 |