| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- chartjs-chart-financial
- 개발일지
- django db with ssh tunnel
- vue
- 파이썬
- GPT
- 파이팅
- 파이참
- postgres
- vpc
- 파이선
- 오픈빌더
- Django
- AWS
- SSH Tunnel
- psycopg
- pycharm
- database
- 장고
- 챗봇
- 따라하며 배우는 파이썬과 데이터 과학
- subnet
- Python
- Chatbot
- ec2
- 이터널리턴
- 아나콘다
- settings.py
- RDS
- Today
- Total
우아한 개발계발 블로그
따라하며 배우는 파이썬과 데이터 과학 (1) - 파이썬 기초체력 다지기 본문
2021.05.10 - [Study/따라하며 배우는 파이썬과 데이터 과학] - 따라하며 배우는 파이썬과 데이터 과학 (0) - 개발 준비
따라하며 배우는 파이썬과 데이터 과학 (0) - 개발 준비
따라하며 배우는 파이썬과 데이터 과학 최근 가장 빠르게 인기를 얻고 있는 프로그래밍 언어는 바로 파이썬이다. 파이썬은 간결한 코드로도 엄청나게 많은 일을 할 수 있으며, 이것이 지금의
w00-ah.tistory.com
를 보고 왔다면 어느정도 파이썬 개발을 위한 준비를 마쳤다고 볼 수 있다.
이번 장에서는 데이터 과학과 파이썬의 문법을 조금 다뤄 볼 것이다.
Chapter 01 데이터 과학과 파이썬의 세계로
컴퓨터와 파이썬 프로그래밍에 대해 이해해보자 이 장은 이론적인 부분으로 재미가 없을 수 있지만 흥미가 있다면 읽어보자.
1.1 '데이터 과학' 의 세계로 출발
데이터 과학(Data Science)는 데이터에서 과학적 방법으로 정보나 지식을 추출하는 학문이다. 이를 위해 통계학, 컴퓨터 과학(CS), 그리고 데이터가 발생하는 영역과 관련된 학문 분야의 이론과 기술을 융합적으로 사용하여야 한다. 따라서 데이터 과학은 대표적인 학제(Inter-disciplinary) 연구 박사는 분야라고 할 수 있다.
과학의 네 번째 패러다임 : 데이터 과학
1998년도 튜링 상 수상자인 짐 그레이(Jim Gray)가 과학의 네번째 패러다임으로 데이터 중심의 과학(Data-intensive science)을 고안하였다. 컴퓨터 과학이 축적한 기술을 바탕으로 여러분야의 어려운 문제를 해결하는 새로운 변화를 데이터 과학이 만들어 낼 수 있다는 것이 그의 생각이었다.
데이터 과학에서 데이터를 수집, 분석하면 비효율적인 것들을 최적화할 수 도 있는데, 예를 들어 서울시는 2010년대에 심야 버스 노선을 새로 조정하기 위해 택시 승하차 정보와 이동 통신사의 통화향 데이터를 사용하여 심야 시간에 시민들이 어떻게 이동하는지 파악할 수 있었는데, 이 분석한 데이터를 바탕으로 심야 버스 노선을 조정하여 최적화하였다.
이외에도 책에서는 아래와 같은 예시들을 보여주고 있다.
- 전주시 - 교통카드 DB를 활용한 대중교통 현황 빅데이터 분석
- 부산광역시 - 역세권 토지이용 구상을 위한 빅데이터 활용
- 소방청 - 빅데이터를 활용한 화재대응 취약지역 분석
그럼 이런 데이터 처리 과정을 전문적으로 다루는 어떤 전문가이 있는지 알아보자.

데이터 수집과 정제에 전문적 여량을 가진 사람들을 통칭하여 '데이터 엔지니어'라 칭 할 수 있고, 전통적으로 데이터의 정제 작업부터 분서갂지의 작업에 종사하는 이들을 '데이터 분석가' 라고 한다. 또한 기계 학습을 위한 학습 모델을 구축하고 기계를 훈련시킨 뒤에 학습된 모델을 배포하는 일을 전무적으로 하는 사람들을 '기계학습 엔지니어'라고 한다.
데이터 과학은 컴퓨터를 이용한 계산 과하그이 진보를 바탕으로 데이터의 수집과 분석, 그리고 활용과 관련된 모든 이론가 기술을 종합적으로 다루는 분야로 데이터 과학자는 데이터 엔지니어, 데이터 분석가, 기계학습 엔지니어의 역량을 모두 갖출 수 있어야한다. 그러므로 데이터 과학의 모든 단계에서는 원하는 문제에 맞춰 필요한 솔루션을 구현할 수 있는 소프트웨어 프로그래밍 실력은 필수적인 역량이라고 할 수 있다.
1.2 프로그래밍
프로그램(Program)이란 명령 코드의 집합체로 컴퓨터가 해야할 일을 미리 기록해 놓은 작업 지시서 같은 것이다. 우리가 일상에서 사용하는 MS-Office 제품군들 카카오톡 등 모두 프로그램이다. (자세하게는 시스템프로그램 / 응용프로그램으나뉘어 OS (Operationg system)도 프로그램으로 볼 수 있다.) 프로그램이 명령코드의 집합체 이므로 프로그램 안에는 명령어 들이 존재하고, 이 명령어들을 작성하는 일을 '프로그래밍 (Programming)'이라한다. 그리고 이 작업을 수행하는 사람을 '프로그래머 (Programmer)' 라 한다.
프로그램을 만들기 위해선 프로그래밍을 해야하는데, 컴퓨터는 인간이 아니기에 자연어를 이해할 수도 읽을 수도 없다. 컴퓨터는 오로지 0 과 1의 이진(Binary)값 만을 이해한다. 그렇기에 사전에 컴퓨터와 같은 기계가 이해할 수 있는 명령어들을 기계어(Machine Coode)라 정의해두었고 과거 프로그래머들은 이를 이용해 프로그래밍하였다.
0과 1이라고 표현하긴했지만 사실 0과 1은 개념일 뿐, 숫자나 데이터가 아니다. On과 Off, 참과 거짓, 전압이 크거나 낮음 등 상태를 구분짓는 개념으로 받아들여야한다. 어떤 프로그래밍 언어는 0이 True 값을 지니기도하기 때문이다.
시대가 흐르고 기계어로만 프로그래밍하는 방식에 지친 프로그래머들은 기계어 명령어를 사람이 이해할 수 있는 언어들로 바꿔 프로그래밍 언어(Programming Language)를 만들었다. 프로그래머가 이 프로그래밍 언어로 프로그래밍을 하면 이렇게 프로그래밍 언어로 짜여진 명령어 집합들을 소스 코드 (Source code)라 부른다. 실제 개발을 할때는 이 소스 코드를 다시 기계어로 바꾸는 컴파일이라는 과정을 거치게 되고 기계가 그것을 읽어 실행하게 된다.
이처럼 프로그래밍 언어란 컴퓨터와 소통할 수 있는 유일한 약속이자 언어이다. 그러므로 우리는 이 엄격하게 약속된 규칙을 지켜야만 한다.
프로그래밍 언어에는 다양한 종류가 있다. (C, Java, Python, R, Ruby, JS, GO 등) 각각의 프로그래밍 언어들은 그에 따른 고유한 문법 체계가 있으므로 프로그래밍할 떄에 문법을 헷갈리지 않도록 주의해야한다.
우리가 사용할 파이썬은 1991년 귀도 반 로섬이 개발한 대화형 프로그래밍 언어로 현재 아주 인기 있는 범용 프로그래밍 언어가 되었다. 파이썬은 오픈 소스 소프트웨어로 무료이고, 다양한 패키지들이 계속 추가되고 있어 그 생산성은 나날히 발전중이다. 우리가 어떠한 데이터를 차트로 만들고 싶다면 matploblib 이라는 라이브러리를 가져다 사용하면 된다. '라이브러리' 와 '모듈' 에 대해 헷갈릴 수 있는데, 이는 [이 블로그(누르면 이동)] 를 참고하자
그리고 파이썬은 초보자가 입문하기에 아주 좋은 어어이다. 이유는 파이썬이 인터프리터 언어(Interpreted Language)이기 때문인데 인터프리터란 프로그래밍 언어의 소스 코드를 바로 실행하는 컴퓨터 프로그램 또는 환경을 말한다.
이는 C 언어나 Java와 같은원시 코드를 기계어로 번역하는 컴파일러 대비된다. 사용자가 입력하는 명령어가 즉각적으로 실행되고 결과를 바로 볼 수 있기 때문에 입문자가 컴파일과 같은 부담을 지니지 않아도 된다는 장점이 있다.
1.3 Hello World!

IDLE은 Integrated DeveLopment Environment의 약어로 파이썬의 통합 개발 및 학습 환경이다.
이 프로그램을 열면 아래와 같은 창을 볼 수 있을 것이다.

여기에 Hello World! 를 입력해보자.

문법이 틀렸다고 오류가난다. 위에서 프로그래밍 언어마다 문법이 있다는 것을 기억하는가?
아래 코드를 입력해보자
print('Hello World!')

비소로 Hello World! 가 출력됐다. 우리는 드디어 Python이라는 프로그래밍 언어를 통해 컴퓨터와 소통한 것이다.
컴퓨터에게 문자열('Hello World!' 가 문자열이다. 나중에 알아볼거니 일단 알고만있자)을 출력하라고 시키는데는 print라는 명령어를 사용해야 하지만 IDLE에서 간단한 수식 정도는 알아서 이해하고 계산결과를 출력해준다.

- + 더하기
- - 빼기
- * 곱하기
- / 나누기(몫)
- % 나눈 나머지
- ** 제곱
위 기호들의 의미는 외워두는 것이 좋을 것이다. 외우기 어렵지도 않다.
이제 파이썬 파일을 만들어 볼것인데, IDLE 에서 File 의 New File을 눌러보자


