이번 시간의 목차
1. 이 많은 데이터를 어떻게 처리하는 걸까?
2. 프로그래밍에 대해 먼저 알아보자!
3. Life is too short, You need Python
4. 본격적으로 파이썬을 활용해 보자!
5. 파이썬 개발 도구란?
6. 문자열과 숫자?
7. 이것 덕분에 파이썬이 편리해졌지!
8. 모듈을 써 보자!
9. 빨간 줄글, 혹시 이게 오류?
10. 마무리
자, 가자! 파이썬의 세계로!
이 많은 데이터를 어떻게 처리하는 걸까?
세상은 데이터로 가득하다. 인구, 교통, 날씨, 시청 기록, 매출 자료, 댓글 등… 우리 생활에서는 수많은 데이터가 쏟아져 나오고, 이 양은 셀 수 없을 정도로 방대하다. 이 데이터를 어떻게 가공해야 의미 있는 정보를 추출할 수 있을까?
이를 위해 우리가 응용할 수 있는 학문 중 하나가 바로 데이터 과학(Data Science)이다. 데이터 과학이란 과학적 방법으로 정보나 지식을 추출하는 학문이고, 통계학, 컴퓨터 과학, 그리고 데이터가 발생하는 영역과 관련된 학문 분야의 이론과 기술을 융합적으로 사용해야 한다. 따라서 데이터 과학은 대표적인 학제 연구 분야라고 할 수 있다.
데이터 과학에서 데이터를 가공하는 과정을 크게 구분하면 아래의 다섯 가지 단계가 된다.
각 단계마다 전문성을 가지고 해당 업무에 종사하는 사람들이 존재한다.
- 데이터 엔지니어 : 데이터 수집과 정제에 전문적 역량을 가진 사람들을 통칭하여 부른다.
- 데이터 분석가 : 데이터의 정제 작업부터 분석까지의 작업에 종사한다.
- 기계 학습 엔지니어 : 데이터를 이용하여 기계를 학습시키기 위한 학습 모델을 구축하고 이를 배포하는 일을 한다.
그리고 이 세 분야에 해당하는 역량을 모두 갖추고 다양한 문제를 해결하는 사람이 바로 데이터 과학자이다.
프로그래밍에 대해 먼저 알아보자!
한편, 프로그래밍(Programming)이란 무엇일까?
그 전에 프로그래밍의 어원인 프로그램(Program)에 대해 먼저 알아보자. 프로그램이란 컴퓨터가 해야 할 일을 미리 기록해 놓은 작업 지시서 같은 것이다. 예로 들자면 우리가 많이 사용하는 파워포인트나 카카오톡, 크롬 등이 있다. 이런 프로그램을 작성하는 일을 프로그래밍이라고 하고, 이 일을 하는 사람을 프로그래머(Programmer)라고 한다.
전기 신호에 의해서 동작하는 컴퓨터는 0과 1, OFF와 ON의 이진(Binary) 값만을 이해한다. 프로그램 안에는 '무엇을 어떤 식으로 해라'와 같은 형태의 명령어(Instruction)가 존재하는데, 이 명령어 역시 0000100100001111… 과 같은 이진수 값으로 되어 있다. 이렇게 기계가 이해할 수 있는 명령어를 기계어(Machine Code)라고 한다.
하지만 기계어 명령은 사람이 이해하기는 너무 어렵다. 그래서 실제로 개발을 할 때에는 사람이 이해할 수 있는 언어를 사용해서 명령을 나타내고, 이렇게 만들어진 명령어를 기계어로 번역하여 프로그램을 만든다. 이렇게 프로그램을 작성하기 위해 사람이 이해할 수 있도록 만든 언어를 프로그래밍 언어(Programming Language)라고 하며, 이 언어를 이용해서 사용자가 원하는 일을 작성한 것을 소스 코드(Source Code)라 한다. 프로그래밍 언어는 컴퓨터가 이해할 수 있도록 기계어로 번역되어야 하기 때문에 엄격하게 약속된 문법을 따른다.
그렇다면 우리는 왜 프로그래밍에 대해 알아야 하는 걸까?
인간과 컴퓨터는 상호 보완적인 특징을 가지고 있고, 인간의 부족한 점을 컴퓨터가 쉽게 메울 수 있다. 앞서 말했듯 방대한 데이터를 예시로 들어 보자. 사람이 그 데이터를 일일이 분류한다면 적어도 몇 시간은 걸릴 테지만, 컴퓨터는 명령만 주어지면 몇 분, 혹은 몇 초 안에 끝낼 수 있다. 이처럼 지루하고 반복되는 일을 컴퓨터한테 시키려면 우리가 컴퓨터 언어를 배워서 컴퓨터와 대화할 수 있어야 한다. 그를 위해서는 프로그래밍을 필수적으로 배워야 한다.
Life is too short, You need Python
인생은 너무 짧으니 파이썬이 필요하다.
세상에는 다양한 프로그래밍 언어가 존재한다. 모든 언어가 각자 고유의 문법 체계를 가지고 있고, 프로그래머들은 각자에게 맞는 언어를 골라 사용한다. 대표적인 언어로는 'C', 'C++', 'JavaScript', 그리고 우리가 앞으로 다룰 'Python' 등이 있다.
파이썬(Python)은 귀도 반 로섬이 1991년에 개발한 대화형 프로그래밍 언어로, '인생은 너무 짧으니 파이썬이 필요하다' 라는 말이 있을 정도로 생산성과 효율성이 뛰어나다. 무엇보다도 파이썬은 인터프리터를 통하여 작성한 문장의 결과를 바로바로 확인할 수 있는 인터프리터 언어이기 때문에 간편하게 실행을 살펴볼 수 있다. 덕분에 간결하면서도 효율적인 프로그램을 빠르게 작성할 수 있어 초보자의 프로그래밍 입문에도 적합하다.
본격적으로 파이썬을 활용해 보자!
파이썬을 활용하기 위해서는 우선 파이썬 인터프리터와 기본 라이브러리, 그리고 개발도구를 설치해야 한다. 이는 파이썬 소프트웨어 재단에서 관리하고 있으며, 홈페이지는 아래의 링크를 통해 접속할 수 있다.
다운받은 후 실행하면 아래와 같은 화면이 나타날 것이다.
②Install Now를 클릭하면 바로 설치가 시작되지만, ①의 체크박스를 잠시 확인해 보자.
- Install launcher for all users : 선택할 시 이 컴퓨터를 사용하는 모든 사용자가 파이썬을 이용할 수 있는 설정이다.
- Add Python 3.9 to PATH : 명령 프롬프트 (흔히 cmd라고도 한다.)에서도 파이썬 셸로 접근할 수 있게 해주는 설정이다.
두 설정 모두 체크해 두면 편리하다. 물론 지금 선택해두지 않아도 언제든지 설치 프로그램을 다시 실행해서 체크박스를 선택하고 활성화할 수 있다.
이제 본격적으로 파이썬을 활용해 보자.
아래 화면은 Python을 실행하면 나타나는 창, 인터프리터(Interpreter)이다.
- 첫 줄에서는 현재 사용중인 파이썬의 버전 등의 정보를 알려주고 있고, 다음 줄에는 다른 정보를 위한 명령을 나타내고 있다.
- >>> 로 키보드 입력을 받으려 대기하고 있는 곳을 나타내고 있다. 이를 프롬프트(Prompt)라고 한다.
- 프롬프트에 명령을 입력한다. 이때 print()는 파이썬의 내장 함수(Built-in Function)로, 괄호 속 값을 출력해주는 역할을 한다.
- 프롬프트에 입력된 명령을 수행하여 출력해주고 있다. print() 함수를 통해 Hello Python!!이라는 문자열(String)이 나타내진다.
※ 이때 print() 속의 문자열에는 반드시 작은따옴표나 큰 따옴표를 붙여주자. 문자열은 따옴표가 없으면 컴퓨터가 받아들이지 못한다. 작은따옴표의 끝에는 작은따옴표, 큰 따옴표의 끝에는 큰 따옴표.
파이썬 개발 도구란?
위에서 사용한 인터프리터로 코딩을 하다보면 몇 가지 문제가 생긴다. 한 번 입력하고 엔터를 눌러버리면 끝이기 때문에 수정이 어렵고, 한 번 수행한 일을 다음에 다시 시키기가 어렵다. 이를 피하려면 명령어들을 모아서 소스 코드를 만들어 하나의 파일로 저장해 두어야 한다. 우리는 이 작업을 파이썬의 통합 개발 도구인 IDLE(Integrated Development and Learning Environment)에서 진행할 것이다.
소스 코드를 저장하려면 IDLE 프로그램의 File-New File 메뉴로 새 파일을 만들어 편집하거나, Ctrl+n 버튼으로 새 파일을 만들어 편집해야 한다. 위 이미지는 새 파일에 명령을 입력하고 '1-9'라는 이름으로 저장 후 실행하여 인터프리터 창에 결과가 나타난 화면이다.
잠시 붉은색으로 표시된 # 이하의 문장을 살펴보자.
이 문장은 주석(Comment)으로, 쉽게 말하자면 컴퓨터가 아닌 프로그램을 읽는 사람을 위한 설명글이다.
#이렇게 주석을 달 수도 있고
'''이렇게 주석을 달 수도 있고'''
"""
또는 이렇게
할 수도 있다.
"""
|
cs |
파이썬에서는 보통 #으로 시작하는 문장을 주석으로 취급하여 실제로 프로그램을 실행하면 주석을 무시하고 나머지 코드를 읽어 실행한다. 또는 작은따옴표나 큰 따옴표를 3개 사용해서 주석으로 달 수도 있다.
문자열과 숫자?
이제는 print() 함수를 써 보자.
>>> 'Hello' #문자열 'Hello'
'Hello'
>>> "Hello" #작은 따옴표, 큰 따옴표 상관 없이 똑같은 문자열.
'Hello'
>>> print('Hello') #print()로 문자열을 출력하면 따옴표가 안 나온다.
Hello
>>> print("배가 " + "고픈데 뭐 먹지") #텍스트끼리 연결해서 출력할 수도 있다.
배가 고픈데 뭐 먹지
>>> print('재밌다!' * 5) #*연산자는 문자열을 n번 반복해서 출력해준다.
재밌다! 재밌다! 재밌다! 재밌다! 재밌다!
|
cs |
>>> 2 + 8
10
>>> print(2 + 8)
10
>>> print(3 - 7)
-4
>>> print(3 * 7)
21
>>> print(21 / 3)
7
|
cs |
이렇게 간단한 계산은 물론,
>>> print(1048 * 23542 - 100000)
24572016
|
cs |
계산기로 계산해야 하는 복잡한 계산이나,
>>> print(21352350128350 * 12304982305)
262740290499511228846750
|
cs |
계산기도 하기 힘든 큰 수끼리의 계산도 해낼 수 있다.
이때 우리는 문자열로 나타내진 숫자와 말 그대로 숫자로 사용되는 수를 구분하여 사용해야 한다.
>>> print(120 + 523) #숫자 120과 523의 합을 구하여 출력한다.
643
>>> print('120' + '523') #문자열 120과 523을 이어서 출력한다.
120523
|
cs |
보이는 것처럼 문자열로 나타내진 숫자와 숫자로 사용되는 수에 똑같은 연산자를 적용했을 때의 결과가 다르다.
잠시 연습해 보고 넘어가자. 아래는 교재 p.39 심화문제 1.3을 약간 수정하여 옮겨놓은 것이다. 해답은 접은글에 적어두었다.
print(100)
print(100 + 200)
print('100 + 200')
print(100, 200)
print('100', '200')
print('100''200')
print('Hello Python!')
print('Hello', 'Python', '!')
print('Hello' + 'Python' + '!')
print('Hello''Python''!')
print('**********')
print('*' * 10)
|
cs |
>>> print(100)
100
>>> print(100 + 200)
300
>>> print('100 + 200')
100 + 200
>>> print(100, 200)
100 200
>>> print('100', '200')
100 200
>>> print('100''200')
100200
>>> print('Hello Python!')
Hello Python!
>>> print('Hello', 'Python', '!')
Hello Python !
>>> print('Hello' + 'Python' + '!')
HelloPython!
>>> print('Hello''Python''!')
HelloPython!
>>> print('**********')
**********
>>> print('*' * 10)
**********
|
cs |
이것 덕분에 파이썬이 편리해졌지!
함수나 변수, 클래스 등을 스크립트 파일로 만든 것을 모듈(Module)이라 하고, 파이썬을 설치하면 기본적으로 제공되는 모듈을 표준 라이브러리(Standard Library)라 한다. 파이썬으로 여러 문제를 해결하려면 이 표준 라이브러리뿐만 아니라 이미 만들어진 프로그램 코드를 활용해야 한다. 많은 라이브러리 중에서 파이썬 커뮤니티에서 공식적으로 인증한 라이브러리나 검증된 라이브러리를 패키지(Package)라고 부른다.
그럼 우선 우리가 앞으로 사용할 패키지를 불러와 보자. 아래의 두 과정을 거치면 된다.
- 파이썬 시스템에 pip라는 프로그램을 이용하여 패키지를 설치한다.
- 설치된 패키지를 활용을 위해 불러온다.
이때 pip는 파이썬의 패키지 관리 소프트웨어로, 파이썬 표준 라이브러리에 포함되지 않은 외부 라이브러리를 설치할 수 있도록 돕는 도구이다. pip를 쓸 때는 명령 프롬프트를 실행시켜 아래와 같은 명령을 입력해야 한다.
pip install (패키지 이름)
성공적으로 설치가 되었다면 위처럼 'Successfully installed (패키지 이름)'이라는 문구가 뜬다. 아래 노란 문구는 pip를 업데이트 시키라는 알림 문구이니 무시해도 좋다. (그래도 업데이트는 제때 해 주자.)
우리가 앞으로 써야 할 모듈은 numpy, pandas, matplotlib, scikit-learn, opencv-python, seaborn으로 총 6가지이다. 한 번에 설치할 때는 쉼표를 쓰지 않고 pip install numpy pandas matplotlib scikit-learn opencv-python seaborn을 입력해주면 된다.
설치된 패키지를 불러오려면 아래처럼 import와 함께 모듈 이름을 써 주면 된다.
import module-name
module-name.func()
|
cs |
위를 참고하여 가상의 모듈 'module-name'을 불러와서 모듈에 있는 'func'라는 기능을 사용할 수 있다.
모듈을 써 보자!
기껏 모듈에 대해서도 알아봤겠다, 이제 파이썬에서 지원해주는 모듈을 하나 써 보자.
터틀 그래픽(Turtle Graphic)은 2차원 화면에 놓인 로봇 거북이에게 명령을 내려 그림을 그리는 기능이다. 캔버스를 불러오려면 아래의 절차를 따른다.
import turtle #turtle 모듈을 불러온다.
t = turtle.Turtle() #turtle 모듈에 있는 Turtle 클래스 객체를 t로 설정.
t.shape('turtle') #Turtle 클래스 객체인 t의 모양을 거북이로 바꾼다.
|
cs |
거북이를 움직이는 명령어에는 forward(), backward(), left(), right() 등이 있다. 이때 forward()와 backward()의 괄호에는 앞 또는 뒤로 몇 픽셀 움직일지가 들어가고, left(), right()의 괄호에는 왼쪽 또는 오른쪽으로 몇 도 회전할지가 들어간다.
이를 활용해서 한 변이 100 픽셀인 정사각형, 정삼각형, 직각 이등변 삼각형, 마름모꼴+짧은 대각선을 그려보자. 해답 코드는 접은글에 적어두었다.
![]() |
![]() |
![]() |
![]() |
import turtle #turtle 모듈을 불러온다.
t = turtle.Turtle() #turtle 모듈에 있는 Turtle 클래스 객체를 t로 설정.
t.shape('turtle') #Turtle 클래스 객체인 t의 모양을 거북이로 바꾼다.
#정사각형
>>> t.forward(100)
>>> t.left(90)
>>> t.forward(100)
>>> t.left(90)
>>> t.forward(100)
>>> t.left(90)
>>> t.forward(100)
#정삼각형
>>> t.left(90)
>>> t.forward(100)
>>> t.left(120)
>>> t.forward(100)
>>> t.left(120)
>>> t.forward(100)
#직각 이등변 삼각형
>>> t.forward(100)
>>> t.left(135)
>>> t.forward(144)
>>> t.left(135)
>>> t.forward(100)
>>> t.left(90)
#마름모꼴
>>> t.forward(100)
>>> t.left(120)
>>> t.forward(100)
>>> t.left(120)
>>> t.forward(100)
>>> t.right(120)
>>> t.forward(100)
>>> t.right(120)
>>> t.forward(100)
|
cs |
빨간 줄글, 혹시 이게 오류?
혹시 여기까지 오면서 주어진 문제를 해결하다 빨간 줄글을 본 적이 있나? 분명 따옴표나 괄호 하나를 빼먹거나, 이미 정해진 이름을 잘못 입력해서 한 번쯤은 만난 적이 있을 것이다. 앞서 설명했듯, 컴퓨터는 정해진 문법만 이해하기 때문에 인간처럼 사소한 오타를 알아서 이해하지 못한다. 예를 들어 다음과 같이 입력해보자.
무언가를 출력하고 싶을 때에 쓰는 함수는 print()이다. PRINT()가 아니다. 이처럼 문법에 맞지 않는 문장을 입력하고 실행하면 오류(Error)를 출력한다. 파이썬은 대소문자를 구분하기 때문에 print가 아닌 PRINT가 오면 어떻게 처리해야 하는지 모른다.
이때는 놀라지 말고 침착하게 오류가 난 부분을 찾아 수정해주자. 위의 코드에서는 line 1, PRINT('Hello World')와 같이 어느 부분에서 오류가 났는지 나타내주고 있고, 맨 아래줄에는 NameError: name 'PRINT' is not defined라고 어떤 오류가 났는지 알려주고 있으니 그에 맞추어 코드를 수정해주면 된다.
아래는 흔히 볼 수 있는 오류 메세지들이다.
- SyntaxError: invalid syntax : 파이썬의 기본 문법을 지키지 않은 표현이 있음.
- IndentationError: expected an indented block : 들여쓰기를 해야 할 곳에 들여쓰기가 되지 않음.
- IndentationError: unexpected indent : 들여쓰기를 하면 안 되는 곳에 들여쓰기가 되어 있음.
- NameError: name x is not defined : 무언가의 변수가 정의되지 않았음.
- TypeError: unsupported operand type(s) for ... : 데이터의 종류가 다른 것들끼리 무언가가 일어났음.
마무리
지금까지 데이터 과학의 기초와 파이썬의 기본적인 기능에 대해 알아보았다.
마지막으로 1장의 심화 문제 1.5, 1.9, 1.10을 풀어보고 마치도록 하자. 해답 코드는 접은글에 적어두었다. 하지만 코딩에는 정답이 없기 때문에 접은글 속의 해답처럼 풀지 않았다고 틀린 것은 아니다. 그러니 해답 코드는 참고만 하도록 하자.
1.5 : 'I love Python!!'을 5줄에 걸쳐 모두 5번 출력하는 코드를 만들어 보자. 이 코드를 포함한 파일을 welcome5.py라고 정하고 이 코드를 파이썬 인터프리터에서 수행시켜 보시오.

