첫 단계 (First Steps)

데이터 과학은 가공되지 않은 데이터를 이해, 통찰력, 지식으로 바꿀 수 있게 해주는 흥미진진한 학문입니다. “Python for Data Science”의 목표는 여러분이 데이터 과학을 할 수 있게 해주는 파이썬의 가장 중요한 도구와 워크플로우를 배우도록 돕는 것입니다. 이 책을 읽고 나면, 여러분은 다양한 데이터 과학 과제들을 해결할 수 있는 도구들을 갖게 될 것입니다!

여러분이 배우게 될 것

데이터 과학은 방대한 분야이며, 한 권의 책을 읽는 것만으로 모든 것을 마스터할 수는 없습니다. 이 책은 여러분에게 가장 중요한 도구들에 대한 탄탄한 기초를 제공하고, 필요할 때 더 많은 것을 배울 수 있는 리소스를 찾는 지식을 제공하는 것을 목표로 합니다. 전형적인 데이터 과학 프로젝트에 필요한 도구 모델은 다음과 같습니다:

코드 보기
# remove-input
import graphviz

dot = graphviz.Digraph(comment="Data science workflow")
dot.attr(compound="true")
dot.edge("Import", "Clean")

with dot.subgraph(name="cluster_0") as c:
    c.attr(style="filled", color="lightgrey")
    c.node_attr.update(style="filled", color="white")
    c.edges(
        [("Visualise", "Analyse"), ("Analyse", "Transform"), ("Transform", "Visualise")]
    )
    c.attr(label="Understand")

dot.edge("Clean", "Analyse", lhead="cluster_0")

dot.edge("Analyse", "Communicate", ltail="cluster_0")

dot

먼저 데이터를 파이썬으로 불러와야(import) 합니다. 이는 일반적으로 파일, 데이터베이스 또는 웹 응용 프로그램 프로그래밍 인터페이스(API)에 저장된 데이터를 파이썬의 ’데이터 프레임’으로 로드하는 것을 의미합니다. 데이터 없이는 데이터 과학을 할 수 없습니다!

데이터를 불러온 후에는 보통 데이터를 정리(clean)하거나 정돈할 필요가 있습니다. 데이터를 정리한다는 것은 데이터셋의 의미와 저장 방식이 일치하도록 일관된 형태로 저장하는 것을 의미합니다. 이는 데이터를 여러분이 쉽게 다룰 수 있는 형식으로 만든다는 말을 멋지게 표현한 것입니다! 소위 “깔끔한(tidy)” 데이터는 각 열이 변수이고 각 행이 관측치인 구조화된 표 형태 데이터의 특수한 사례입니다(단, 모든 데이터가 표 형태인 것은 아닙니다). 정돈된 데이터는 일관된 구조를 통해 여러분이 다른 함수에 맞게 데이터를 변환하느라 고생하는 대신 데이터에 대한 질문에 답하는 데 집중할 수 있게 해주기 때문에 중요합니다.

정돈된 데이터를 얻었다면, 다음 단계는 대개 이를 변환(transform)하는 것입니다. 변환에는 관심 있는 관측치를 좁히는 것(예: 특정 도시의 모든 사람, 또는 작년 한 해 동안의 모든 데이터), 기존 변수의 함수로 새로운 변수를 만드는 것(예: 거리와 시간으로 속도 계산), 그리고 일련의 요약 통계량(예: 개수나 평균)을 계산하는 것이 포함됩니다.

필요한 변수들이 포함된 정돈된 데이터가 준비되면, 지식 생성을 위한 두 가지 주요 엔진이 있습니다: 시각화와 분석입니다. 이들은 서로 보완적인 강점과 약점을 가지고 있으므로 실제 분석에서는 이들 사이를 여러 번 반복하게 될 것입니다.

시각화(Visualisation)는 근본적으로 인간의 활동입니다. 좋은 시각화는 여러분이 예상하지 못했던 것을 보여주거나 데이터에 대한 새로운 질문을 제기할 것입니다. 또한 좋은 시각화는 여러분이 잘못된 질문을 하고 있거나 다른 데이터를 수집해야 한다는 힌트를 줄 수도 있습니다. 시각화는 여러분을 놀라게 할 수 있습니다! 시각화는 다양한 형태로 나타납니다.

분석(Analysis)은 이 책에서 다루기에는 너무 큰 주제입니다. 모델을 실행하거나, 통계 작업을 하거나, 특정 질문에 답하거나, 데이터에서 서사를 끌어내는 작업이 포함될 수 있습니다. 중요한 기술이지만 응용 분야에 따라 크게 달라지는 기술입니다.

