비전공자를 위한 데이터 과학 준비과정 : 코딩편 (1) — 배경지식

Gyuho Lee
Gyuho Lee
Sep 9, 2018 · 8 min read
  • 본 포스트는 데이터 저널리즘 TA과정에서 학생들의 이해를 돕기 위해 작성된 내용입니다. 자세한 설명은 제한되어 있으므로 더 많은 정보 혹은 고급 강의를 듣기 원하신다면 Cousera, EdX, KMOOC의 강의를 참고하실 것을 추천드립니다.
  • 본 포스트는 학생들의 이해를 돕기 위해 전문적인 내용을 축소, 비유를 통해 쉽게 전달하는데 목적을 두고 있습니다. 여기서 제시되는 일부 내용은 “의도적으로” 생략되거나 변형된 내용을 담고 있습니다.
  • 본 시리즈는 Computational Statistics을 반영하는 데이터 과학 중 코딩 관련 지식에 집중되어 있습니다. 수학/통계학과 관련해서는 다른 시리즈가 연재될 예정입니다.

오늘은 데이터 과학 도구 중 하나인 Python을 설치하고, 이를 쉽게 이용하기 위한 Jupyter환경을 설정하는 내용을 다뤄보겠습니다. 사실, 설치/환경설정의 경우 많은 시간을 요구하는 내용은 아닙니다. 하지만, 비전공자라면 설치 과정과 이후 설정과 관련된 몇 가지 개념에 대한 이해가 필요하기 때문에, 설치에 앞서 몇 가지 내용을 확인해 보도록 하겠습니다.

1. “Python”이 뭔가요? 왜 쓰나요?

여러분들이 수업(혹은 개인적 관심에서) Python을 설치하는 과정에서 가장 먼저 드는 생각은 “왜 Python을 설치하는 거지?” 혹은 “뭐가 Python이지?”라는 질문입니다. 이에 대해 다양한 설명이 있을 수 있지만 비전공자의 입장에서 이를 설명하자면 다음과 같이 설명할 수 있습니다.

  • “프로그래밍 언어”는 컴퓨터라는 일꾼을 섬세하게 다룰 수 있도록 해 준다
  • Python은 이런 프로그래밍 언어 중 하나이다.

간단한 예를 들어볼까요? 만약 여러분들이 컴퓨터를 사용해서 문서 작업을 한다면 어떨까요? 여러분들은 워드나 한글과 같은 “소프트웨어”를 켜서 글을 쓰고, 그림을 넣고, 표를 넣고 하는 식으로 문서 작업을 진행할 겁니다.

  • 동영상 플레이어 : 동영상을 재생한다
  • 문서 편집기 : 글을 쓴다. 그림/표를 넣는다. 및줄치거나 굵게 만든다
  • 인터넷 브라우저 : 인터넷 사이트를 들어가서 정보를 가져온다

이 작업은 “많은 사람들이 사용하기” 때문에 쉽게 사용할 수 있도록 구성되어 있습니다. 대부분 몇 번 클릭으로 컴퓨터가 움직이도록 만들어 놨죠.

하지만, 좀 더 복잡하고 개인적인 작업, 예를 들면 “인터넷에서 2010년도부터 2018년도까지 지역별 인구 이동 데이터를 모아서, 여기서 패턴을 뽑은 후 2019년도의 인구 이동을 예측해 보자”라는 식의 작업을 한다면? 혹은 “사진 수만개를 보고나서 유사한 얼굴을 모아서 가족인지 아닌지 판단해 본다면?”

여러분들은 “컴퓨터가 이것을 할 수 있을 것 같긴 한데, 어떻게 명령을 내려야 할지 모르겠다” 혹은 “무슨 프로그램을 쓰지?” 라는 생각을 하게 될 겁니다.

이것이 우리가 비전공자 입장에서 프로그래밍 언어를 배우는 이유입니다. 프로그래밍 언어는 “컴퓨터라는 일꾼에게 자세하게 명령을 내릴 수 있게” 해 줍니다. 간략히 보자면:

사람이 쓰는 말 <-> 프로그래밍 언어 <-> 컴퓨터가 쓰는 말

