Python Basics for Data Science - PART 2
Python Basics for Data Science - PART 2¶
( 파이낸스 데이터 사이언스를 위한 파이썬 언어 기초 )
연산자, 문자열, 흐름 제어(if, for, while)¶
2017 FinanceData http://fb.com/financedata¶
산술 연산자¶
산술 연산자(arithmetic operator)는 사칙연산, 나머지, 제곱 등의 연산을 수행한다.
- +, -, *, / (사칙연산)
- % (나머지)
- // (정수 나눗셈)
- ** (제곱)
In [1]:
a = 15
b = 4
a + b, a - b, a * b, a / b
Out[1]:
In [2]:
# a를 b로 나눈 나머지
a % b
Out[2]:
In [3]:
10.5 // 3.5
Out[3]:
In [4]:
2 ** 10
Out[4]:
부울 연산자¶
부울 연산자 (boolean operator 혹은 논리 연산)는 and, or, not 연산을 수행한다. 결과는 항상 True 혹은 False 이다.
- and, or, not
In [5]:
True and False
Out[5]:
In [6]:
not False
Out[6]:
비교 연산자¶
비교 연산자 (Comparison operators)는 두 대상의 대소비교 혹은 같은지 여부를 비교한다. 연산의 결과는 항상 True 혹은 False 이다
-
>
(크다),<
(작다),>=
(크거나 같다),<=
(작거나 같다) -
!=
(다르다),==
(같은 값인가),is
(같은 객체인가)
In [7]:
1 > 2
Out[7]:
In [8]:
print( 10 > 3 )
print( 20 != 20 )
print( 17 < (118 %100) )
==
연산자는 값을 비교, is
연산자 동일한 객체인지 비교한다.
In [9]:
print( [10, 20] == [10, 20] )
print( [10, 20] is [10, 20] )
문자열¶
작은 따옴표(' single quote) 혹은 큰 따옴표(" double quote)로 표현
In [10]:
s = 'Hello, Python!'
type(s)
Out[10]:
In [11]:
print("Hello, 'Python'!")
print('Hello, "Python"!')
탭 문자(\t), 리턴 문자(\n) 등 타이핑해서 입력할 수 없는 특수 문자들을 역슬래시(\)문자와 함께 표시하여 사용할 수 있다. 이를 이스케이프 문자열(escape sequence)라고 한다.
In [12]:
# new line(\n) 문자
s = "Hello, \nPython!"
print(s)
In [13]:
# 문자열 연결(덧셈)
s = "Hello" + ", World"
print(s)
s = "Hello"
s += ", World"
print(s)
In [14]:
# 문자열의 길이
s = "Hello, Python!"
len(s)
Out[14]:
문자열 슬라이스¶
- 문자열중의 부분을 지정하기 위해 s[인덱스] 형식으로 사용할 수 있으며, "인덱스"는 0부터 시작한다.
- s[시작:끝]으로 문자열을 잘라(slice)낼 수 있다. "끝"은 포함되지 않는다.
- s[시작:끝] 형식을 사용할 때 시작, 끝을 지정하지 않을 수도 있다. "시작"을 지정하지 않으면 '처음부터', "끝"을 지정하지 않으면 '끝까지'라는 의미가 된다.
In [15]:
s = "Hello, Python!"
print(s[0])
print(s[4])
print(s[:])
print(s[0:5])
print(s[7:9])
print(s[-1])
print(s[-5:-1])
문자열 자르기와 바꾸기¶
- s.split() 함수는 문자열s 를 공백 문자를 기준으로 잘라 그 결과를 리스트로 반환한다.
- s.replace(현재문자열, 대체문자열) 함수는 문자열 s에 있는 '현재문자열'을 '대체문자열'로 바꾼다.
In [16]:
# 문자열 분리(split)
s = "화학,출판,전기제품,제약,은행"
s.split(',')
Out[16]:
In [17]:
sectors = ['화학', '출판', '전기제품', '제약', '은행']
"|".join(sectors)
Out[17]:
In [18]:
# 문자열 대체 (replace)
s = "Hello, Python!"
w = s.replace('Python', 'World')
w
Out[18]:
In [19]:
s = '<img width="300" src="http://i.imgur.com/tHmNhjm.png">'
print( s.replace('<', '<').replace('>', '>').replace('"', '"') )
if, elif, else¶
조건에 따라 실행을 달리하기 위한 문으로 if, elif, else 가 있다
In [20]:
ret = 0.1
if ret > 0.0:
print("상승")
print('같은 레벨의 들여쓰기로로 블럭을 구분합니다')
else:
print("하락")
In [21]:
# True/False를 상승 여부로 가정
# stock01, stock02 True 혹은 False 할당을 바꾸어가면서 실행해보자
stock01 = False
stock02 = True
if stock01:
print("stock01 상승")
elif stock02:
print("stock02 상승")
else:
print("stock01 하락, stock02 하락")
In [22]:
stock01 = True
stock02 = True
if stock01:
if stock02:
print("stock01 상승, stock02 상승")
들여쓰기¶
- 파이썬에서 들여쓰기는 매우 중요하다.
- 같은 칸을 들여쓴 연속된 문장들을 들여쓰기 블럭이라고 한다.
- 블럭 중간에 공백 라인도 가능하다. 하지만, 들여쓰기 레벨이 달라지면 달라지면 다른 블럭으로 인식된다.
In [23]:
if False:
print("문장01")
print("문장02")
print("문장03")
In [24]:
if True:
print("문장01")
print("문장02")
In [25]:
if True:
print("문장01")
print("문장02")
반복문¶
- 주로 while과 for가 있는데 절대적으로 for를 많이 사용한다.
- for 문은 주로 순회 가능한 객체(iterable object)와 함께 사용한다. list, range 등을 for 문과 함께 자주 사용한다.
In [26]:
values = [1,2,3]
for x in values:
print(x)
파이썬의 range는 지정한 범위의 정수를 발생시키는데 for 문과 함께 많이 사용한다.
보통 range(시작,끝) 형식으로 사용하는 정수 범위를 만들어낸다. '끝'은 포함되지 않는다.
In [27]:
range(10) # 0~9 (0에서 시작, 10은 미포함)
range(1, 10) # 1~9
range(10, 20, 2) # 10~19, 2씩 건너뛰어서
Out[27]:
list()를 사용하여 리스트로 변환할 수 있다.
In [28]:
print(list(range(10)))
print(list(range(1, 10)))
print(list(range(10, 20, 2)))
In [29]:
for x in range(4):
print(x, end=', ' )
In [30]:
for x in range(-2,2):
print(x, end=', ' )
In [31]:
for idx, x in enumerate(range(-3,3)):
print(idx, x)
목록 조건제시법¶
목록 조건제시법 (list comprehension)을 사용하면 축약된 형식으로 리스트를 생성할 수 있다.
-
[for ... in ... ]
형식으로 새로운 리스트를 생성하는데 주로 사용한다. - 간편하고 축약된 방식으로 표현할 수 있다
In [32]:
# 1~9까지 각 수의 제곱
lst = list(range(1, 19))
lst
Out[32]:
In [33]:
[x ** 2 for x in lst]
Out[33]:
In [37]:
even_squares = [x ** 2 for x in range(1, 11) if x % 2 == 0]
even_squares
Out[37]:
In [34]:
count = 0
while count < 5:
print ("count: ", count)
count += 1
In [35]:
tech_stocks = ['AAPL', 'GOOGL', 'AMZN', 'FB']
for i in tech_stocks:
print(i)
In [36]:
for i in range(0, 100, 20):
print(i)
댓글
Comments powered by Disqus