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

Preview:

Citation preview

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을이용한데이터분석

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

순서열 - str1. 양의정수로색인되는순서있는객체들의모음

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]

e. a[0:len(a):2]

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

Recommended