이런 식으로 사람과 컴퓨터 사이에서 내가 내린 명령을 “중개” 해 준다고 볼 수 있습니다.그리고 이런 다양한 통역가(프로그래밍 언어) 중 우리가 원하는 전문성을 가진 통역가 (“데이터 정리”에 특화된 통역가, “시각화”에 특화된 통역가)를 선택하는 것이 프로그래밍 언어의 선택입니다. 즉, 우리가 파이썬을 고르는 이유는

“사람이 이해하기 쉬운 식으로 우리 명령을 컴퓨터에게 전달하는 통역가 중에 데이터 처리를 잘하는 통역가”가 파이썬 이기 때문입니다.

2. “코딩”이 뭐에요?

그렇다면 코딩은 뭘까요? 간단히 말해 우리가 원하는 일을 하도록 프로그래밍 언어를 사용하는 겁니다. 아주 간단히 말한다면 “영어로 된 시리/빅스비 혹은 스마트 스피커를 사용하는 것”과 같습니다. 좀 자세히 보자면

  • “음악을 틀어줘”라는 명령을 생각한다
  • “Play Music”이라고 내 머리속에서 영어로 바꾼다
  • “Play Music”이라고 시리에게 말한다(입력한다)
  • 시리가 음악을 틀어준다!

위의 굵게 칠해진 부분이 “코딩”입니다. 컴퓨터에게 명령을 전달한 사람(시리)이 나와 다른 언어(프로그래밍 언어)를 쓰기 때문에 내가 가지고 있는 생각(명령)을 일단 다른언어(프로그래밍 언어)로 바꿔서 말하는 겁니다.

우리가 모르는 외국어를 보면 “외계어(?)”로 느끼듯이 TV등에서 프로그래머가 하는 작업을 보면 “뭔가 모르는 말이 잔뜩 써 있는” 이유가 바로 여기에 있습니다.

3. GUI? CLI? 굳이 이렇게 복잡하게 써야 되나요? 알고리즘의 이해

드라마나 뉴스에서 본 것 처럼 내 의도를 컴퓨터로 전달하는 과정에서 유저는 코딩, 정확하게는 일종의 줄글을 쓰게 됩니다.

그렇다면 우리는 왜 굳이 불편한 글을 쓸까요? 그것은 코딩 혹은 프로그램으로 하고자 하는 일이 최대한 자세하게, 그리고 효율적으로 처리되어야 하기 때문입니다.

여기서 우리는 GUI와 CLI라는 개념을 알 수 있습니다.

우선, GUI는 그래픽 유저 인터페이스를 줄인말입니다. 우리가 흔히 쓰는 윈도우나 맥 os처럼 컴퓨터를 다룰 때 그림(아이콘)을 눌러서(클릭, 더블클릭) 명령을 전달합니다.

반대로 CLI는 링크에서 보는 바와 같이 따로 텍스트 명령을 받는 창이 있어서 우리가 한줄씩 글을 쓰면(나중에 배우겠지만 미리 명령어를 다 완성시키고 작동시키는 방법도 있습니다). 컴퓨터가 명령을 실행합니다.

이런 방식의 이유는 컴퓨터가 원래 CLI에서 시작해서 GUI로 이동한 측면도 있지만, 무엇보다 CLI 방식이 다룰수 있는 정보량이 GUI보다 압도적이기 때문입니다(당장 유튜브 강좌 비디오 몇 개 분량이 실제 책으로 옮길 경우 반권도 안되는 경우가 대부분 입니다).

이것을 좀 더 깊게 본 개념이 알고리즘입니다.

간단히 말해 우리는 1) 데이터가 주어진 상태에서 2) 일정한 순서로 정교하게 짜여진 명령 묶음으로 3) (우리가 원하는) 출력을 뽑아내는 4) 일종의 안내서 를 만들게 됩니다(이 설명은 컴퓨터 공학자 존 구탁이 정의한 알고리즘에 대한 내용을 요약, 쉽게 바꾼 내용입니다).

이것은 클릭하고 드래그만으로 만들기엔 무리가 있기에 우리는 줄글을 써야 하며, 이를 위해 CLI를 사용합니다. 요즘은 GUI로 머신러닝 같은 복잡한 작업을 쉽게 만드는 Azure같은 서비스가 존재하지만, 여전히 CLI의 힘은 강력합니다.

4. 폴더? cd?

