1 데이터 사이언스 자료형

파이썬을 설치하게 되면 The Python Standard Library에 표준 내장 자료형과 표준내장 함수, 표준내장 모듈이 있다.

  • 표준 내장 자료형: list, dict, tuple, set
  • 표준 내장 함수: print(), len(), range(), enumerate(), map(), zip()
  • 표준 내장 모듈: os, sys, itertools, collections, math

파이썬에는 값을 담아두는 컨테이너(Container) 자료형이 다수 존재한다. 크게 보면 값을 변경시킬 수 있는 리스트(list)와 집합(set)이 있고 값을 변경시킬 수 없는 튜플(tuple)로 나눌 수 있다.

2 리스트(list)

리스트(list)는 다음과 같은 특징이 있다.

  1. 리스트에 원소가 추가되는 순서대로 값들이 저장된다.
  2. 리스트 원소는 변경가능(mutable)하다.
  3. 색인(index)가 있다.

[, ]을 꺾쇠기호로 열고 닫아 리스트 객체를 생성시킨다. 생성된 리스트 객체에 .append() 메쏘드를 사용해서 추가로 리스트 객체를 추가한다.

데이터 사이언스 기능: ['데이터 조작', '시각화', '모형']
데이터 사이언스 기능: ['데이터 조작', '시각화', '모형', '커뮤니케이션']

리스트 객체 두개 featuresbiz_features를 결합시켜 새로운 리스트 객체를 생성시킬 경우 + 연산자를 사용하면 된다.

데이터 사이언스: ['데이터 조작', '시각화', '모형', '커뮤니케이션', '문제정의', '운영', '사업모형']

for 함수를 사용해서 리스트(features) 각 원소를 하나씩 뽑아낼 수도 있다.

데이터 조작
시각화
모형
커뮤니케이션

앞서 언급한 것처럼 리스트의 원소는 변경이 가능하다.

데이터 조작
Visualization
모형
커뮤니케이션

2.1 리스트 메쏘드

리스트 data_science 객체의 원소값에 접근하고자 할 경우 index() 메쏘드를 사용하여 숫자 위치를 파악한다. len() 함수를 사용해서 리스트 전체 크기를 파악할 수 있고, 0부터 시작되는 파이썬 색인 규칙에 따라 data_science.index('사업모형')을 통해 6번째 위치 즉 마지막에 위치함도 쉽게 파악하게 된다.

리스트 전체길이: 7, 사업모형 위치: 6

더불어 .append().remove() 메쏘드를 사용해서 리스트에 원소를 추가하고 삭제하는 것도 가능하다.

리스트 원소 추가: ['데이터 조작', 'Visualization', '모형', '커뮤니케이션', 'R']
리스트 원소 제거: ['Visualization', '모형', '커뮤니케이션', 'R']

.pop() 메쏘드를 사용하게 되면 리스트 원소를 뽑아낼 수 있고, .count() 메쏘드를 통해 원소 갯수도 셀수 있다.

'R'
리스트 잔존 원소: ['Visualization', '모형', '커뮤니케이션']
2

3 튜플(tuple)

튜플(tuple)은 리스트와 마찬가지로 값(value)을 다수 저장시킬 수 있지만 한번 생성된 튜플 내부 원소값은 변경시킬 수가 없다. 즉, 변경시킬 수 없는 immutable 자료구조로 ()으로 생성시키는데 순서가 있다. 튜플의 특징을 다음과 같이 요약할 수도 있다.

  1. 순서대로 원소값을 저장시킨다.
  2. index 색인이 있다.
  3. 원소값은 변경할 수 없다(immutable).
  4. 짝을 이뤄 pair형태로 되어 있다.
  5. 풀어낼 수가 없다.

3.1 튜플 생성

가장 단순하게 튜플을 생성시키는 방법은 괄호 (, )를 사용하여 문자열과 숫자를 순서대로 넣는 방식이다.

(1, 'ggplot', 2, 'dplyr', 3, 'caret'), 원소추출: ('ggplot', 2)

features 리스트와 packages 리스트 두개를 하나로 묶어 zip() 함수를 사용하게 되면 튜플 tuple객체 toolchain이 생성된다.

데이터 사이언스 툴체인: [('dplyr', '데이터 조작'), ('ggplot', '시각화'), ('broom', '모형')]

('ggplot', '시각화') 튜플의 두 값을 꺼네는데 먼저 zip으로 압축된 것을 list()를 씌워서 리스트로 빼내고 색인 [1]을 걸어 두 변수에 각각 할당시킨다.

팩키지: ggplot, 기능: 시각화

하지만 튜플 원소는 변경할 수 없기 때문에 값을 변경시키게 되면 오류가 생성된다.

Error in py_call_impl(callable, dots$args, dots$keywords): TypeError: 'tuple' object does not support item assignment

Detailed traceback: 
  File "<string>", line 1, in <module>

4 집합(set)

집합(set)은 수학의 집합이론을 파이썬으로 구현한 것이다. 즉, 집합 자료구조는 중복된 값이 없는 유일무이한 순서없는 원소로 구성된 집합체다. 파이썬 집합 자료구조는 다음 특징을 갖추고 있다.

  1. 순서가 없다.
  2. 집합 원소는 유일무이하다.
  3. 원소값을 변경할 수 있다(mutable).
대한민국 --> 리스트 크기: 6, 집합 크기: 5
북한     --> 리스트 크기: 7, 집합 크기: 5