데이터 과학의 마지막 단계는 소통(communication)으로, 모든 데이터 분석 프로젝트에서 절대적으로 중요한 부분입니다. 여러분의 모델과 시각화가 데이터를 얼마나 잘 이해하게 해주었는지는 중요하지 않습니다. 여러분의 결과를 다른 사람들에게 전달할 수 없다면 말이죠.

이 모든 도구들을 둘러싸고 있는 것이 프로그래밍(programming)입니다. 프로그래밍은 데이터 과학 프로젝트의 거의 모든 부분에서 사용하는 횡단적인 도구입니다. 성공적인 데이터 과학자가 되기 위해 전문 프로그래머가 될 필요는 없지만, 프로그래밍에 대해 더 많이 배우는 것은 가치가 있습니다. 더 나은 프로그래머가 되면 공통적인 작업을 자동화하고 새로운 문제를 더 쉽게 해결할 수 있기 때문입니다.

여러분은 모든 데이터 과학 프로젝트에서 이 도구들을 사용하겠지만, 대부분의 프로젝트에서 이들만으로는 충분하지 않을 것입니다. 여기에는 대략 80/20 규칙이 적용됩니다. 여러분이 이 책에서 배울 도구들을 사용하여 모든 프로젝트의 약 80%를 해결할 수 있지만, 나머지 20%를 해결하려면 다른 도구들이 필요할 것입니다. 이 책 전반에 걸쳐 여러분이 더 많은 것을 배울 수 있는 리소스들을 안내해 드리겠습니다.

이 책의 구성

앞서 설명한 데이터 과학 도구들은 분석에서 사용하는 순서에 따라 대략적으로 구성되어 있습니다(물론 여러 번 반복하게 되겠지만요). 하지만 우리의 경험상 이것이 도구들을 배우는 가장 좋은 방법은 아닙니다. 데이터를 가져오고 정리하는 것부터 시작하면 대개 일상적이고 지루하거나 이상하고 실망스러운 경우가 많기 때문입니다. 두 가지 모두 새로운 주제를 배우기 시작할 때 의욕을 꺾을 수 있습니다!

대신, 우리는 이미 가져오고 정리된 데이터의 시각화와 변환부터 시작할 것입니다. 그렇게 하면 나중에 여러분이 직접 데이터를 가져오고 정리할 때, 그 고통이 가치 있다는 것을 알기 때문에 동기 부여가 높게 유지될 것입니다.

각 장에서 우리는 비슷한 패턴을 고수하려고 노력합니다: 더 큰 그림을 볼 수 있도록 몇 가지 동기 부여 예제로 시작한 다음 세부 사항으로 들어갑니다. 책의 각 섹션은 여러분이 배운 것을 연습할 수 있도록 연습 문제와 짝을 이룹니다. 연습 문제를 건너뛰고 싶은 유혹이 들 수도 있지만, 실제 문제로 연습하는 것보다 더 좋은 학습 방법은 없습니다.

배우지 않을 내용

이 책에서 다루지 않는 몇 가지 중요한 주제가 있습니다. 가능한 한 빨리 시작할 수 있도록 필수적인 내용에 철저히 집중하는 것이 중요하다고 믿기 때문입니다. 즉, 이 책이 모든 중요한 주제를 다룰 수는 없습니다.

모델링 (Modelling)

모델링은 데이터 과학에 있어 매우 중요하지만 워낙 방대한 주제라 안타깝게도 여기서는 충분히 다룰 공간이 없습니다. 시작하기 좋은 곳으로는 머신러닝을 위한 sklearn 튜토리얼, Causal inference for the brave and true, 그리고 Coding for Economists회귀 분석베이지안 추론 페이지가 있습니다.

빅데이터 (Big data)

이 책은 작은 규모의 “인-메모리(in-memory)”(대략 노트북에서 열 수 있는 정도를 의미합니다) 데이터셋에 집중합니다. 이는 시작하기에 적절한 곳인데, 작은 데이터를 다루는 경험 없이 빅데이터를 다룰 수는 없기 때문입니다. 이 책에서 배우는 도구들은 수백 메가바이트의 데이터를 쉽게 처리할 수 있으며, 약간의 주의를 기울이면 일반적으로 1-2GB(기가바이트)의 데이터까지 작업할 수 있습니다. 정기적으로 이보다 큰 데이터(예: 10-100GB)를 다루어야 한다면 데이터베이스와 Ibis와 같이 데이터베이스와 상호 작용할 수 있는 도구들에 대해 더 배워야 합니다.

