iBetter Books
수정

배운 것 정리

선배가 종이 냅킨을 펼쳐 펜을 꺼냈습니다.

"처음부터 한번 짚어보자. 네가 이 교재를 통해 뭘 배웠는지."

민서는 고개를 끄덕이며 커피잔을 두 손으로 감쌌습니다. 지난 두 달이 머릿속을 스쳐 지나갔습니다.

PART 배운 것
PART 01 환경 설정, 기본 플로팅, Figure-level vs Axes-level 차이
PART 02 관계/범주형/분포/회귀/행렬 차트, 상황에 맞는 차트 선택
PART 03 FacetGrid/PairGrid/JointGrid, 테마와 색상 팔레트, 그래프 저장
PART 04 Pandas 데이터프레임 연동, 실전 프로젝트, 도구 조합 전략

"생각보다 많이 배웠네요."

민서가 표를 보며 말했습니다. 선배가 웃었습니다.

"그렇지. 그런데 아직 모르는 것도 있어."

이 교재에서 다루지 않은 것

선배가 냅킨에 목록을 적기 시작했습니다.

"Seaborn은 강력하지만 모든 걸 할 수 있는 건 아니야. 네가 앞으로 만날 상황들이 있거든."

첫 번째는 대규모 데이터 문제입니다. 행이 100만 개가 넘어가면 산점도 하나 그리는 데도 시간이 걸리고, 화면이 까맣게 뒤덮입니다. 이럴 때는 샘플링을 하거나, 밀도를 보여주는 hexbin 플롯을 활용하는 방법을 따로 익혀야 합니다.

두 번째는 커스텀 Figure-level 함수입니다. Seaborn이 제공하는 relplot, catplot 같은 함수를 직접 만들어 쓰고 싶다면 FacetGrid의 내부 구조를 좀 더 깊이 파야 합니다. 이 교재는 사용법에 집중했기 때문에 그 안쪽까지는 들어가지 않았습니다.

세 번째는 Seaborn의 objects 인터페이스입니다. Seaborn 0.12부터 등장한 실험적 기능으로, 문법이 완전히 다릅니다. 아직 안정화 단계라 이 교재에서는 다루지 않았지만, 앞으로 주목할 만한 기능입니다.

마지막은 시계열 특화 시각화입니다. 날짜와 시간 데이터를 다룰 때는 Pandas 자체의 .plot() 메서드나 Matplotlib의 DateFormatter를 함께 쓰는 경우가 많습니다. Seaborn만으로는 한계가 있습니다.

추천 학습 경로

"그래서 다음은 뭘 배워야 해요?"

민서가 물었습니다. 선배는 잠시 생각하더니 말했습니다.

"그건 네가 뭘 하고 싶냐에 달려 있어."

목적에 따라 방향이 달라집니다.

목적 추천
머신러닝 시각화 scikit-learn + Seaborn 조합
웹 대시보드 Plotly + Dash (소설처럼 읽는 Plotly 교재)
보고서 자동화 Jupyter + nbconvert
통계 분석 심화 scipy.stats + Seaborn
지리 데이터 geopandas + Matplotlib

"저는 인터랙티브한 시각화를 해보고 싶어요. 발표 때 교수님이 그래프를 직접 만져볼 수 있으면 좋겠다고 하셨거든요."

선배가 고개를 끄덕였습니다.

"그러면 Plotly야. 우리 교재도 있어. 같은 방식으로 소설처럼 읽을 수 있게 되어 있어."

마무리

민서는 카페를 나서며 하늘을 올려다봤습니다.

Matplotlib으로 시작했습니다. 무뚝뚝하고 설정이 많았지만, 그 덕에 그래프가 어떻게 만들어지는지 조금은 이해할 수 있었습니다. 그리고 Seaborn을 만났습니다. 코드 한 줄에 그래프가 뚝딱 나왔고, 스타일도 근사했습니다. 팀 발표를 빛내준 것도 결국 Seaborn이었습니다.

이제 다음은 Plotly입니다. 사용자가 직접 만지고 확대하고 필터링할 수 있는, 살아있는 그래프를 만들어보겠습니다.

뒤에서 선배가 말했습니다.

"도구는 도구일 뿐이야. 중요한 건 데이터에서 이야기를 찾아내는 눈이야."

민서는 돌아보며 웃었습니다. 그 눈을 기르는 것이라면, 아직 한참 남았습니다. 그리고 그 한참이 전혀 무섭지 않았습니다.