여기서 문제가 발생합니다. 코딩을 배우는 대부분의 사람들은 CLI를 경험해 보지 않았기 때문에 명령을 받는 창을 다루는 방법을 모르기 때문입니다. 실제로 각 운영체제는 CLI도구를 가지고 있지만 이를 다루는 법을 모르는 사람이 태반입니다.

OSX의 경우 터미널(https://en.wikipedia.org/wiki/Terminal_(macOS))

  • OSX의 경우 응용프로그램중 터미널(Terminal)을 찾아서 실행
  • command+space 눌러서 나오는 실행 창에 terminal이라고 입력 (고급)

윈도우의 경우 CMD(https://ko.wikipedia.org/wiki/Cmd.exe)

  • “명령 프롬프트” 실행
  • 윈도우의 경우 윈도우키 + R키 이후 cmd 입력 (고급)

라는 명칭을 가지고 있는 위 CLI도구에서 가장 난관은 일단 “경로와 명령어”입니다. CLI에서는 모든 명령은 정확한 명령어로, 정확한 경로를 입력하지 않으면 작동하지 않습니다!

마우스로 이동하면서 클릭하면 어느정도 감(?)이 잡히는 일반적인 운영체제와 달리 CLI는 매우 불친절하다고 볼 수 있겠습니다. 예를 들어볼까요?

도큐먼트에 있는 문서파일을 여는 작업을 할 때

GUI — 바탕화면에서 내컴퓨터나 탐색기를 클릭해서, 폴더를 열고, 파일이 있는 폴더에서 파일을 더블클릭 (직관적)

CLI(맥 터미널 기준) — open ./users/myname/documents/mytext.txt (눈썰미가 있다면 open이 여는 명령어, 나머지가 경로명인것을 알 수 있습니다)

CLI가 압도적으로 빠르고 불친절(…)합니다!

특히 이것이 문제가 되는 이유는 파이썬에서 데이터를 불러올때, 불러오는 방법을 모르거나 반대로 파이썬에서 데이터를 저장할 때 어디에 저장되는지 모르는 경우가 많이 발생하기 때문입니다.

예를 들어서 파이썬 Pandas(나중에 배웁니다)을 통해 데이터를 처리하는 과정을 볼 때,

위 명령어를 볼때 우리는 파일을 읽는 과정에서(read_csv), 경로명을 자세히 입력하고 저장하는 과정에서도 경로를 명확히 입력하는 것을 볼 수 있습니다(to_csv). 따옴표(“”)안에 들어있는 경로가 없을 경우 파이썬이 어디서 파일을 읽는지 모르기 때문입니다.

그래서 우리(초보 학습자)는

  1. 파이썬을 자료가 있는 폴더에서 실행하거나
  • 이러면 경로 지정을 안해도 읽고/쓸때 우리가 파이썬을 실행한 경로에서 데이터가 처리됩니다.

2. 자료가 있는 폴더를 한군데 만들어 놓고 경로를 외우거나

  • 이러면 우리는 지정 경로만 사용하면 됩니다

하는 식으로 파이썬을 이용하게 됩니다. 이때 필요한 명령어가 CD입니다.

cd는 폴더를 이동하는 명령어로 OSX와 Windows가 동일합니다.

cd 경로명

이런 식으로 사용하죠. 혹은 자주 쓰는 방식으로

터미널 창에서 cd (한칸 띄운 후) 폴더를 드래그해서 반짝이는 커서(프롬프트) 위에 올려놓으면 경로가 자동완성됩니다.

이후 우리는 해당 폴더로 이동한 상태가 되고(검은 화면 좌측에 경로가 항상 표시되기 때문에 확인하기 쉽습니다), 여기서 파이썬을 실행하거나 경로를 외우게 됩니다.

이미 이 부분에 대해서는 how to use terminal이나 how to use cmd를 누르면 엄청나게 많은 자료가 존재하기 때문에 더 이상 설명하지 않겠습니다(텍스트보다 동영상을 한번 보는게 압도적으로 도움이 되기 때문입니다).


이제 설치에 필요한 대부분의 기초 지식을 얻었습니다.

다음 챕터부터 우리는 실제 파이썬 설치를 진행해 보도록 하겠습니다.

Gyuho Lee

Written by

Gyuho Lee

from data analyst to data scientist / Seoul National University HCI+D Lab

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade