http://onoffmix.com/event/44315
데이터 분석을 위한 Python
2014/04/16 정광윤
metaacademy.kr
차례
1. Programming
2. About Python
3. Python을 이용한 데이터 분석
차례
1. Programming
2. About Python
3. Python을 이용한 데이터 분석
code.org
Barack Obama
https://www.imaso.co.kr/news/article_view.php?article_idx=20141103112843
빠르면 2015년부터 소프트웨
어 교육 시작...
이창윤 미래부 인재정책과장
.. “코딩이 아니라 컴퓨팅적
사고 교육이 목표”
Everybody in this country should learn how
to program a computer because it teaches
you how to think.
Steve Jobs
프로그래밍:
수학 능력만 생각하기 쉽지만,
언어적 사고가 우선 된다.
‘scratch’ educational programming language for children by MIT
프로그래밍:
어떤 작업을 수행하기 위해
컴퓨터에게 지시하는 방법
프로그래밍:
소프트웨어는 인간을 위한
것, 컴퓨터를 이용해 사람을
돕는 기술
Vanessa by CEO of ‘Girl Develop IT’
프로그래밍:
여러분들이 의사가 되던 연
예인이 되던 먼저 프로그래
밍을 배워야 합니다.
code.org
왜냐면
Everybody in this country should learn how
to program a computer because it teaches
you how to think.
Steve Jobs
차례
1. Programming
2. Python
3. Python을 이용한 다양한 활용 영역
4. Python을 이용한 데이터 분석
Why Python?
Why Python?
1. 인간지향적인 간단한 문법
2. 가장 대중화된 언어
3. 다양한 라이브러리, 넓은 활용 범위
Reference: http://www.slideshare.net/blissray/w-37771905
Java vs. Python
for(int x = 0; x < 11; x++) {
System.out.print("x : " + x );
System.out.print("n");
}
for x in range(10):
print “x : “, x
Why Python?
1. 인간지향적인 간단한 문법
2. 가장 대중화된 언어
3. 다양한 라이브러리, 넓은 활용 범위
Python: Increase 0.9%
Javascript: Increase 1.3%
Why Python?
1. 인간지향적인 간단한 문법
2. 가장 대중화된 언어
3. 다양한 라이브러리, 넓은 활용 범위
다양한 라이브러리, 넓은 활용 범위
https://pypi.python.org/pypi?%3Aaction=browse
다양한 라이브러리, 넓은 활용 범위
https://pypi.python.org/pypi?%3Aaction=browse
1. 웹 사이트
2. 데이터 분석
3. 머신 러닝
4. 게임
5. 웹 해킹
다양한 라이브러리, 넓은 활용 범위
다양한 라이브러리, 넓은 활용 범위
http://www.scari.net
다양한 라이브러리, 넓은 활용 범위
Python으로 만들어진 웹 서비스
무슨 언어를 써야 할지 모르겠으
면 Python을 쓰면 된다.
https://mirror.enha.kr/wiki/Python#s-6
다양한 라이브러리, 넓은 활용 범위
차례
1. Programming
2. About Python
3. Python을 이용한 데이터 분석
거두절미하고
맛부터 봅시다.
Python 맛보기
Python 맛보기
Python 맛보기
def welcome(name):
for k in range(10):
if k%2 == 0:
print "%d: Hello, %s. "%(k+1, name)
else:
print "{seq}: 환영합니다! {name}"
.format(seq=k+1, name=name)
Python 맛보기
advanced
1. 값을 입력하지 않았다면 다시 입력받기
Python 맛보기
advanced
1. 값을 입력하지 않았다면 다시 입력받기
a. 만약 입력받은 값이 빈값이면 다시 입력받아라.
b. 입력받은 값의 길이가 1보다 작으면 (즉, 없다면) 계
속 입력받아라.
Python 맛보기
advanced
1. 값을 입력하지 않았다면 다시 입력받기
a. 만약 입력받은 값이 빈값이면 다시 입력받아라.
b. 입력받은 값의 길이가 1보다 작으면 (즉, 없다면) 계
속 입력받아라.
Python 맛보기 source
welcome.py
https://gist.github.com/initialkommit/590e16dd89937e20b539
이제는 자세히 봅시다.
Python Basic
1. Object-Oriented Programming
2. 기초 문법 (변수, 연산)
3. 기초 문법 (제어문, 반복문)
4. Data Type
Python Basic
1. Object-Oriented Programming
2. 기초 문법 (변수, 연산)
3. 기초 문법 (제어문, 반복문)
4. Data Type
객체(Object) or 인스턴스(Instance)
클래스(Class)
프로그래머
http://m.ohmynews.com/NWS_Web/Mobile/at_pg.aspx?CNTN_CD=A0000381710, 비하 목적 없음
객체 속성
● 이름: 황금잉어빵
● 재료: 팥
● 크기: 중간
● 가격: 300원
객체 함수
● 말하기
● 숨쉬기
Hello?
여러개 객체 생성
Hello?
Hello?Hello?
Hello?
Hello?
Hello?
Hello?
Hello?
Hell
o?
객체 속성 변경
● 크기 속성을 '중간'에서 '
작음' 으로 변경해서 객체
를 만듬
객체 속성 변경
● 입모양 속성을 '닫음'에서
'열림'으로 변경해서 객체
생성
객체 속성 변경
● 내용물 속성을 '팥'에서
'고구마', '커스타드' 등
으로 바꿔서 객체 생성
파이썬은 객체 지향 프로그래밍이다.
1. 파이썬의 모든 것는 객체(object)다.
2. 그 객체에는
a. 속성이 있다. (상태값)
b. 함수가 있다. (행동)
3. 숫자도 객체다.
4. 문자도 객체다.
5. 따라서 숫자와 문자에도 속성과 함수가 있다.
Python Basic
1. Object-Oriented Programming
2. 기초 문법 (변수, 연산)
3. 기초 문법 (제어문, 반복문)
4. Data Type
기초 문법을
배우기 전에
Python부터
실행해봅시다.
실행 방법
1. 윈도우 사용자
a. 시작 > Python27 > IDLE
b. 혹은 시작 > 실행 > cmd > python
2. 맥/리눅스 사용자
a. Terminal > pythonon
Command Line Interface(CLI)
● 앞으로는 화려한
GUI(Graphic User
Interface) 보다는 MS-DOS
와 같은 Command 입력 방
식에 익숙해질 필요가 있습
니다.
o 빠르기 때문에
o 간편하기 때문에
o 편하기 때문에
다시 돌아가서,
앞으로 나오는 것은
실습하면서
공부하겠습니다.
변수 (Variable)
● x = 1 + 2
o 수학
 x는 1 + 2의 값인 3이다.
o 프로그래밍
 1 + 2의 값인 3을 x라는 변수에 할당한다.
 x라는 변수에는 숫자 형태의 데이터 3 이라는 값을 가리키고
있는 주소를 가지고 있다.
● 변수
o 특정 데이터를 담는 그릇
o 특정 데이터는 특정 장소에 저장되고, 변수는 그 장소의 주소값
을 가지고 있다.
연산
● 산술 연산
o 연산자(Operator)
 +
 -
 *
 /
● 비교 연산
o <
o <=
o >
o >=
o ==
o !=
● 논리 연산
o or
o and
o not
Python Basic
1. Object-Oriented Programming
2. 기초 문법 (변수, 연산)
3. 기초 문법 (제어문, 반복문)
4. Data Type
if 조건문
if condition1:
condition1이 참(true)일 때
elif condition2:
condition1이 거짓(false)이고, condition2가 참일 때
elif conditionN:
….
else:
앞의 조건이 모두 거짓일 때
for 반복문
for item in items:
실행문1
실행문2
● items 중에서(in)에서 하나의 item에 대해 아래 실행문 실행하는데 실행문이
끝나면 다음 item에 대해 실행한다.
● 즉, items 의 값을 하나씩 꺼내 item 에 assign 하며 모든 item 에 대해 반복
● continue
o 이번 수행을 하지 않고 다음으로 이동한다.
● break
o loop를 빠져나간다.
while 반복문
while condition:
실행문1
실행문2
.
● condition이 참인 동안(while) 아래 실행문을 계속 실행한다.
● 즉, 참이 아닌 경우에는 아래 실행문을 실행하지 않고 빠져 나온다.
ex) while len(name) < 1:
name = raw_input(“Please enter your name: ”)
다른 언어에는 없는 것
while condition:
실행문
1
실행문
2
.
for item in items:
실행문2
실행문2
.
if condition1:
실행문1
elif condition2:
실행문2
else:
실행문3
1. 처음과 끝(블락/block)이 없다.
a. { (블락의 첫 중괄호) -> : (콜론)을 사용
b. 블락 -> 처음과 끝의 표시를 들여쓰기(Indentation)으로 표현
i. Indentation이 틀리면 Error
ii. 보통은 스페이스바 4칸
Python Basic
1. Object-Oriented Programming
2. 기초 문법 (변수, 연산)
3. 기초 문법 (제어문, 반복문)
4. Data Type
Data Type
● Python는 변수를 선언할 때 Data Type을 따로 표시하
지 않는다.
● Javascript
○ var a=1;
○ var b=2;
○ var z=a+b;
● python
○ a=1
○ b=2
○ z=a+b
Data Type
순서열 - str
1. 양의 정수로 색인되는 순서있는 객체들의 모음
2. 모든 순서열에 적용되는 공통 연산이나 함수 존재
Name Example Note
upper / lower “hi”.upper() / “HI”.lower()
count “apple”.count(“p”)
find / rfind / index “Well done”.find(“d”) / “Well done”.index(“d”) 어떤 차이가 있을까요?
join "-".join(“1234”)
strip / lstrip / rstrip “ eh? “.strip()
replace “pithon”.replace(“i”, “y”)
split / rsplit “Life is beautiful”.split()
list & tuple
list tuple
people = [”Justin”, u“수지”, u“허지웅”] people = (”Justin”, u“수지”, u“허지웅”)
수정/추가/삭제 가능 수정/추가/삭제 불가능
list 안의 list 가능 (nested-list) tuple 안의 tuple 가능 (nested-tuple)
index & slice
list & tuple
함수
Name Example Note
append [1, 2, 3].append(4)
sort [‘bravo’, ‘alpha’, ‘charlie’].sort()
reverse [1,2,3].reverse()
index [‘smart’, ‘phone’].index(‘smart’) index 값 알아내내기
insert [1,2,3].insert(0, 100)
remove [1,2,3].remove(3)
pop [1,2,3].pop(1) index에 대한 값 출력 후 제거
사전형
d = {‘name’:’kevin’, ‘final’:84, ‘report’:90}
Name Example Note
keys d.keys() [‘name’, ‘final’, ‘report’]
values d.values() [‘kevin’, 84, 90]
items d.items() [(‘name’, ‘kevin’), (‘final’, 84), (‘report’, 90)]
clear d.clear() 모든 항목을 제거
get d.get(‘name’) ‘kevin’
in ‘name’ in d key가 있는 존재하는지 검사 (반환: T/F)
update d.update({‘mid’:99}) update or insert
Index -> str, list, tuple
1. 문자 선택하기
2. 문자들에 0부터 시작하는 번호를 부여
3. 순서열을 가진 변수에 []로 문자 선택이 가능
4. 실습
a. a = “apple from the sky”
b. a[0]
c. a[1]
d. a[-1]
Slice -> str, list, tuple
1. 문자 추출하기
2. 부여된 번호로 문자열 일부 또는 전체를 추출
3. 문자값을 가진 변수에에 [시작위치:종료위치]로 문자 선택 가능
4. 시작위치와 종료위치치는 생략가능
a. 생략 시 각각 처음과, 마지막을 의미
5. 실습
a. a = ‘apple from the sky’
b. a[0:5]
c. a[6:]
d. a[:5]
Sign up
회원가입 화면입니다.
Name은 10개를 초과하면 안됩니
다.
Password는 Confirm Password
와 일치해야합니다.
어떻게 검증할까요?
Instagram
#hashtag
title=”On top of the world! Life is so fantastic if
you just let it. I have never been happier.
#nyc #newyork #vacation #traveling”
DB에서 사진과 내용을 가져오는 방법은 아직 모르
니 생각하지 말고, 지금껏 위에서 언급했던 내용을
토대로
위 사진 title 에서 hashtag(#로 시작하는 단어)를
가져와 List 형태로 저장해봅시다.
source
signup_validation.py
https://gist.github.com/initialkommit/204829b158fb3ab96f32
instagram_tag.py
https://gist.github.com/initialkommit/87b8b8cede74a281805d
차례
1. Programming
2. About Python
3. Python을 이용한 데이터 분석
Completely free enterprise-ready Python distribution for
large-scale data processing, predictive analytics, and
scientific computing
270+ of the most popular Python packages for science, math,
engineering, data analysis
이제부터 데이터 분석은
IPython에서 하겠습니다.
(anaconda 설치 시 자동 설치)
IPython
1. 대화형 컴퓨팅을 분석 프로그래밍 최적합
2. 운영체제의 쉘 파일 시스템과 통합되어 있음
3. 웹 기반의 대화형 노트북 지원으로 수식, 표,
그림 등 표현 가능
4. 가볍고 빠른 병렬 컴퓨팅 엔진 이용
5. 코딩의 문서화, 테스트까지 한 화면에 r나으
IPython
모르겠고,
일단 해봅시다.
IPython
command 창에서 ipython notebook을
실행해보겠습니다.
material: http://bit.ly/1JKeERD
Feel free to contact me
정광윤
1. email: initialkommit at gmail.com
2. blog: http://initialkommit.github.io/
3. twitter: @initialkommit

문과생 대상 파이썬을 활용한 데이터 분석 강의

Editor's Notes

  • #6 코딩 혹은 프로그래밍은 세계적인 추세입니다. 왜 그럴까요.
  • #7 미국 대통령도 code.org에서 프로그래밍 교육을 받았다고 합니다. 그렇다면 우리나라는 어떨까요?
  • #8 우리나라도 역시 의무교육화 시키고 있습니다. 그런데 여기서 중요한 것은 코딩 기술이 아니라 '사고(Think process)’라는 것이지요.
  • #9 왜냐면 스티브 잡스가 말했듯이 코딩/프로그래밍이라는 것은 생각하는 방법을 가르쳐주기 때문입니다.
  • #10 그렇기 때문에 프로그래밍이라는 것을 대개는 수학 능력만 생각하기 쉽지만 언어적 사고 혹은 논리적 사고가 우선되어야만 합니다.
  • #11 그래서 MIT에서는 교육용 프로그래밍 언어인 '스크래치'를 만들어서 Children 대상으로 프로그래밍을 가르쳐 주고 있습니다. 여기서 중요한 것은 어려운 코딩 문법은 하나도 없다는 것입니다. 그냥 블락 몇개만 쌓아올리면 끝납니다. 단!! 사고의 흐름이 중요한 것이지요.
  • #12 이렇게요. Hungry fish가 Gold fish를 먹는 게임을 만드는데 필요한 건 블락과 사고의 흐름 뿐입니다.
  • #13 이렇게 프로그래밍이라는 것은 어떤 작업을 수행하기 위해 컴퓨터에게 지시하는 방법입니다.
  • #14 그리고 그렇게 만들어진 소프트웨어는 사람을 돕습니다.
  • #15 무엇이되든 여러분들은 프로그래밍을 배워야합니다.
  • #17 사고하는 방법을 훈련할 수 있기 때문이지요. 그런데 우리 성인들은 이미 마이크로소프트와 인터넷, 최근에는 수많은 SNS에 노출되어 있어서 그런 IT 서비스에 거절감은 없는 것 같습니다. 이미 컴퓨팅적 사고가 어느적도 학습되어 있다고 판단됩니다. 그렇다면 이제는 사고를 표현하는 방법을 배워야 합니다. 오늘은 바로 사고를 표현하기 위해 특정 언어를 배울건데요. 그 언어는 바로 Python이라는 것입니다.
  • #29 여러분들이 만약 초콜렛을 판매하는 회사의 직원이라고 하면 어떤 곳에 광고를 해야할까요? 이런 분석을 통해서 '오늘의 유머'게시판에 광고를 하면 더 효과가 좋겠구나~ 라고 생각할 수 있습니다.
  • #30 파이썬을 만든 사람인 귀도 반 로섬이 현재 Dropbox에서 일을 하고 있습니다.
  • #31 엔하위키에 보면 이렇게 정의가 되있더군요.