서문
데이터 과학(Data Science)이란 무엇일까요?
이 책은 파이썬(Python)을 활용한 데이터 과학(Data Science)을 다룹니다. 그러다 보니 자연스럽게 ’데이터 과학(Data Science)이란 대체 무엇인가?’라는 질문을 던지게 되죠. 데이터 과학이라는 용어가 일상적으로 쓰이는 데 반해, 그 정의를 딱 내리기가 놀라울 정도로 어렵다는 점은 꽤 당황스럽기도 합니다. 비평가들은 이를 불필요한 꼬리표(데이터를 다루지 않는 과학이 어디 있겠냐는 뜻이죠)라거나, 그저 이력서를 화려하게 꾸며 채용 담당자의 눈길을 끌려는 유행어일 뿐이라고 깎아내리기도 합니다.
하지만 저는 이런 비판이 중요한 본질을 놓치고 있다고 생각합니다. 과장된 면이 없지는 않지만, 데이터 과학은 산업계와 학계를 아우르는 여러 분야에서 그 중요성이 날로 커지는 ’학제간 융합 기술’을 일컫는 가장 적절한 표현일 것입니다. 여기서 핵심은 바로 융합(학제간)이라는 점입니다. 개인적으로 데이터 과학에 대한 가장 훌륭한 정의는 드류 콘웨이(Drew Conway)가 2010년 9월 블로그에 처음 소개한 ’데이터 과학 벤 다이어그램(Venn diagram)’에 잘 나타나 있다고 봅니다(아래 그림 참조).