우리가 10000줄 정도되는 파이썬 코드를 작성해 두었는데 그것을 실행하려고 IDLE에 한줄씩 적어내려가는 모습을 생각해보자. 정말 끔찍하지 않은가?
저 새로운 창이 어떤 창이나면 파이썬 코드를 적어두고 저장할 수 있는 문서라고 생각하면 된다.
아래와 같이 코드를 적고 Run Module을 누르면 파일을 저장하겠냐는 박스가 나오는데 원하는 위치에 저장을 해두면


아까 인터프리에서는 '2' 라고 출력이되었지만

아무것도 출력되지 않는다.
이 IDLE의 '대화형 모드'에서는 1+1 을 하면 2를 바로 출력해주지만, 이를 문서화하여 IDLE에서 실행하면 계산만 하고 출력은 해주지 않기 때문에 꼭 아래와 같은 명령어로 입력해주어야한다. 그리고 Run Module을 다시 눌러보자.
print(1+1)

드디어 우리가 생각한대로 출력된다. 컴퓨터는 생각만큼 똑똑하지 못하다. 무엇하나 놓치면 그대로 컴퓨터는 에러를 뿜어댄다. 그러니 우리는 이 예민보스를 잘 다루기 위해선 문법과 약속을 지켜줘야 한다는 것이다.
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('*' * 20)
이 코드를 복사 붙여넣기하여 실행해보자


위의 출력결과를 통해 우리는 아래의 내용을 알 수 있다.
- print 괄호 안의 최종적인 연산 결과만이 출력된다.
- '100'은 문자열로 취급된다
- 문자열끼리의 연산은 문자열이 순서대로 이어진다.
- 문자열의 합연산에서는 '+'기호를 생략해도된다.
- 문자열을 합칠때 ',' 쉼표는 공백(Space)를 하나 만들고 합쳐진다.
- 문자열과 정수의 곱연산은 해당되는 문자열이 정수만큼 반복되어 합연산된다.
1.4 Turtle Grapic
아래 코드를 복사 붙여넣기 해보자
import turtle
turtle1 = turtle.Turtle()
turtle1.shape("turtle")
turtle1.forward(100)
turtle1.left(120)
turtle1.forward(100)
turtle1.left(120)
turtle1.forward(100)
turtle1.right(120)
turtle1.forward(100)
turtle1.right(120)
turtle1.forward(100)
turtle.done()

거북이가 그림을 그려주는 코드이다.
코드를 분석해보자
첫줄의 import turtle 은 'turtle'이라는 이름을 갖는 모듈을 가져와서 사용할 것이다라고 선언하는 것이다.
그아래
turtle1 = turtle.Turtle()
turtle1.shape("turtle")
의 코드에서 우리는 '.' (점)에 대해 생각해 볼 수 있는데, 이는 "~의"라는 의미로 생각해두면 나중에 편하다.
첫줄의 turtle.Turtle() turtle의 Turtle() 이라는 것(앞으로 객체라고 할것이다.)을 turtle1에 저장하겠다는 의미이다.
여기서 '=' 를 등호라고 수학적인 의미인 같음을 나타내는 기호라고 생각하면 안된다. 대개의 프로그래밍 언어에ㅓ는 등호 기호는 뒤의 내용을 앞에 변수에 저장한다 라는 의미인데 변수의 내용은 곧바로 다음장에서 다룰테니 일단 넘어가자
그리고 turtle1.shape("turtle")은 turtle1의 모양을 "turtle", 즉 거북이로 설정하겠다 라는 의미이다.
IDLE에 한줄씩 실행해보면 어떠한 과정이 이루어지는지 확인할 수 있다.
turtle1.forward(100)
turtle1.left(120)
turtle1.right(120)
이 세 명령어는 말그대로 forward(100픽셀만큼)는 전진한다. left(120도), right(120도만큼)는 회전한다는 의미이다.
더욱 자세한 내용은 교수님 강의를 참고해보자 {링크}
다음 파트에서는 이제 변수에 대해 다루어 볼 것이다.
'Study > 따라하며 배우는 파이썬과 데이터 과학' 카테고리의 다른 글
| 따라하며 배우는 파이썬과 데이터 과학 (5) - 여러 번 반복하는 일을 하자 (0) | 2021.05.31 |
|---|---|
| 따라하며 배우는 파이썬과 데이터 과학 (4) - IF! 조건을 따져 실행해 보자 (0) | 2021.05.30 |
| 따라하며 배우는 파이썬과 데이터 과학 (3) - 연산자로 연산을 해 보자 (0) | 2021.05.28 |
| 따라하며 배우는 파이썬과 데이터 과학 (2) - 값을 담아 다루어 보자 (1) | 2021.05.28 |
| 따라하며 배우는 파이썬과 데이터 과학 (0) - 개발 준비 (0) | 2021.05.10 |