이번 포스팅에서는 파이썬의 5가지 자료 구조, 변수 유형에 대해서 간략하게 알아보겠습니다. 


몇 년을 SAS 사용하다가 R 을 배우기 시작했을 때 R의 자료 구조가 좀 낯설었는데요, R 사용하다가 Python 배우기 시작하니 또 좀 생소하더군요. 처음엔 낯설어도 자꾸 사용하다보면 또 금새 익숙해지니 너무 부담갖지는 마시구요.


무슨 언어를 사용하던지 자료 유형(Data Type)에 대해서 정확하게 알고 있는 것이 정말, 진짜로, 억수로, 무지막지하게 중요합니다.  가장 기본이 되는 것이라서 정확하게 숙지를 하고 있어야 합니다. 


파이썬의 자료 구조, 변수 유형에는 수(Number), 문자열(String), 리스트(List), 튜플(Tuple), 사전(Dictionary)의 5가지 유형이 있습니다.  이번 포스팅에서는 수(Number)와 문자열(String)을 먼저 살펴보겠습니다. 



[ 파이썬의 자료/변수 유형 (Python's 5 Data Types, Variable Types) ]





 (1) 수 (Numbers)

: 정수(integer), 실수(real number), 복소수 (complex number)


먼저 수 (Number) 인데요, 더 세부적으로 구분해보자면 파이썬이 지원하는 수에는 정수(Integer), 실수(Real Number), 복소수(Complex Nuber) 의 3가지가 있습니다.


(1-1) 정수 (Integer)


파이썬은 메모리가 허용하는 선에서 무한대의 정수를 사용할 수 있습니다.  

type() 함수로 자료유형을 확인할 수 있습니다. 


#%% (1) Numbers # (1-1) int : signed integers


In [1]: num_int = 100


In [2]: type(num_int)

Out[2]: int 




참고로, 파이썬이 제공하는 수에 대한 산술 연산자(arithmetic operators)에는 아래의 7가지가 있습니다.  연산자(operator) 기호는 기억해두면 편할텐데요, 나누기(division), 나눗셈의 몫(floor division), 나눗셈의 나머지(modulus) 가 항상 헷갈립니다. ^^;


연산자 (operator)

 설명

예 

 +

 더하기 (addition)

 5 + 2 = 7

 -

 빼기 (subtraction)

5 - 2 = 3 

 곱하기 (multiplication)

5 * 2 = 10

 /

나누기 (division) 

 5 / 2 = 2.5

 //

나눗셈의 몫 (floor division) 

 5 // 2 = 2

 %

나눗셈의 나머지 (modulus) 

5 % 2 = 1 

 **

지수 (exponent) 

5 ** 2 = 25



파이썬은 수를 2진수, 8진수, 16진수로 변환할 수 있는 함수를 제공합니다. 참고로, 컴퓨터가 정보를 처리하는 가장 단위가 '0'과 '1'로 구성된 비트(bit) 이고, 비트가 8개 모여서 바이트(byte)가 되는데요, 1 바이트로는 0 ~ 255 (2^8 -1 개) 개의 수를 표현할 수 있습니다.


아래 표에 10진수 10을 각 2진수, 8진수, 16진수로 변환해 보았습니다.


진법별로 변환해주는 함수 (function)

 접두사 (prefix)

예 

2진수(Binary number)로 변환: bin()

 0b

In [26]: bin(10)

Out[26]: '0b1010'

8진수(Octal number)로 변환: oct()

 0o

 In [27]: oct(10)

Out[27]: '0o12'

 16진수(Hexadecimal number)로 변환: hex()

 0x

 In [28]: hex(10)

Out[28]: '0xa'



(1-2) 실수 (Real Number): 부동 소수형


파이썬은 실수를 지원하기 위해 소수점이 있는 부동 소수형(floating point real values)을 제공합니다. 



# (1-2) float : floating point arithmetic

In [3]: num_float = 12.345


In [4]: type(num_float)

Out[4]: float 




파이썬이 정수는 메모리가 허용하는 한 무한대로 저장, 처리할 수 있다고 했는데요, 부동 소수형은 저장공간을 효율적으로 사용하기 위해 8 바이트만 사용해서 소수를 저장, 표현하므로 정도밀에 한계가 있습니다. 부동 소수형 수를 가지고 계산을 하다보면 끝자리 수가 미묘하게 예상했던 것과 다른 결과가 나오는 경우가 있으므로 정밀한 계산을 요구하는 경우에는 주의를 해야 합니다. 


수학에서 가장 많이 사용되는 무리수, 무한소수인 원주율(ratio of circumference of circle to its diameter ""

3.141592653589793238462...)과 자연상수(The mathematical constant "e", 2.71828182845904523536...)를 파이썬의 math 모듈을 사용해서 표현해 보겠습니다. 부동 소수형으로 표현되어 자리 수가 제한되어 있음을 확인할 수 있습니다. 



In [5]: import math


In [6]: math.pi

Out[6]: 3.141592653589793


In [7]: math.e

Out[7]: 2.718281828459045 




(1-3) 복소수 (Complex Number): 실수(Real Number) + 허수(Imaginary Number: j)


복소수는 실수(real number)와 허수(imaginary number, i)로 구성된 수입니다. 고등학교 때 배워서 기억이 좀 가물가물할 수도 있는데요, (a, b는 실수, i는 허수) 형태로 표현하고, 이때 허수 i 는 인 수입니다. 


파이썬에서는 허수를 i로 표기하는 대신에 j 로 표기합니다. 



# (1-4) complex : complex numbers

In [8]: num_complex = 3 + 0.45j


In [9]: type(num_complex)

Out[9]: complex


In [10]: num_complex.real

Out[10]: 3.0


In [11]: num_complex.imag

Out[11]: 0.45




복소수도 산술연산을 할 수 있는데요, 아래에 덧셈(+) 연산 예를 들어보았습니다. 



In [12]: num_complex_2 = num_complex + (1 + 2j)


In [13]: num_complex_2

Out[13]: (4+2.45j)

 

# delete number objects

In [14]: del num_int, num_float, num_complex, num_complex_2





 (2) 문자열 (String) 


(2-1) 문자열 생성 : ' ', " ", ''' ''', """ """


파이썬이 제공하는 자료형의 두번째로는 문자들이 가지런히 늘어서 있는 집합인 문자열(String)이 있습니다. 작은 따옴표('xx')나 큰 따옴표 ("xx")로 감싸서 표현합니다.



In [14]: str_1 = 'Hello World'


In [15]: str_1

Out[24]: 'Hello World'


In [16]: type(str_1)

Out[16]: str 




줄을 바꾸어서 여러개의 줄로 문자열을 표현해야 하는 경우에는 작은 따옴표 3개('''xx''') 또는 큰 따옴표 3개(""xx""")를 이용해서 표현합니다. 가령, 여러 줄의 SQL query를 DB connect해서 사용하는 경우에 작은 따옴표 3개를 사용하면 되겠습니다.



In [17]: mysql_Query = """SELECT var1, count(*) as cnt

    ...: FROM mytable

    ...: WHERE var1 = 'aaa'

    ...: GROUP BY var1

    ...: ORDER BY var1"""


In [18]: mysql_Query

Out[18]: "SELECT var1, count(*) as cnt\n FROM mytable\n WHERE var1 = 'aaa'\n GROUP BY var1\n ORDER BY var1"

 



(2-2) 문자열 분리 (slicing of a string) : [ ], [ : ]


문자열은 순서열(sequence) 형식으로서 [ ], [ : ] 와 같은 슬라이싱 연산자(slice operator) 를 사용해서 문자열의 일부분을 분리할 수 있습니다. R 사용하다가 파이썬의 슬라이싱 사용하려면 R과 파이썬이 슬라이싱 시작하는 위치, 끝나는 위치가 달라서 무척 헷갈립니다. ^^;


'Hello World' 문자열을 가지고 Python 으로 슬라이싱 하는 것과 동일한 결과를 얻기 위해서 R 로 subset() 함수를 사용해서 문자열 분리하는 예를 아래에 비교해보았습니다.


Python 

 

In [19]: a = 'Hello World'


In [20]: print(a)

Hello World


 > # subset of string using R

> a <- c('Hello World')

> a

[1] "Hello World"

# [] and [:] : slice operator with indexes starting at 0

# in the beginning of the string

In [21]: a[1]

Out[21]: 'e'


> substr(a, 2, 2)

[1] "e" 
 

In [22]: a[1:4]

Out[22]: 'ell'


 > substr(a, 2, 4)

[1] "ell"

 

In [23]: a[1:]

Out[23]: 'ello World'


 > substr(a, 2, nchar(str))

[1] "ello World"

 

In [24]: a[10]

Out[24]: 'd'


# final character of a string : string[-1]

In [25]: a[-1]

Out[25]: 'd'


> substr(a, 11, 11)

[1] "d"


 > substr(a, nchar(str), nchar(str))

[1] "d"


Python의 경우 string[-1] 이면 제일 마지막 위치에서 첫번째 문자를 슬라이싱 해오며, string[-2]이면 제일 마지막에서 두번째 문자를 슬라이싱 해옵니다. (R에서 indexing 할 때 '-1'을 사용하면 첫번째 객체를 삭제해버립니다. 완전 당황하는 수가 있어요. 겪어본 사람은 알지요... ㅋㅋ)



[ 문자열 슬라이싱의 시작과 끝 위치: Python vs. R 비교 ]




(2-3) 문자열 합치기 (concatenation of two strings) : +



# plus (+) sign: the string concatenation operator

In [26]: a + ' I Love You'

Out[26]: 'Hello World I Love You'

 




(2-4) 문자열 반복하기 (repetition of a string): *



# asterisk(*) : the repetition operator

In [27]: a*2

Out[27]: 'Hello WorldHello World'

 



다음번 포스팅에서는 파이썬 자료형 중에서 리스트(List)에 대해서 알아보겠습니다.


많은 도움이 되었기를 바랍니다.

이번 포스팅이 도움이 되었다면 아래의 '공감~'를 꾸욱 눌러주세요. ^^



저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend

이번 포스팅에서는 Python의 가장 기본적인 구문법 (Basic Syntax)에 대해서 정리를 해보겠습니다. 

 

이미 Python 잘 쓰고 계신 분은 이번 포스팅 건너뛰시면 되겠습니다.

 

Spyder나 Junpyter Notebook 사용법 소개하면서 이미 간단하게나마 언급했던 내용도 이미 있는데요, 파이썬 기본 구문법을 일괄적으로 정리해본다는 차원에서 중복되더라도 다시 소개해봅니다.

 

 

- (1) 파이썬 식별자 (Python Identifier)

- (2) 파이썬 키워드 (Python Keywords)

- (3) 줄 들여쓰기 (Lines and Indentation)

- (4) 복수 줄 선언문 (Multi-Line Statements)

- (5) 파이썬 인용 (Quotation in Python with hash sign #)

- (6) 부가설명 (Comments in Python)

- (7) 한 개의 줄에 복수 선언문 쓰기 (with semicolon ;)

- (8) Suite 으로 복수의 선언문 묶음 쓰기 (with colon :)

 

 

 

 (1) 파이썬 식별자 (Python Identifier)

 

파이썬의 변수, 함수, 클래스, 모듈, 객체를 정의하기 위해서 사용하는 이름을 파이썬 식별자 (Python Identifier) 라고 합니다.  식별자는 영어 a~z, A~Z로 시작하거나 (_), (__) 같이 한줄 혹은 두줄 밑줄(underscore)과 0~9 숫자, 문자로 만들 수 있습니다. 

 

- 숫자로 시작하는 식별자는 만들 수 없습니다.  (SyntaxError: invalid token)

 

In [1]: 3_var = 10

File "<ipython-input-1-33101349b3ed>", line 1

3_var = 10

^

SyntaxError: invalid token 

 

- 파이썬은 영어 소문자와 대문자를 구분합니다. (var_1VAR_1 은 서로 다르게 인식함)

- 파이썬에서는 관습적으로 클래스(Class)대문자(uppercase letter)로 시작합니다.

- 한개의 밑줄(_)로 시작하는 식별자priviate 함을 의미합니다.  

- 두개의 밑줄(__)로 시작하는 식별자강하게 private 함을 의미합니다.

- 두개의 밑줄로 시작하고 또 두개의 밑줄로 끝나는 식별자는 파이썬 언어에서 정의한 특별한 이름입니다. (예: __init__(self) 메소드)  

 

 

 

 

 (2) 파이썬 키워드 (Python Keywords)

 

파이썬에는 이미 예약이 되어 있어서 변수 이름으로 사용할 수 없는 단어들이 있는데요, 이를 파이썬 키워드라고 합니다.  모두 소문자예요.  파이썬 키워드를 가지고 새로운 변수 객체를 만들려고 하면 아래처럼 SyntaxError가 납니다.

 

In [7]: and = 10

File "<ipython-input-7-97dbaf47599d>", line 1

and = 10

^

SyntaxError: invalid syntax 

 

 

 

 

 

 (3) 줄 들여쓰기 (Lines and Indentation : 4 spaces)

 

파이썬은 R이나 Java 처럼 함수나 클래스 정의할 때 { } 같은 괄호를 사용하지 않습니다. 대신에 줄 들여쓰기 (Indentation)을 사용합니다.  처음에 좀 당황스럽고 과연 코드 가독성이 떨어지지는 않을까 의구심이 드는데요, 써보면 나름 편리합니다. 게다가 Spyder IDE를 사용하면 알아서 들여쓰기를 해주니 편리하게 코딩할 수 있습니다. 암튼, 들여쓰기 이거 파이썬에서는 매우 중요합니다.

 

첫머리를 들여쓰기 할 때 4줄이나 8줄을 사용하는데요, 보통 4줄 들여쓰기를 많이 하는거 같습니다. 저도 그렇고, 제 주변 프로그래밍 하는 분들도 대부분 4줄 들여쓰기를 Spyder에 설정해놓고 쓰곤 합니다.

참고로, Spyder에서 들여쓰기 설정은 아래 경로로 찾아들어가서 설정하면 됩니다.

 

Spyder : Tools > Preferences > Editor > Advanced setting > Indentation characters : 4 spaces

 

 

 

 

커서를 움직여서 스페이스(space)로 들여쓰기와 탭(tab)으로 들여쓰기가 있는데요, 파이썬을 만든 Guido van Rossum 은 스페이스 들여쓰기를 권장하고 있습니다.  뭘 쓰든 상관은 없는데요, 단, 하나의 프로그래밍에 스페이스 들여쓰기와 탭 들여쓰기가 섞여있으면 파이썬이 경고 메시지를 뱉어냅니다.  하나만 골라서 쓰시는게 좋겠습니다.

 

 

같은 코드 덩어리에서 들여쓰기가 서로 다르면 에러가 납니다.  같은 코드 덩어리에서는 같은 위치로 들여쓰기 해야 합니다.

 

 

# good indentation, no error

In [10]: X = 1

    ...:

    ...: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:     print("X is not positive")

    ...:

    ...:

X is posivive

 

 

# no error, hmm... indentation is not good,

# but, anyway it works because the code block is different

In [11]: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:         print("X is not positive")

    ...:

    ...:

X is posivive

 

 

# indentation error
# all statements within the same block should be indented the same amount

In [12]: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:     print("X is not positive")

    ...:         print("X is less than 0") # Indentation Error

    ...:

    ...:

File "<ipython-input-12-c021cffab59f>", line 5

print("X is less than 0")

^

IndentationError: unexpected indent

 

 

 

 

꼭 에러가 나지는 않더라도 들여쓰기를 맞추어서 해주면 가독성이 올라기기 때문에 특히 여러사람이 협업하는 경우라면 부가설명을 붙여주는 것과 함께 들여쓰기를 이쁘게 잘 해주는게 좋습니다.

 

 좋은 들여쓰기 예 (good indentation)

나쁜 들여쓰기 예 (bad indentation) 

 df = DataFrame({'class_1': ['a', 'a', 'b', 'b', 'c'], 
                       'var_1': np.arange(5), 
                       'var_2': np.random.randn(5)}, 
                       index = ['r0', 'r1', 'r2', 'r3', 'r4'])

 df = DataFrame({'class_1': ['a', 'a', 'b', 'b', 'c'], 
       'var_1': np.arange(5), 
       'var_2': np.random.randn(5)}, 
        index = ['r0', 'r1', 'r2', 'r3', 'r4'])

 

 

 

 

 (4) 복수 줄 (Multi-Line Statements with the line continuation character '\')

 

파이썬에서 프로그래밍하다보면 줄이 너무 길어지는 경우가 생겨서 줄 바꾸기를 해주는게 좋겠다 싶을 때가 생기는데요, 이때 '\' 문자 (line continuation character)를 사용해주면 파이썬이 '아, 비록 줄이 바뀌지만 코딩하던거 아직 끝난거 아니구나, 다음 줄도 이전 줄에 이어지는 것이구나'라고 이해를 합니다.

 

 

 

 

단, ( ), [ ], { } 등의 괄호 부호 안에서 쓰는 선언문은 '\' 부호 없이도 그냥 엔터 치고 줄 바꿈 해서 입력해도 알아서 '이전 줄에 이어서 계속 입력하고 있는 거구나' 하고 파이썬이 알아서 해석합니다.

 

 

# not need to use the line continuation character '\' for multi-line statements in case of [ ]

mydata = pd.DataFrame([1, 2, 3,
                                 4, 5, 6,
                                 7, 8, 9])

 

 

 

 

 

 (5) 파이썬 인용 (Quotation in Python with the ' ', " ", ''' ''', """ """)

 

파이썬은 작은 따옴표(' '), 큰 따옴표(" "), 세개 짜리 따옴표 (''' ''' 또는 """ """) 를 가지고 문자열 인용을 합니다. 세개 짜리 따옴표의 경우 2줄 이상의 다수의 줄로 문자열을 나열할 수 있으며, 저 같은 경우 긴 SQL 문을 객체로 만들 때 사용하곤 합니다.

 

 

In [23]: A = 'string A'


In [24]: A

Out[24]: 'string A'


In [25]: B = "string B"


In [26]: B

Out[26]: 'string B'


In [27]: C = """It is a string C. It continues

    ...: as follows. It has the second line."""

    ...:


In [28]: C

Out[28]: 'It is a string C. It continues \nas follows. It has the second line.'

 

 

 

 

 

 (6) 부가설명 (Comments in Python with the hash sign '#')

 

'#' 부호(hash sign)를 쓰면 파이썬은 '#' 이후는 무시해 버립니다.  따라서 파이썬 코드에 부가설명을 달고 싶으면 '#' 부호를 쓴 후에 comments 를 달면 되겠습니다. (이미 다 아시죠? ^^;  R이랑 같습니다.)

 

 

 

 

 (7) 한 줄에 복수개의 선언문 쓰기 (with the semicolon ;)

 

세미콜론 ';' (semicolon)를 사용하면 한 줄에 복수개의 선언문을 나열할 수 있습니다. (이것도 R이랑 같네요)  단, 이때 복수개의 선언문은 code block이면 안되겠습니다.  복수개의 code block을 그룹으로 해서 쓰려면 아래 (8)번 suite 참고하세요.

 

 

# multiple statements on a single line with the semicolon ( ; )

In [34]: var_1 = 10; var_2 = 20; var_3 = 30

    ...:


In [35]: var_1

Out[35]: 10


In [36]: var_2

Out[36]: 20


In [37]: var_3

Out[37]: 30

 

 

 

 

 

 (8) Suite 으로 복수의 선언문 묶음 쓰기 (with colon :)

 

 

 

많은 도움 되었기를 바랍니다. 


이번 포스팅이 도움이 되었다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^

 

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend

이번 포스팅은 회사에서 > pip install 로 Python 패키지 설치를 하다가 아래와 같은 에러 메지시를 만났을 때 대처 방법에 대한 짧은 글입니다.

 

패키지 설치하려고 하는데 “connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed” 에러 메시지에 맞닥뜨리면 당황스럽습니다.  특히 Python 처음 사용하는 분이라면 더욱더요. 

 

여기서 SSL 은 Secure Sockets Layer 의 약자로서 해킹, 피싱 등으로 부터 소중한 데이터를 지켜주는 것으로 보안(암호화, trusted third party 인증 등...)과 관련이 되어 있습니다. (더 자세히 알고 싶으신 분은 ☞ What is SSL and how does it work?)

 

 

 “connection error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed”

 

 

이때 조치를 취할 수 있는 방법 4가지를 소개하겠습니다.

 

 

방법 1) cmd 창에서 https 대신에 http url을 사용해서 pip install 로 설치

 

pip install --index-url=http://pypi.python.org/simple/ --trusted-host pypi.python.org pythonPackageName

 

[cmd 창 입력 예시 (시각화 패키지 seaborn 설치하려고 했을 때) ]

 

 

 

참고로 HTTPS는 데이터를 안전하게 전송하기 위해서 SSL(Secure Sockets Layer) 과 연동해서 작동합니다. HTTPS 가 SSL 인증 실패 에러를 일으키는 이유이지요. (HTTPS(Secure HyperText Transfer Protocol) works in conjunction with another protocol, Secure Sockets Layer (SSL), to transport data safely... for more details ☞http://www.biztechmagazine.com/article/2007/07/http-vs-https )

 

 

 

 

방법 2) whl 패키지 설치

 

아래 Link 에서 wheel package를 먼저 다운 받은 후에 (Windows OS의 32bit, 64bit 용 패키지)

          http://www.lfd.uci.edu/~gohlke/pythonlibs/

 

          cmd 창에서 아래의 pip install 명령어로 설치하세요.

 

 pip install wheel_package_name.whl

 

 

 

 

방법 3) easy_install

 

 

easy_install pip==1.2.1
pip install --upgrade pip

 

 

 

 

cmd 창에서 pip(the Preferred Installer Program) 를 사용해서 pip install .... 로 설치하는 대신에 anaconda의 conda install 을 사용해서 설치를 할 수도 있습니다.  SSL verify를 false로 설정해놓아보세요. (이거 어째 좀 위험해보이긴 합니다 -_-;;)

 

방법 4) conda config --set ssl_verify false

 

conda config --set ssl_verify false

conda install pip

conda upgrade pip

 

 

 

참고로요, cmd 창에서 "conda help" 를 치면 conda 로 사용할 수 있는 positional arguments 들에 대한 설명을 볼 수 있습니다.

info, help, list, search, create, install, update, upgrade, remove, uninstall, config, clean, package 등이 있는데요, 아래 화면 캡쳐의 설명을 참고하시거나 직접 cmd 창에 "conda help" 입력해서 확인해보시면 되겠습니다.

 

 

 

 

마지막 참고로요, R 사용자 분이라면요, 회사에서 R 패키지 깔려고 하는데 네트워크 보안 때문에 에러나는 경우는 http://rfriend.tistory.com/177  참고하세요.

 

 

많은 도움 되었기를 바랍니다.


이번 포스팅이 도움이 되었다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^

 

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend

지난번 포스팅에서는

 

 - Anaconda [Python 3.6 버전] 설치

   (Python 3.6, Spyder, Jupyter Notebook, IPython 설치)

 

 - Python IDE인 Spyder 사용법

 

에 대하여 알아보았습니다.

 

 

이번 포스팅에서는 Python 을 interactive 하게, 편리하게 즉각적으로 결과를 봐가면서 데이터 처리, 분석을 할 수 있는 Jupyter Notebook 사용법을 소개하겠습니다.


특히 실습 교육을 진행할 때, 혹은 데이터 분석 결과를 포함한 내용으로 보고서 작성이나 프리젠테이션 할 때 Jupyter Notebook의 markdown 기능을 곁들여서 코드랑 같이 사용하면 유용하더군요.  Jupyter Notebook 안에 텍스트 뿐만 아니라 이미지 파일이나 심지어 동영상도 삽입해서 수강생들에게 공유할 수 있으니 교육 실습 자료로 Jupyter notebook을 사용하면 여러모로 쓸모가 있습니다. 

 

사용법이 그리 어렵지는 않구요, 시간 좀 들여서 이것 저것 눌러보면서 사용해보면 금방 익힐 수 있을거예요. 다만 처음 사용하는 분 입장에서는 '실행'을 어떻게 하는거지 부터 해서... Rstudio 나 Spyder 와는 UI가 다르기 때문에 낯설은 부분이 있는 만큼, 이번 포스팅은 Jupyter Notebook 첫번째 사용자를 대상으로 포스팅을 써봅니다.

 

 

1. Start 'Jupyter Notebook'

 

 

 

2. Jupyter Notebook 첫 화면 : (1) Files

 

Jupyter Notebook을 실행 시키면 아래 화면캡쳐와 같이 첫화면이 나타납니다.  특이하게 'Internet explorer' 가 창으로 뜹니다.  (1) Files, (2) Running, (3) Clusters 의 세 개의 tab 으로 구성되어 있습니다.

 

먼저 'Files' tab을 살펴보면 폴더랑 python script 파일 (*.ipynb) 들이 리스트로 줄줄이 나열되어 있습니다.  기존에 저장해두었던 파일 클릭해서 실행시키면 되겠지요?

 

 

 

 

2. Jupyter Notebook 첫 화면 : (2) Running

 

'Running' tab에 들어가 보면 현재 실행 중인 python 파일을 확인할 수 있습니다. 'Shutdown' 단추를 누르면 '죽일 수'도 있구요.

 

 

 

 

2. Jupyter Notebook 첫 화면 : (3) Clusters

 

'Clusters' tab에 가보면 IPython parallel 의 clusters 를 볼 수 있습니다.

 

 

 

2. Jupyter Notebook 첫 화면 : (4) Kernel

 

사용자 웹 UI 화면 말고 뒷단에서는 아래 화면캡처와 같은 Kernel 창이 하나 더 있습니다.  백조의 호수 물 밑의  부지런한 두 물갈퀴 다리 같다고나 할까요.  아래 창은 신경 안쓰셔도 됩니다.

 

 

 

 

3. Jupyter Notebook : Create a new Notwbook with Python 3

 

자, 이제 본론으로 들어가서요, 새로운 Python 3 Notebook 창을 만들어 볼까요?! 

 

우측 상단의 'New' 메뉴를 선택하고 'Python 3'를 클릭해 보세요.

 

 

 

 

4. Jupyter Notebook : Rename Notebook

 

그러면 아래처럼 Notebook 창이 하나 뜹니다.  아래 네모난 빈 Cell에 Python script 쓰면 됩니다. 

파일 제목을 'Untitled'에서 새로운 이름을 부여해서 저장해놓고 시작하는게 좋겠네요.  그쵸?

아래 화면캡쳐의 'Untitled' 부분을 클릭하면 그 아래의 'Rename Notebook' 창이 새로 뜨구요, 새로운 이름을 써 준 후에 'OK' 눌러주면 됩니다.

 

 

 

 

5. Jupyter Notebook : Run current cell (Shift+Enter, Ctrl+Enter)

 

(1) 현재 커서가 있는 Cell 에서 아래 화면캡쳐의 빨강 동그라미 아이콘(▶|)을 클릭하면 Python script가 실행됩니다.

 

(2) 단축키를 쓸 수도 있는데요, 'Shift + Enter' 를 사용하면 현재 커서가 있는 Cell 이 실행이 되고요, 커서가 다음번 Cell로 넘어갑니다.

 

(3) 단축키 중에서 'Ctrl + Enter'를 사용하면 현재 커서가 있는 Cell 이 실행이 되고요, 커서가 현재 Cell에 그래도 남아있게 됩니다.

 

 

 

 

6. Jupyter Notebook : Tool-bar

 

Tool-bar 간단히 살펴보고 가시죠.  순서대로 보면 아래와 같은데요, 두개씩 쌍을 이루고 있습니다.

 

 - 저장 (save)

 

 - 아래에 Cell 추가 (insert cell below)

 - 선택한 Cell 삭제 (cut selected cells)

 

 - 복사 (copy selected cells)

 - 붙여넣기 (paste cells below)

 

 - 선택한 Cell 위로 이동 (move selected cells up)

 - 선택한 Cell 아래로 이동 (move selected cells down)

 

 - 실행 (run cell, select below) <- 'Shift + Enter'

 - 중단 (interupt kernel)

 

 

 

 

7. Jupyter Notebook : Open the command palette

 

아래 화면 캡쳐 상단의 빨간 박스의 아이콘을 클릭하면 --> 그 아래처럼 'palette command' 창이 뜹니다. 'change cell to heading 1', 'change cell to heading 2', .... 처럼 선택할 수 옵션이 여러개 뜨는데요, 위에 있는것일 수록 글자 크기가 큰 부연설명 제목을 달 수 있습니다.

 

 

 

 

8. Jupyter Notebook : (1) Run All, (2) Run All Above, (3) Run All Below

 

Spyder는 Editor 창에 python scripts 를 써놓고 전부 실행, 특정 Cell 실행, 선택한 영역 실행을 하는데 편리합니다.  Jupyter Notebook 에도 이와 비슷한 기능이 있습니다.

 

'Cell' 메뉴를 누르면 '실행(Run)' 관련된 세부 메뉴가 뜨는데요, 이중에서도 'Run All', 'Run All Above', 'Run All Below' 는 Tool-bar에 없는 기능이므로 알아두면 유용할것 같습니다.

 

 

 


9. code 행 번호 표시하기 : Esc + l   (영어 소문자 'l' )


코드가 길면 어느 행인지 찾기가 힘들 수 있는데요, (교육하거나 협업하거나 할 때...) 

이때 코드 행 번호가 옆에 표시 되면 찾아가기에, 의사소통하기에 편할 것입니다. 


[ before ]



[ Esc + l  실행 후 ]  : 왼쪽에 노란색 칠한 부분에 cell 내 행번호가 생성되었음.  토글키로 한번 더 'Esc + l' 누르면 다시 원래대로 돌아감. 



이밖에도 Jupyter Notebook 기능이 여러개 더 있지만 전부 소개하기에는 스크롤 압박이 심하므로 여기까지만 소개하도록 할께요.

 

많은 도움이 되었기를 바랍니다.


이번 포스팅이 도움이 되었다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^

 

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend

지난번 포스팅에서는 Python IDE 인 Anaconda 설치 방법을 알아보았습니다.

 

Anaconda를 설치하면 약 450여 개의 Packages 들과 함께 Spyder, Jupyter Notebook, IPython 등이 자동으로 설치됩니다. 

 

저는 분석 프로그래밍 할 때 수십, 수 백, 수천 줄 코딩해야할 경우가 많으므로 Spyder 편집기를 주로 사용합니다. 그리고 간단한 탐색적 분석할 때 Jupyter Notebook (R, spark 사용 할 때 포함) 을 가끔 사용하구요.

 

처음 Spyder를 사용하는 분이라면 좀 생소할 것이므로 좀더 빨리 사용법을 익힐 수 있도록, 이번 포스팅에서는 제가 유용하게 사용하고 있는 기능 위주로 몇 가지만 추려서 소개하도록 하겠습니다.

 

 

1. Spyder 시작

 

Windows 시작 단추를 누르면 'Anaconda3 (64-bit)' 폴더 아래에 'Spyder' 아이콘을 클릭하면 Spyder 가 시작합니다.

 

 

 

2. Spyder 창 구성 (windows layout)

 

아래 화면캡쳐한 Spyder 창의 왼쪽은 (1) script Editor 입니다.

오른쪽 상단에는 (2) Variable Explorer, File Exployer, Help tab 이 차례대로 있습니다. 

오른쪽 하단에는 (3) Python console, History log, Ipython console 이 차례대로 있습니다.

 

저는 아래처럼 그냥 Spyder default layout 을 그대로 사용합니다만, 마우스로 특정 창을 drag 해서 원하는 위치에 이동시킬 수 있습니다. 대형 모니터를 사용하는 분이라면 창을 개인취향에 맞게 이리저리 옮기고 크기도 조절해서 사용하시면 됩니다.

 

(1) Editor 창에서 작성한 script는 F9나 ctl+Enter 등을 사용해 명시적으로 실행을 시켜야만 실행이 됩니다. 길게 프로그매링 해야 하고 저장해 두었다가 반복적으로 사용해야 하는 상황이라면 Editor 창에서 script를 작성하고 파일로 저장을 해두어야 겠지요.

 

반면에 (3) Ipython console 에서는 script 작성하고 Enter 를 치면 interactive 하게 실행이 되서 결과를 반환합니다.  간단하게 탐색적 분석하거나 Python 처음에 공부할 때 책보면서 이리저리 연습해보기에 편합니다.

 

[ Spyder default layout ]

 

 

 

 

Spyder는 Rstudio layout 과 동일한 형태의 layout 도 제공한답니다. (View > Windows layout > Rstudio layout 선택)  'File exployer'를 자주 사용하지 않는 사용자라면 Editor 창을 좀 더 넓게 사용할 수 있는 'Spyder default layout'이 좀더 편할거 같습니다.

 

[ Spyder : Rstudio layout ]

 

 

 

 

3. Spyder Outline

 

View > Panes > Outline (Ctrl+Shift+O) 을 선택하면 아래의 두번째 화면캡쳐의 왼쪽 상단에 보이는 것처럼 script 전체의 cell 구분 및 hierarchy 를 한눈에 볼 수 있으며, cell의 제목을 선택하면 해당 cell로 커서가 바로 이동하므로 매우 편리합니다.  대형 화면 모니터를 사용하는 분이라면 매우 유용한 기능 중에 하나입니다.

 

 

 

[ Spyder : Outline (Editor 좌측 상단) ]

 

 

 

 

4. 키보드 단축키 (Keyboard shortcuts)

 

단축키 쓰는거 좋은 하는 분이라면 'Tools > Preferences > Keyboard shortcuts' 를 선택한 후에 default keyboard shortcuts 을 찬찬히 살펴본 후에 '나만의 맞춤형 키보드 단축키'를 설정해보시기 바랍니다.

 

가령, 저는 제일 많이 사용하는 단축키가 'run selection' 의 'F9' (editor 창의 커서가 위치한 script 한 줄 실행, 혹은 블럭으로 선택한 부분의 script 실행) 인거 같네요. 'F9' 말고 다른 단축키로 바꾸러면 더블 클릭해서 활성화 시킨 후에 다른 단축키를 설정해주면 됩니다.

 

 

 

 

5. Spyder : 편집 화면 Syntax 색깔 지정 (Syntax coloring )

 

기본 편집 화면 Syntax 색깔이 마음에 들지 않는다면 'Tools > Preferences > Syntax coloring' 에서 마음에 드는 Systax coloring 을 골라보세요. 가령, 배경이 어둡고 Syntax를 환하게 하고 싶다거나 할 때요.

 

 

 

 

6. Spyder : 실행 (Run)

 

코딩한 script 를 실행할 때 R 사용자라면 'Ctrl+Enter' 단축키를 사용했을 텐데요, Python Spyder 는 4가지(!!!)나 제공하며, 'Ctrl+Enter' 가 있기는 한데 R과는 조금 다릅니다. (Spyder 사용 초창기에 당황했던 기억이...)

 

1) 저장한 파일 전체를 처음부터 끝까지 한꺼번에 실행 (Run file) : F5

2) 현재 커서가 위치한 cell 전체를 실행 (Run current cell) 후 커서 현 cell에 위치 : Ctrl + Enter

   : 여기서 cell 은 '#%%' 로 구분이 된, 위/아래로 '선(line)'으로 구분이 된 덩어리를 말합니다.

3) 현재 커서가 위치한 cell 전체를 실행 후 다음번 cell로 커서 이동 (Run current cell and go to the next one) : Shift + Enter

4) 현재 커서가 위치한 행(row) 또는 선택한 행 전체를 실행 (Run selection) : F9

 

저는 주로 'F9'를 사용하고, 가끔 'Ctrl+Enter' 나 'Shift+Enter' 를 사용합니다.  아주 가끔 'F5'를 사용하구요. 

 

[ Spyder : 실행 (run) ]

 

 

 

 

[ Spyder : Cell (#%% 사용해서 cell 구분) ]

 

 

 

Spyder 우측 상단의 '폴더' 모양 아이콘을 누르고 탐색기로 경로를 설정해주면 'Working directory setting' 이 됩니다.  이거 설정해주면 파일 저장이나 불러오기 할 때 편러합니다.

 

 

 

7. 부가설명 달기 : #

 

 

8. 들여쓰기 (indentation) : 4 spaces (or 8 spaces)

 

'#' 부호를 쓰면 Python script 에 아무런 영향을 주지 않은 상태에서 부가설명을 달 수 있습니다. (R과 동일)  특히 협업을 하면서 Python script를 짜는 경우라면 부가설명을 충실하게 달아주는 것이 여러모로 좋겠지요?!

 

Python은 code block, 함수 정의나 flow control 등을 하는데 있어서 다른 프로그래밍 언어처럼 '{ }'을 사용하지 않구요, 특이하게도 space 로 들여쓰기(indentation)를 해서 구분을 해줍니다.  이게 처음에 적응이 잘 안되고, 참 이상하고, '{ }' 구분없이 어떻게 프로그래밍을 짜서 당황스럽고, 의문이 가고, 대략 난감한데요... 쓰다보면 이게 참 편하구나 하고 적응이 되는 때가 옵니다. 보통은 4 spaces 로 들여쓰기를 하구요, 프로그래머들 중에는 tab 이나 8 spaces 로 들여쓰기(indentation)를 하기도 하는데요, Spyder의 디폴트 들여쓰기가 '4 spaces' 이구요, 저도 '4 spaces' 추천합니다.  사람마다 생각이 다를 수 있겠습니다만은, 저는 Spyder 쓰는 가장 유용한 기능 중의 하나가 자동으로 알아서 '들여쓰기 (indentation)'가 된다는 점, 그리고 'Syntax coloring'이라고 생각합니다.  만약 '들여쓰기'가 잘못되면 에러나므로 조심해야 하고 매우 중요합니다.

 

(참고 : Spyder 메뉴의 Tools > Preferences > Editor > Advanced settings > Indentation characters : 4 spaces  에서 들여쓰기(indentation) 설정 바꿈 가능합니다)

 

 

이밖에도 Spyder에 여러 기능이 많이 있지만, 전부 소개하자니 너무 많기도 하구요, 제가 위에서 소개한 것 외에는 그다지 사용하지 않는 기능들이기도 해서 여기까지만 소개하도록 하겠습니다.

 

 

 

9. Spyder 최신 버전으로 upgrade (update) 하기

 

cmd 창에 conda upgrade spyder 를 입력하면 됩니다.

 

 > conda upgrade spyder

 

 

[ cmd 창에서 conda upgrade spyder 실행 화면 예시 ]

 

 

 

 

다음번 포스팅에서는 Jupyter Notebook 사용법에 대해서 알아보겠습니다.

 

많은 도움 되었기를 바랍니다.


이번 포스팅이 도움이 되었다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^

 

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend

이번 포스팅에서는 Python 설치하는 방법을 소개하겠습니다.

 

Python을 설치하고 이용하는 다양한 방법이 있겠습니다만, 이번 포스팅에서는 아래 처럼 제가 사용하는 환경 기준으로만 소개를 해보겠습니다.  

 

제 주위 Python 사용자 중에는 Pycharm 이나 Eclipse 에 설치해서 사용하는거 추천하는 분들도 계시는데요... 저는 Anaconda 설치해서 주로 spyder 를 쓰고, 가끔 jupyter notebook 사용하곤 하구요, 그동안 별 불편을 못느꼈고 좋습니다.  왠만한 라이브러리도 거의 기본 포함하고 있구요.

 

- IDE : Anaconda (spyder, jupyter notebook, IPython)

- OS : Windows, 64-BIT

- Python version : 3.6

 

 

아마도 이번 Python 설치하기 포스팅을 보는 분이라면 Python 초보일 것이므로, Python 버전 2를 해야 하나 아님 버전 3을 해야 하나 고민할 거 없이 그냥 버전 3 깔아 쓰면 될거 같습니다. (버전 3은 버전 2 호환 보장하지 않습니다만... 버전 2에서만 되는 라이브러리를 반드시 꼭 써야만 하는 상황이 아니라면 버전 3 깔아 쓰는게 좋을거 같습니다).

 

만약 회사에서 이미 Python을 사용하고 있다면 Python 선배에게 찾아가서 "Python 무슨 버전을 사용하면 되나요?" 라고 꼭 물어보시기 바랍니다.  이미 특정 버전의 Python 버전을 사용해서 뭔가를 개발해놓은 상태라서 너무 높은 버전의 Python을 사용하려고 할 때 작동하지 않을 수도 있습니다. Python 버전별 무슨 Package 들을 지원하는 지는 https://docs.continuum.io/anaconda/pkg-docs  에서 확인해 볼 수 있습니다.  Python 버전이 올라갈 수록 지원하는 Package 숫자가 조금씩 줄어들고 있음을 알 수 있습니다. (물론 시간이 지나면 상위 버전 Python에도 Package 가 점점 더 늘어나겠지만요...)

 

 

서론이 여기까지 하구요, 아래 화면 캡쳐해 놓은대로 따로 해보면서 설치를 해보시지요.  Anaconda installer 다운로드 후에 'Next' 몇번 클릭하다 보면 설치 완료되있을 겁니다. 겁나 쉬워요. (하둡 설치랑은 비교 불가 -_-;)

 

 

1~4. Anaconda installer download

   - (1) 어디서? : https://www.continuum.io/downloads

   - (2) OS : Windows  (자기 컴퓨터 맞게 선택할 것)

   - (3) Python 3.6 version (회사에서 사용할 것이면 선배에게 Python 버전 물어볼 것)

   - (4) 64-BIT (자기 컴퓨터 맞게 선택할 것)

 

 

 

 

5. Anaconda installer 더블 클릭하여 시작

 

 

 

 

6. Anaconda installer 계속 'Next' 단추 누르면서 설치 진행

 

 

 

 

7. Anaconda License Agreement : "I Agree"

 

 

 

 

8. Select Installation Type : Just Me (recommended) > Next

 

 

 

 

9. Choose Install Location : 설치 directory 지정 (default 사용) > Next

 

 

 

 

10. Advanced Installation Options : (default 사용)

   - (v) Add Anaconda to my PATH environment variable

   - (v) Register Anaconda as my default Python 3.6

   > Install

 

 

 

 

11. Installation Complete : 설치 진행~ > 완료 후 > Next

 

 

 

 

12. Anaconda 설치 끝 : Finish

 

 

 

 

13. Windows 시작 'Anaconda3'
     > 14.바탕화면에 단축 아이콘 복사하기 (Ctrl + icon drag & drop)

 

 

 

 

 

 

다 끝났습니다.  쉽지요? ^^

 

spyder 사용법은 다음 포스팅에서 소개하겠습니다.


많은 도움 되었기를 바랍니다.


이번 포스팅이 도움이 되었다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^

 

 

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by R Friend R_Friend


티스토리 툴바