(만약 여러분의 데이터가 이보다 크다면, 그 빅데이터 문제가 사실은 변장한 작은 데이터 문제가 아닌지 신중히 고려해 보세요. 전체 데이터셋은 클 수 있지만, 특정 질문에 답하는 데 필요한 데이터는 작은 경우가 많습니다. 메모리에 들어오면서도 관심 있는 질문에 답할 수 있는 부분 집합, 부분 샘플 또는 요약본을 찾을 수도 있습니다. 여기서의 과제는 적절한 작은 데이터를 찾는 것이며, 이는 종종 많은 반복이 필요합니다.)

또 다른 가능성은 여러분의 빅데이터 문제가 사실은 변장한 수많은 작은 데이터 문제인 경우입니다. 개별 문제는 메모리에 들어올 수 있지만, 그런 문제가 수백만 개 있는 것입니다. 예를 들어, 데이터셋의 각 개인에게 모델을 맞추고 싶을 수 있습니다. 10명이나 100명뿐이라면 사소한 일이겠지만, 백만 명이라면 다릅니다. 다행히 각 문제는 다른 문제와 독립적이므로(가끔 당혹스러울 정도로 병렬적(embarrassingly parallel)이라고 불리는 구성입니다), 서로 다른 데이터셋을 다른 컴퓨터로 보내 처리할 수 있는 시스템(Hadoop이나 Spark 같은)만 있으면 됩니다. 이 책에서 설명하는 도구들을 사용하여 단일 부분 집합에 대해 질문에 답하는 법을 익히고 나면, 전체 데이터셋에 대해 이를 해결하기 위해 pyspark와 같은 새로운 도구들을 배울 수 있습니다.

Julia 및 R

이 책에서는 데이터 과학에 가끔 사용되는 R이나 Julia에 대해 전혀 배우지 않을 것입니다. 이는 우리가 이 도구들이 나쁘다고 생각해서가 아닙니다. 전혀 그렇지 않습니다! 이 책에서는 데이터 과학을 위한 세 가지 핵심 도구라고 생각하는 것들을 보게 될 것입니다:

  • 파이썬
  • SQL
  • 명령줄 스크립팅 (command line scripting)

이것들은 여러분이 데이터 과학자로서 일자리를 얻게 해줄 세 가지 언어이며, 우리가 여기에 집중하는 아주 좋은 이유입니다. 우리는 대부분의 시간을 파이썬에 할애할 것이며 그럴 만한 이유가 있습니다. 파이썬은 대개 세계에서 가장 인기 있는 프로그래밍 언어 1, 2위를 다투며, 그만큼 중요하게도 배우기 가장 쉬운 언어 중 하나이기도 합니다. 범용 언어이므로 광범위한 작업을 수행할 수 있습니다. 이러한 특징의 조합 때문에 사람들은 파이썬이 진입 장벽은 낮고 한계는 높다(low floor and a high ceiling)고 말합니다. 또한 매우 다재다능합니다. 파이썬은 모든 분야에서 2등인 언어라는 농담이 있는데, 여기에는 어느 정도 진실이 담겨 있습니다(비록 머신러닝과 같은 일부 작업에서는 1등이지만요). 하지만 이렇게 넓은 범위를 커버하는 언어는 매우 유용합니다. 파이썬은 산업계, 학계, 공공 부문 전반에서 널리 사용되며 학교에서도 종종 가르칩니다.

파이썬은 뒤에 거대한 커뮤니티가 있는 데이터 과학 및 프로그래밍 일반을 위한 가장 인기 있는 도구이기에, 여러분의 데이터 과학 여정을 시작하기에 훌륭한 곳이라고 생각합니다.

이 책에 관한 세부 정보

이 책은 다음 버전의 파이썬으로 컴파일되었습니다:

코드 보기
# remove-input
import sys

print("컴파일에 사용된 파이썬 버전:", sys.version)
컴파일에 사용된 파이썬 버전: 3.10.19 | packaged by conda-forge | (main, Jan 26 2026, 23:45:08) [GCC 14.3.0]

감사의 말

이 책은 R for Data Science (2e)를 매우 가깝게 재현한 것이며, 데이터 과학을 이해하기 쉬운 책으로 만들어 더 접근하기 쉽게 하려는 그 노력에서 영감을 받았습니다.