#심화 1.5
print('I love Python!!')
print('I love Python!!')
print('I love Python!!')
print('I love Python!!')
print('I love Python!!')
|
cs |
1.9 : 파이썬 대화창을 이용하여 다음과 같은 수식 계산을 해 보도록 하자.
#심화 1.9
>>> #1에서 10까지 정수의 합
>>> 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
55
>>> #반지름의 길이가 5인 원의 둘레(이때 원주율 파이는 3.14로 두고 계산할 것)
>>> 2 * 5 * 3.14
31.400000000000002
>>> #한 변의 길이가 20인 정사각형의 둘레
>>> 4 * 20
80
>>> #한 변의 길이가 20인 정사각형의 면적
>>> 20 * 20
400
>>> #높이가 10이고 밑변이 30인 직사각형의 둘레
>>> 2 * (10 + 30)
80
>>> #높이가 10이고 밑변이 30인 직사각형의 면적
>>> 10 * 30
300
|
cs |
1.10 : 파이썬 대화창을 이용하여 4!, 5!, 6!을 구하여 출력해 보자.
'따라하며 배우는 파이썬과 데이터 과학 > PART 1. 파이썬 기초체력 다지기' 카테고리의 다른 글
Chapter 06. 함수로 일처리를 짜임새있게 하자 (0) | 2021.06.11 |
---|---|
Chapter 05. 여러 번 반복하는 일을 하자 (0) | 2021.05.30 |
Chapter 04. 조건을 따져 실행해보자 (2) | 2021.05.29 |
Chapter 03. 연산자로 계산을 해 보자 (2) | 2021.05.27 |
Chapter 02. 값을 담아 다루어 보자 (0) | 2021.05.25 |