집합원소 추가, 삭제, 갱신을 할 경우 .update(), .add(), .discard() 메쏘드를 사용한다.

대한민국: {'한국어', '민주주의', '한반도', '한라산', '자본주의', '수정자본주의'}
대한민국: {'한국어', '민주주의', '한반도', '한라산', '자본주의'}
대한민국: {'한국어', '민주주의', '한반도', '한라산', '자본주의', '설악산', '서울'}

4.1 집합 연산

집합 자료구조를 갖추게 되면 백미는 친숙한 집합 연산 작업을 수행함에 있다.

  • .ution() 메쏘드: 합집합, \(\cup\)
  • .intersectin() 메쏘드: 교집합, \(\cap\)
  • .diff() 메쏘드: 차집합, \(\setminus\)
통일한국 합집합: {'공산주의', '한국어', '민주주의', '한반도', '사회주의', '한라산', '자본주의', '전체주의', '설악산', '서울'}
통일한국 교집합: {'한반도', '한국어'}
통일한국 차집합 A: {'민주주의', '한라산', '자본주의', '설악산', '서울'}
통일한국 차집합 B: {'전체주의', '사회주의', '공산주의'}

5 딕셔너리 (dictionary)

파이썬의 뿌리는 딕셔너리 (dictionary)라고 해도 과언은 아니다. 딕셔너리 키는 유일무이하며 변경될 수 없는 제약조건을 충족해야 된다. 딕셔너리 (dictionary) 자료구조는 다음 특징을 갖추고 있다.

  1. 키값(key-value)로 짝을 이뤄 데이터가 저장되어 있다.
  2. 딕셔너리를 중합(nestable)할 수 있다.
  3. iterable 반복자를 갖는 대표적인 자료구조다.
  4. dict() 혹은 {}을 사용해서 생성함.

먼저 {} 으로 ds_dict 텅빈 딕셔너리 객체를 하나 생성시킨다. 그리고 키로 packages, 값으로 features를 염두에 두고 ds_dict[feature] = package 명령어로 딕셔너리를 for 루프를 돌려 생성시킨다. 그리고 나서 ds_dict 딕셔너리에서 feature를 출력시킨다.

키(key) 값(value)
dplyr “데이터 조작”
ggplot “시각화”
broom “모형”
dplyr, 데이터 조작
ggplot, 시각화
broom, 모형
키: dplyr, 값:데이터 조작
키: ggplot, 값:시각화
키: broom, 값:모형

.get() 메쏘드를 통해서 키(‘ggplot’)로 ’시각화’를 찾아내고, .keys() 메쏘드로 딕셔너리 전체 키와 .values() 메쏘드로 딕셔너리 전체 값을 찾아낼 수 있다.

'시각화'
dict_keys(['dplyr', 'ggplot', 'broom'])
dict_values(['데이터 조작', '시각화', '모형'])

5.1 딕셔너리 활용

앞서 보왔듯이 딕셔너리에 .items() 메쏘드를 사용해서 키, 값을 뽑아낼 수 있다.

키: dplyr, 값:데이터 조작
키: ggplot, 값:시각화
키: broom, 값:모형

조건문(conditional)과 결합하여 ds_dict 딕셔너리에 특정값이 존재하는지도 확인할 수 있다.

 ggplot 기능: 시각화

5.2 .csv 파일 불러읽기 1

csv.reader().csv 파일을 불러오게 되면 튜플로 불러오게 되는데 딕셔너리로 불러오고자 하는 경우 csv.DictReader() 메쏘드를 사용한다.

OrderedDict([('name', 'A'), ('miles', ' 10'), ('country', ' USA')])
OrderedDict([('name', 'B'), ('miles', ' 30'), ('country', ' UK')])
OrderedDict([('name', 'C'), ('miles', ' 4'), ('country', '  IT')])
OrderedDict([('name', 'A'), ('miles', ' 20'), ('country', ' UK')])
OrderedDict([('name', 'B'), ('miles', ' 10'), ('country', ' USA')])

6 자료구조간 변환

자료구조간 변환은 다음과 같다.

6.1 두 리스트 → 딕셔너리 2

리스트 두개 즉, 문자열 키(key)와 숫자 값(value)을 갖는 리스트를 딕셔너리로 변환시키려면 zip()으로 묶고 dict()으로 변환시켜야 된다.

{'김현수': 56, '박상용': 23, '이정훈': 43, '최학수': 97, '최병규': 43}

6.2 튜플 리스트 → 딕셔너리

두개의 튜플 리스트를 딕셔너리로 변환시키는 방법은 dict() 함수를 사용하면 된다.

{'김현수': 56, '박상용': 23, '이정훈': 43, '최학수': 97, '최병규': 43}

6.3 딕셔너리 → 리스트

딕셔너리를 리스트로 변환시키려면 전체를 리스트로 변환시키려면 .items() 메쏘드를 사용하고 키만 추출하여 리스트로 변환시키려면 .keys(), 값만 추출하여 리스트로 반환시키려면 .values() 메쏘드를 사용한다.

튜플 리스트: dict_items([('김현수', 56), ('박상용', 23), ('이정훈', 43), ('최학수', 97), ('최병규', 43)])
키(key) 리스트: dict_keys(['김현수', '박상용', '이정훈', '최학수', '최병규'])
값(value) 리스트: dict_values([56, 23, 43, 97, 43])