(source: Drew Conway, used by permission)
다이어그램의 레이블 중에는 다소 농담 섞인 말도 있지만, 이 그림은 사람들이 ’데이터 과학’이라고 할 때 떠올리는 본질을 잘 포착하고 있습니다. 즉, 여러 분야가 어우러진 주제라는 점이죠. 데이터 과학은 세 가지 뚜렷하면서도 서로 겹치는 영역으로 구성됩니다. 점점 커지는 데이터 세트를 모델링하고 요약하는 방법을 아는 통계학자의 역량, 데이터를 효율적으로 저장하고 처리하며 시각화할 알고리즘을 설계하고 사용하는 컴퓨터 과학자의 기술, 그리고 적절한 질문을 던지고 답변을 맥락에 맞게 해석하는 데 필요한 도메인 전문 지식(해당 분야의 전통적인 훈련 과정)입니다.
이를 염두에 두면 데이터 과학을 ’완전히 새로운 지식 영역’이라기보다, 현재 자신의 전문 분야에서 적용할 수 있는 ’새로운 기술 세트’로 생각하시기를 권합니다. 선거 결과 분석, 주식 수익률 예측, 온라인 광고 클릭 최적화, 미생물 식별, 새로운 천체 탐색 등 어떤 분야의 데이터를 다루더라도, 이 책의 목표는 여러분이 각자의 분야에서 새로운 질문을 던지고 스스로 답할 수 있는 능력을 갖추도록 돕는 것입니다.
이 책은 누구를 위한 책인가요?
워싱턴 대학교나 여러 기술 컨퍼런스에서 제가 가장 자주 받았던 질문 중 하나는 “파이썬을 어떻게 배워야 하나요?”였습니다. 질문하시는 분들은 주로 공학적 마인드를 지닌 학생이나 개발자, 연구원으로, 이미 코드 작성이나 연산 및 수치 분석 도구 사용에 능숙한 경우가 많았습니다. 이분들은 파이썬 자체를 배우는 것보다는 파이썬을 데이터 분석과 과학적 연산을 수행하기 위한 강력한 도구로 활용하는 데 더 큰 관심이 있었죠. 온라인에는 관련 영상이나 블로그, 튜토리얼이 넘쳐나지만, 정작 이 질문에 시원하게 답해줄 만한 자료가 부족해 오랫동안 아쉬움을 느꼈습니다. 그 아쉬움이 바로 이 책을 집필하게 된 계기가 되었습니다.
이 책은 파이썬이나 프로그래밍 입문서가 아닙니다. 함수 정의, 변수 할당, 객체 메서드 호출, 프로그램 흐름 제어 같은 파이썬의 기초 작업에는 이미 익숙하다고 보고 이야기를 진행하겠습니다. 대신 파이썬 사용자가 데이터 과학 스택(뒤에서 언급할 라이브러리와 도구들)을 활용해 데이터를 효과적으로 저장하고 다루며, 그 속에서 의미 있는 통찰을 끌어낼 수 있도록 돕고자 합니다.
왜 파이썬인가?
파이썬은 지난 수십 년간 대규모 데이터 세트 분석과 시각화를 포함한 과학적 컴퓨팅 작업을 수행하는 핵심 도구로 자리를 잡았습니다. 파이썬의 초창기 지지자들에게는 의외의 결과였을지도 모릅니다. 언어 자체가 처음부터 데이터 분석이나 과학적 컴퓨팅을 위해 설계된 것은 아니었기 때문입니다. 파이썬이 데이터 과학 분야에서 유용한 이유는 무엇보다 강력한 외부 패키지 생태계 덕분입니다. 동종 배열 기반의 데이터 조작을 위한 NumPy, 이종 및 레이블이 있는 데이터 조작을 위한 Pandas, 일반적인 과학 컴퓨팅용 SciPy, 출판물 수준의 시각화를 구현하는 Matplotlib, 대화형 실행 및 공유를 위한 IPython, 머신러닝을 위한 Scikit-Learn 등 뒤에서 소개할 수많은 도구가 파이썬의 힘을 뒷받침합니다.
파이썬 언어 자체에 대한 가이드가 필요하다면 이 책의 자매 프로젝트인 A Whirlwind Tour of Python을 추천합니다. 이 보고서는 이미 다른 프로그래밍 언어에 익숙한 데이터 과학자를 대상으로 파이썬 언어의 핵심 기능들을 간략하게 훑어봅니다.
책 개요
이 책은 파이썬 데이터 과학 이야기의 핵심을 이루는 특정 패키지나 도구들을 중점적으로 다루며, 각 장은 하나의 개념을 설명하는 짧고 독립적인 내용으로 구성됩니다.
- 1부, Jupyter: 일반 파이썬을 넘어서: IPython과 Jupyter를 소개합니다. 대다수 데이터 과학자가 작업에 사용하는 효율적인 컴퓨팅 환경을 살펴봅니다.
- 2부, NumPy 소개: 파이썬에서 고밀도 데이터 배열을 효율적으로 다루기 위한 NumPy 라이브러리와
ndarray객체를 중점적으로 다룹니다. - 3부, Pandas를 사용한 데이터 조작: 파이썬에서 레이블이 있는 열 형태의 데이터를 효율적으로 저장하고 가공하기 위한 Pandas 라이브러리와
DataFrame을 소개합니다. - 4부, Matplotlib를 사용한 시각화: 파이썬의 대표적인 시각화 라이브러리인 Matplotlib의 다양한 기능들을 살펴봅니다.
- 5부, 머신러닝(Machine Learning): 주요 머신러닝 알고리즘들을 깔끔하고 효율적으로 구현한 Scikit-Learn 라이브러리를 다룹니다.
파이썬의 데이터 분석 생태계는 여기서 소개하는 패키지들보다 훨씬 방대하며 지금 이 순간에도 성장하고 있습니다. 따라서 이 책 전반에 걸쳐 파이썬의 가능성을 넓혀주는 다른 흥미로운 프로젝트나 패키지들도 최대한 소개하려 노력했습니다. 그럼에도 불구하고 여기서 다루는 핵심 패키지들은 현재 데이터 과학 현장에서 가장 기본이 되는 도구들이며, 앞으로도 그 중요성은 계속될 것입니다.
코드 예제 사용
실습에 필요한 보충 자료(예제 코드, 그림 등)는 GitHub에서 내려받을 수 있습니다. 이 책은 여러분의 업무나 프로젝트에 실질적인 도움을 드리고자 썼습니다. 따라서 책에서 제공하는 예제 코드는 자유롭게 활용하셔도 좋습니다. 다만 코드의 상당 부분을 복제해서 사용하는 경우가 아니라면, 따로 허락을 받으러 저희에게 연락하실 필요는 없습니다. 예를 들어 책 속 코드 조각 여러 개를 활용해 프로그램을 만드는 데에는 허가가 필요 없지만, 오라일리(O’Reilly) 도서의 예제 CD-ROM을 배포하거나 판매하는 경우에는 사전에 허가를 받아야 합니다. 또한 책을 인용하고 예제 코드를 사용해 질문에 답하는 데에는 허가가 필요 없지만, 본문의 예제 코드를 제품 설명서에 대량으로 넣는 경우라면 저희와 상의가 필요합니다.
출처를 밝혀주시는 것은 필수는 아니지만, 밝혀주시면 저희에게 큰 힘이 됩니다. 출처에는 보통 책 제목, 저자, 출판사, ISBN이 포함됩니다. 예: “Python Data Science Handbook, 2판, 작성자: Jake VanderPlas(O’Reilly). Copyright 2023 Jake VanderPlas, 978-1-098-12122-8.”
혹시나 여러분의 예제 코드 사용이 ’공정 이용’의 범위를 넘어서는지 궁금하다면 언제든 permissions@oreilly.com으로 문의해 주세요.
설치 고려 사항
과학 연산을 위한 파이썬과 관련 라이브러리 설치는 생각보다 간단합니다. 이번 섹션에서는 환경을 설정할 때 참고하면 좋을 몇 가지 사항을 안내해 드릴게요.
파이썬 설치 방법은 다양하지만, 데이터 과학에 사용하기 위해 추천하는 방식은 윈도우, 리눅스, 맥OS 환경 어디서나 비슷하게 동작하는 아나콘다(Anaconda) 배포판입니다. 아나콘다 배포판은 크게 두 가지 형태로 제공됩니다.
Miniconda: 파이썬 패키지 관리자인 conda라는 커맨드 라인 도구와 파이썬 인터프리터만 포함된 가벼운 버전입니다. 리눅스의 apt나 yum 같은 도구에 익숙하신 분들께 추천합니다.
Anaconda: 파이썬과 conda는 물론, 과학 연산에 필요한 수많은 패키지가 미리 설치되어 있는 버전입니다. 미리 다 들어있다 보니 설치 시 몇 기가바이트의 디스크 공간이 필요합니다.
Anaconda에 들어있는 모든 패키지는 Miniconda 위에 필요한 것만 골라 직접 설치할 수도 있습니다. 이런 이유로 저는 가볍게 시작할 수 있는 Miniconda를 먼저 설치하시는 쪽을 권합니다.
시작하려면 Miniconda 패키지를 내려받아 설치한 뒤(파이썬 3 버전을 선택해 주세요), 이 책에서 주로 다루는 핵심 패키지들을 아래 명령어로 설치해 보세요.
[~]$ conda install numpy pandas scikit-learn matplotlib seaborn jupyter
본문 곳곳에서 파이썬 과학 생태계의 더 전문적인 도구들도 사용하게 될 텐데요. 설치는 보통 conda install packagename 명령어로 간단히 해결됩니다. 기본 conda 채널에서 찾을 수 없는 패키지는 커뮤니티 중심의 방대한 저장소인 conda-forge를 확인해 보세요.
가상 환경 생성 및 활용법을 포함하여 Conda에 대한 더 자세한 정보는 공식 문서를 참고하시기 바랍니다.