Python Basics for Data Science - PART 3
Python Basics for Data Science - PART 3¶
( 파이낸스 데이터 사이언스를 위한 파이썬 언어 기초 )
자료구조: 리스트, 튜플, 딕셔너리¶
2017 FinanceData http://fb.com/financedata¶
자료구조¶
- 리스트 (list)
- 튜플 (tuple)
- 딕셔너리 (dict)
리스트 (list)¶
[] 대괄호로 표현한다 (bracket 브라켓이라고 읽는다)
리스트는 문자열과 매우 유사하다. 각 요소는 어떤 객체여도 상관없다. 심지어 리스트로 하나의 요소가 될 수 있다. 예를 들어,
ls = ['hello', 10, 20, [1, 2, 3]]
In [1]:
type([])
Out[1]:
In [2]:
# 리스트
stocks = ['삼성전자', '현대차', '네이버' ]
print(type(stocks))
print(stocks[0])
In [3]:
# 요소 값 변경
stocks[2] = 'NAVER'
print(stocks)
In [4]:
# 리스트에 추가
stocks = ['삼성전자', '현대차', 'NAVER' ]
stocks.append('한국전력')
stocks.append('현대모비스')
print(stocks)
In [5]:
# 리스트 슬라이싱 (0부터 시작, n-1)
stocks = ['삼성전자', '현대차', 'NAVER', '한국전력', '현대모비스']
print(stocks[0:3])
print(stocks[2:3])
print(stocks[4:])
print(stocks[-1])
In [6]:
관심종목 = ['삼성전자', '현대차', 'NAVER', '한국전력', '현대모비스']
print(관심종목)
# 요소 위치(index) 얻기
print(관심종목.index('현대차'))
# 요소 삽입(insert)
관심종목.insert(1, 'SK하이닉스')
print(관심종목)
# 요소 삭제(remove)
관심종목.remove('현대모비스')
print(관심종목)
In [7]:
for 종목 in 관심종목:
print(종목)
리스트를 소트(sort) 할 수 있다. reverse 인자를 True로 주면 역순으로 소트한다.
In [8]:
print(관심종목)
관심종목.sort(reverse=True)
print(관심종목)
In [9]:
nums = list(range(5) )
print (nums)
print (nums[2:4])
print (nums[2:]) # 끝까지
print (nums[:2])
print (nums[:])
print (nums[:-1]) # 마지막을 제외하고 전체
In [10]:
#루프에 인덱스 숫자 매기기 (enumerate)
lst = ['A', 'B', 'C', 'D', 'E']
for i, item in enumerate(lst):
print (i, item)
In [11]:
# 리스트는 덧셈으로 간단하게 병합(merge)할 수 있다.
관심종목01 = ['삼성전자', 'SK하이닉스']
관심종목02 = ['현대차', 'NAVER', '한국전력']
관심종목 = 관심종목01 + 관심종목02
print(관심종목)
관심종목 += ['아모레퍼시픽']
print(관심종목)
튜플 (tuple)¶
튜플: 요소의 값을 변경할 수 없다(immutable)는 점만 제외하고 리스트와 완전히 동일하다.
마치 괄호로 만들어지는 것 처럼 보이지만 ',' 로 만들어진다
In [12]:
t = 1, 2, 3, 4
print(t)
print(type(t))
print(t[1])
튜플은 리스트와 사용법은 같다. 단, 튜플이 한번 만들어지면 요소의 값을 바꾸거나 추가 혹은 삭제할 수 없다.
t = (1, 2, 3, 4)
t[0] = 10 # 에러 발생
del t[0] # 에러 발생
딕셔너리 (dict)¶
{} 중괄호 (brace, 브레이스라고 읽는다)로 표현한다. 하나의 요소는 '키:값' 으로 표현한다.
In [13]:
type({})
Out[13]:
In [14]:
stocks = {'삼성전자' : '005930', 'SK하이닉스' : '000660', '현대차' : '005380'}
# 추가
stocks['NAVER'] = '035420'
print(stocks)
# 삭제
del stocks['현대차']
print(stocks)
키(key)와 값(value)는 무엇이든 될 수 있다.
In [15]:
# 키는 (1,0,4) 튜플, 값은 'AAPL' 문자열
dic = { (1,0,4) : 'AAPL' }
dic
Out[15]:
In [16]:
stock = {
'name': '삼성전자',
'market': '코스피',
'close': [
('2017-03-15', 2070000),
('2017-03-14', 2068000),
('2017-03-13', 2030000),
],
'market-cap': 2919096,
'PER': 15.17,
}
print (stock['name'], stock['PER'])
print ("시가총액 %d (억원)" % stock['market-cap'])
In [17]:
for p in stock['close']:
print( "날짜: %s, 종가: %d"% p)
In [18]:
# 딕셔너리는 순서를 보장하지 않는다. (추가한 순서대로 보여지지 않는다)
corps = {}
corps['AAPL'] = 'AAPL Apple Inc.'
corps['GOOGL'] = 'Alphabet Inc.'
corps['GOOG'] = 'Alphabet Inc.'
corps['MSFT'] = 'Microsoft Corporation'
corps['AMZN'] = 'Amazon.com, Inc.'
In [19]:
corps
Out[19]:
In [20]:
# 딕셔너리를 for 루프로 순회
for c in corps:
print(c, ':', corps[c])
items()를 사용하여 순회하면서 key,value를 차례로 얻을 수 있다
In [21]:
for key, val in corps.items():
print (key, ':', val)
In [22]:
z = zip(['a', 'b', 'c'], ['d', 'e', 'f'])
list(z)
Out[22]:
In [23]:
# 종목(stock_list)과 시가총액(marcap_list) 데이터를 짝을 지워준다
stock_list = ['AAPL', 'GOOGL', 'MSFT', 'AMZN', 'FB']
marcap_list = [7541, 6556, 5429, 4607, 4296]
for stock, marcap in zip(stock_list, marcap_list):
print(stock, marcap)
댓글
Comments powered by Disqus