1 of 320

㈜잇플ITPLE

2 of 320

3 of 320

개발환경 설치

Chapter 1

4 of 320

아나콘다 설치

5 of 320

  • 개발 툴로 주피터 노트북(Jupyter Notebook)을 사용하면 인터넷 브라우저 창에서 개발할 수 있고 마크다운으로 문서로 만들어 공부한 내용을 보관할 수 있다

  • 작성된 파일은 웹브라우저에서 소스 등을 그대로 볼 수 있으므로 주피터 노트북으로 파일을 작성해서 공유할 수 있다

  • 유명 프로그래밍 공유 사이트인 ‘깃허브’에서도 주피터 노트북으로 작성된 파일을 많이 공유

주피터 노트북 설치하기

데이터 사이언스 입문

6 of 320

  • 다운로드 주소 : https://docs.anaconda.com/anaconda/install/windows/

아나콘다 설치-1

데이터 사이언스 입문

7 of 320

  • 다운로드 주소 : https://docs.anaconda.com/anaconda/install/windows/

아나콘다 설치-2

데이터 사이언스 입문

8 of 320

주피터노트북

9 of 320

  • 윈도우 시작메뉴에서 아나콘다 네이비게이터를 실행한 후에 주피터노트북을 실행시킨다.

주피터 노트북 열기-1

데이터 사이언스 입문

10 of 320

주피터 노트북 열기-2

  • 브라우저에 주피터노트북 메인 화면이 보인다

데이터 사이언스 입문

11 of 320

노트북 파일 만들기

  • New 버튼을 눌러 Python3를 선택해서 새로운 ipynb 을 만든다

데이터 사이언스 입문

12 of 320

ipynb 파일 이름 바꾸기

  • ipynb 파일에 Untitled 을 클릭하면 제목을 수정하는 팝업이 뜬다.
  • 제목을 붙이고 rename 버튼을 누르면 파일이름이 변경된다

데이터 사이언스 입문

13 of 320

개발 파일 보관하기

  • New Windows 탐색기로 파이썬 파일을 저장할 폴더를 <내PC/문서/Python_study>로 만듭니다.

데이터 사이언스 입문

14 of 320

아나콘다를 다운로드하려면 아래의 주소를 입력하거나 검색 창에서 anaconda download를 입력

아나콘다 설치하기

데이터 사이언스 입문

15 of 320

개발 디렉토리 이동하기

  • 주피터노트북에서 해당 디렉토리로 이동한다.

데이터 사이언스 입문

16 of 320

주피터 노트북에 <In>으로 표시된 셀에 100을 입력하고 위에 있는 [Run] 버튼을 클릭

파이썬 실행해 보기

데이터 사이언스 입문

17 of 320

  • 실행하면 결과가 <Out>에 나타난다
  • 셀은 코드를 넣고 실행하는 장소

파이썬 실행해 보기

데이터 사이언스 입문

18 of 320

수동 완성형 지원받기

  • Sys 모듈을 import 한다. Sys 모듈의 속성이 이름을 두 글자를 적고 탭(tab) 키를 누르면 두 개의 이름을 보여준다. 그중에 versio을 선택 한 후에 실행한다.(shitf + enter 키를 동시에 누른다.)

데이터 사이언스 입문

19 of 320

메뉴에 있는 + 버튼을 누른다.

빈 셀을 추가하기

데이터 사이언스 입문

20 of 320

파이썬 모듈

21 of 320

  • 머신러닝과 딥러닝 스택 중에 이 책에서 다루는 주요한 모듈은 Numpy, Pandas, Matplotlib과 scikit-learn이다. 딥러닝은 tensorflow, pytorch를 많이 사용한다.

파이썬 주요 모듈

데이터 사이언스 입문

22 of 320

  • 모듈 sys를 import한다. 변수 version_info를 실행하면 파이썬 버전을 major, minor, micro로 표시한다.
  • 현재 anaconda는 3.7 버전이지만 웹 개발이 가능한 버전은 3.8이다.

파이썬 버전 확인

데이터 사이언스 입문

23 of 320

  • 데이터 분석 기본 모듈은 넘파이와 판다스의 설치 버전을 확인한다.
  • 넘파이는 약어로 np, 판다스는 약어로 pd를 사용한다.

파이썬 버전 확인

데이터 사이언스 입문

24 of 320

  • 3개의 시각화 모듈의 버전을 확인한다.
  • 파이선 모듈의 버전 정보는 변수 __version__ 에 관리한다.

파이썬 버전 확인

데이터 사이언스 입문

25 of 320

  • 머신러닝 모듈의 버전을 확인한다.

파이썬 버전 확인

데이터 사이언스 입문

26 of 320

파이썬 기본

Chapter 2

27 of 320

파이썬 변수와 기본 문장

28 of 320

  • 변수는 알파벳 ,언더스코어(_), 숫자를 조합해서 지정한다.
  • 변수는 첫글자는 항상 알파벳과 언더스코어만 올 수 있다.

변수 정의

데이터 사이언스 입문

29 of 320

  • 변수var를 정의하면 이 변수가 저장되는 공간이 있다. 이를 이름공간이라고 한다.
  • 함수 globals를 실행하면 변수가 저장된 이름공간을 조회한다.

이름공간 알아보기

데이터 사이언스 입문

30 of 320

  • 변수에 데이터 타입을 추가할 수 있다. 이를 타입힌트라고 한다.
  • 파이썬은 변수에 할당하지 않으면 변수가 만들어지지 않는다. 단순하게 타입을 지정하는 것은 하나의 주석으로 인식한다

변수 타입 지정

데이터 사이언스 입문

31 of 320

  • 제어문은 특정 조건에 일치여부에 따라 내부에 있는 로직(코드)를 실행한다.
  • 예약어 if, elif, else 로 정의하고 블록구분은 콜론(:)을 지정해서 사용한다.

단순 제어문

데이터 사이언스 입문

32 of 320

  • 제어문에 블록 구분이 콜론을 사용하지 않고 하나의 문장 즉 인라인(inline)으로 작성하면 삼항연산자로 처리한다.
  • 이때 if 조건이 참인 처리를 맨 앞에 작성해서 처리한다.

인라인 제어

데이터 사이언스 입문

33 of 320

  • 동일한 문장을 연속해서 처리할 때 순환문을 사용한다.
  • 순환문 for는 반복적인 객체을 넣어서 원소 하나씩 꺼내서 처리하는 구조이다.
  • 순환문에 range(1,5)로 지정한 것은 1부터 4까지 숫자를 원소를 가지는 객체라는 표시이다.

순환문 - for

데이터 사이언스 입문

34 of 320

  • 특정 조건이 만족할 때까지 같은 문장을 처리하는 것을 while 순환문이다.
  • 5미만까지의 조건이 만족할 때까지 순환해서 처리하는 방식이다.

순환문 - while

데이터 사이언스 입문

35 of 320

파이썬 함수

36 of 320

  • 예약어 def와 함수 이름 그리고 매개변수를 정의한다.
  • 함수 내부의 로직은 콜론 다음 라인에 들여쓰기한다.
  • 함수는 먼저 정의를 해야 사용할 수 있다.

함수 정의

데이터 사이언스 입문

37 of 320

  • 함수를 정의한 이름과 매개변수와 일치하는 인자를 전달해서 함수를 호출한다.
  • 함수 호출은 함수를 실행하는 것이다.
  • 함수 호출한 결과는 특정 값이라 변수에 할당할 수 있다.

함수의 호출

데이터 사이언스 입문

38 of 320

  • 함수 정의할 때 함수 이름을 지정했다. 이 이름으로 함수도 변수처럼 이름공간에 저장된다.
  • 이름공간에서 함수 이름으로 조회하면 정의된 함수를 조회한다.

함수도 이름공간에 저장

데이터 사이언스 입문

39 of 320

함수 내부의 이름공간

  • 함수를 정의하면 내부에 이름공간이 생긴다. 이를 지역 이름공간이라 부른다.
  • 또한 함수를 정의할 때 초기값을 지정하면 초기값도 별도로 관리한다.

데이터 사이언스 입문

40 of 320

  • 함수 호출할 때 인자를 전달하면 지역이름공간에 매개변수와 인자가 저장된다.
  • 매개변수와 인자가 일치하지 않을 경우는 초기값을 그대로 사용한다.

함수 호출시 인자 전달

데이터 사이언스 입문

41 of 320

가변 위치인자

  • 함수를 정의할 때 매개변수가 미확정일 때는 별표를 args 앞에 사용해서 여러 개의 인자를 받을 수 있도록 지정한다.
  • 함수를 호출할 때는 쉼표로 구분해서 인자를 전달할 수 있다.
  • 인자는 튜플로 전달된다.

데이터 사이언스 입문

42 of 320

  • 매개변수 이름과 값을 매핑해서 전달할 때 키워드 인자를 사용한다.
  • 여러 개의 키워드 인자를 전달할 때 별표를 두 개 붙여서 지정한다.
  • 가변 키워드인자는 별도의 딕셔너리 자료형으로 저장된다

가변 키워드 인자

데이터 사이언스 입문

43 of 320

가변인자를 연결해서 사용하기

  • 함수를 정의할 때 가변 위치와 가변 키워드를 연결할 때는 키워드 인자 앞에 위치인자를 순서에 맞춰 정의한다.
  • 함수를 호출할 때도 정의된 기준에 맞게 인자를 전달한다.

데이터 사이언스 입문

44 of 320

파이썬 클래스와 객체

45 of 320

  • 예약어 class 와 클래스 이름 그리고 상속 관계를 정의한다.
  • 객체 초기화 함수 __init__ 내에 객체 속성을 정의
  • 객체가 사용하는 메소드를 정의한다.

클래스 정의

데이터 사이언스 입문

46 of 320

객체 생성 및 활용하기

  • 객체의 생성은 클래스를 호출할 때 __init__ 내의 매개변수에 해당하는 인자를 전달한다. 이때 self 는 제외한다.
  • 객체가 만들어지면 내부 속성과 메소드를 호출이 가능하다.

데이터 사이언스 입문

47 of 320

클래스와 객체의 관계

  • 클래스가 객체를 생성한다. 이런 관계를 isinstance 함수로 확인할 수 있다.

데이터 사이언스 입문

48 of 320

클래스 내부 확인하기

  • 클래스 내부에 정의된 모든 것은 __dict__ 이름공간 내에 저장된다.
  • __dict__는 딕셔너리이므로 키와 값으로 구성된다.
  • 클래스 정의할 때 __init__과 getName을 지정했지만 클래스가 만들어질 때 기본 구성이 추가된 것을 알 수 있다.

데이터 사이언스 입문

49 of 320

  • 클래스 이름으로 __init__을 조회하면 함수로 인식한다.
  • 클래스에서 __init__을 실행할 때는 self 자리에 객체를 인자로 전달해야 한다.
  • 실제 객체 내의 속성이 변경되는 것은 __init__ 이 하는 것이 초기화 즉 값을 변경하는 역할만 한다.

함수와 메소드 구분하기-1

데이터 사이언스 입문

50 of 320

  • 객체에서 __init__을 조회하면 메소드이다.
  • 이 __init__은 메소드로 변환되어 이를 실행할 때는 self 에 인자를 전달하지 않는다. 메소드가 실행된 결과도 변경된 것을 알 수 있다.

함수와 메소드 구분하기-2

데이터 사이언스 입문

51 of 320

파이썬 내장 숫자 클래스

52 of 320

  • 변수에 정수나 실수를 할당한다.
  • 이 정수(실수)도 int (float)클래스의 객체이다. Isinstance 함수로 확인하면 int (float)클래스의 객체라는 것을 알 수 있다.

숫자도 하나의 객체

데이터 사이언스 입문

53 of 320

  • 파이썬은 모든 것을 객체로 본다. 그래서 각각의 객체들을 만드는 클래스를 가지고있다.
  • 숫자 클래스로 객체를 생성하면 일반적인 숫자를 표시하는 것과 동일하게 처리된다.

숫자 클래스로 객체를 생성

데이터 사이언스 입문

54 of 320

문자열 클래스

55 of 320

  • 파이썬 문자열은 유니코드와 바이트 문자열 2개가 있다
  • 유니코드 문자열은 유니코드 문자체계를 따르는 방식이고 바이트 문자열은 모든 문자를 한 바이트로 처리하는 방식이다.
  • 두 문자열이 차이점은 바이트 문자열인 경우 문자열 표시 앞에 소문자 b를 붙인다.

리터럴 문자열 표기

데이터 사이언스 입문

56 of 320

  • 유니코드 문자열(str), 바이트 문자열(bytes)이다.
  • 리터럴 표기로 만든 문자열도 이 두 클래스의 객체 여부를 isinstance 함수로 확인할 수 있다.

문자열 클래스 확인하기

데이터 사이언스 입문

57 of 320

  • 문자열 내부의 문자를 조회할 때 색인을 사용한다.
  • 색인은 대괄호 내에 정수를 사용한다. 문자열 내의 문자를 가져오려면 문자의 위치를 대괄호 내에 표시한다.
  • 좌측에서 우측으로 조회할 때는 0부터 양수를 사용하고 우측에서 좌측으로 조회할 때는 -1부터 음수를 사용한다

색인 알아보기

데이터 사이언스 입문

58 of 320

  • 모든 문자열 객체는 변경할 수 없다.
  • 문자열을 변경하면 할당 기능을 지원하지 않는 것을 알 수 있다.

문자열은 변경할 수 없다

데이터 사이언스 입문

59 of 320

문자열 암호화

  • 유니코드 문자열을 바이트 코드 문자열로 변환하는 것을 암호화라고 한다.
  • 유니코드 문자열 내의 encode 메소드를 실행해서 변환한다.
  • 바이코드 문자열로 변환되면 \x 다음에 16진수로 문자로 표시된다.

데이터 사이언스 입문

60 of 320

문자열의 복호화

  • 바이트 문자열을 유니코드 문자열로 변환하는 것을 복호화라고 한다.
  • 바이트 문자열 내의 decode 메소드로 변환한다.
  • 한글일 경우 바이트 문자열로 변환할 때는 초성, 중성, 종성 3바이트로 분리된 것을 볼 수 있었다. 다시 복호화되면 결합된 문자로 표시되는 것을 볼 수 있다.

데이터 사이언스 입문

61 of 320

배열 데이터

Chapter 3

62 of 320

파이썬 리스트 클래스

63 of 320

  • 시퀀스 클래스의 객체는 원소 별로 하나의 위치 정보인 인덱스를 가지고 있다.
  • 추상클래스인 Sequence , MutableSequence 클래스를 확인한다.
  • 검색, 갱신연산은 __getitem__ , __setitem__이다. 이중에 갱신연산이 있는 경우만 내부 원소를 변경할 수 있다.

시퀀스 클래스 색인 알아보기

데이터 사이언스 입문

64 of 320

  • Sequence 클래스를 상속해서 lits 클래스를 만들었는지를 issubclass 함수로 확인할 수 있다.
  • 리스트는 갱신할 수 있으므로 MutableSequence 클래스를 상속해서 구현한 것을 알 수 있다.

리스트와 시퀀스 클래스 관계 확인

데이터 사이언스 입문

65 of 320

  • 리스트 클래스로 객체를 생성할 수 있다.
  • 리스트의 특징은 내부에 다양한 자료형의 원소를 받을 수 있다.
  • 리스트 클래스와 객체의 생성관계는 isinstance 함수로 확인할 수 있다.

리스트로 객체 생성

데이터 사이언스 입문

66 of 320

  • 양의 방향 인덱스는 0부터 시작해서 1씩 증가한다.
  • 음의 방향 인덱스는 -1부터 시작해서 -1씩 감소한다.

인덱스 정보

데이터 사이언스 입문

67 of 320

  • 인덱스의 범위를 벗어난 조회는 예외를 발생시킨다.
  • 인덱스로 검색할 대는 항상 인덱스 범위 즉 리스트의 길이보다 -1만큼 감소한 것을 조회해야 마지막 원소를 찾는다.

인덱스의 범위

데이터 사이언스 입문

68 of 320

  • 하나의 원소를 추가할 때는 append 메소드 사용하고, 여러 개의 원소를 추가할 때는 extend 메소드를 사용한다.
  • 이 두 메소드는 마지막 위치에 원소를 추가한다.

리스트 원소 추가하기

데이터 사이언스 입문

69 of 320

  • 마지막 인덱스를 삭제하는 pop메소드와 실제 원소의 값으로 삭제하는 remove 메소드가 있다.
  • 삭제하면 인덱스는 자동으로 재조정된다.

리스트 원소 삭제하기

데이터 사이언스 입문

70 of 320

  • 리스트의 특정 위치에 원소를 추가할 때는 insert 메소드를 사용한다.
  • 특정 위치의 원소를 삭제할 때는 pop 메소드에 인자로 인덱스 정보를 지정한다.

리스트 인덱스 지정 원소 추가/삭제

데이터 사이언스 입문

71 of 320

  • 리스트 인덱스 검색하면서 값을 할당하면 지정된 위치의 원소가 변경된다.
  • 또한 리스트를 검색한 것을 예약어 del로 삭제하면 그 원소가 삭제된다.

리스트 연산자/예약어로 변경/삭제

데이터 사이언스 입문

72 of 320

  • 리스트의 여러 원소를 검색할 때는 슬라이스를 사용해서 검색한다.
  • 리스트를 슬라이싱하면 부분 리스트가 생성된다.
  • 슬라이싱 처리결과은 원본과 다른 복사본으로 만들어진다.

리스트 슬라이싱

데이터 사이언스 입문

73 of 320

배열(array) 모듈의 배열

74 of 320

  • C 언어의 배열을 파이썬에서는 array 모듈로 지원한다.
  • 배열을 array 함수에 타입코드를 인자로 전달을 받아서 만든다.
  • 배열은 하나의 자료형 원소들로 구성된다.

배열 객체 생성하기

데이터 사이언스 입문

75 of 320

  • 배열은 MutableSequence 클래스를 상속하지 않고 만들어졌다.

배열 상속관계 확인

데이터 사이언스 입문

76 of 320

  • 배열에 대한 정보를 확인할 수 있다.

배열 속성 확인

데이터 사이언스 입문

77 of 320

  • 배열의 원소 검색은 리스트와 동일한 방식을 사용한다.
  • 인덱스 범위도 벗어나면 처리가 안되는 것도 동일하다.

배열 원소 검색 및 범위

데이터 사이언스 입문

78 of 320

  • 하나의 원소는 append, 여러 개의 원소는 extend 메소드를 사용한다.
  • 배열을 tolist 메소드로 리스트로 변환한다. , 배열을 바이트로 변환할 때는 tobytes 메소드를 사용한다.

배열 원소 추가 및 리스트 변환

데이터 사이언스 입문

79 of 320

  • 특정 위치는 insert 메소드로 추가 가능하다. 마지막 위치는 pop 메소드로 삭제할 수 있다.

배열 특정 위치 추가 및 삭제

데이터 사이언스 입문

80 of 320

  • 특정 위치는 insert 메소드로 추가 가능하다. 마지막 위치는 pop 메소드로 삭제할 수 있다.

배열 특정 위치 추가 및 삭제

데이터 사이언스 입문

81 of 320

  • 배열도 리스트 처럼 덧셈연산자로 두 배열을 하나로 합칠 수 있다.
  • 곱셈연산자를 사용하면 동일한 원소가 정수 배만큼 만들어진다.

배열 연산 기호 사용

데이터 사이언스 입문

82 of 320

넘파이 모듈의 다차원 배열

83 of 320

  • 넘파이 모듈을 import 한다.
  • 넘파이 모듈의 버전을 __version__으로 확인한다.

넘파이 모듈 사용하기

데이터 사이언스 입문

84 of 320

  • 다차원 배열은 array 함수에 리스트나 튜플 등의 인자를 전달해서 객체를 만든다.
  • 만들어진 배열을 출력하면 리스트와 달리 원소들 사이에 쉼표가 없다.

넘파이 모듈로 다차원배열 만들기

다양한 차원의 다차원 배열

데이터 사이언스 입문

85 of 320

  • MutalbeSequence 클래스를 상속하려면 모든 추상 메소드를 구현해야 한다.
  • 다차원 배열(ndarray) 클래스를 확인하면 insert 메소드가 구현되어 있지 않는 것을 알 수 있다.

다차원 배열의 상속관계

데이터 사이언스 입문

86 of 320

  • 다차원 배열은 하나의 자료형, 차원, 모양, 개수 등의 정보를 관리하는 속성을 가지고 있다.

다차원 배열의 메타 속성

데이터 사이언스 입문

87 of 320

  • 다차원 배열은 데이터를 관리하는 별도 속성도 있다.
  • 리스트로 변환하는 tolist 메소드도 제공한다.

다차원 배열의 데이터 속성

데이터 사이언스 입문

88 of 320

  • 리스트와 달리 다차원 배열은 하나의 자료형의 원소만을 가진다.
  • 다차원 배열의 자료형을 관리하는 클래스 dtype이 별도로 있다.
  • 또한 숫자 자료형도 바이트 단위로 구별되어 관리한다.
  • 자료형 객체 내부에 자료형에 대한 정보를 관리한다.

다차원 배열의 자료형 알아보기

데이터 사이언스 입문

89 of 320

  • 문자열을 지정해서 자료형을 만들 수 있다. 각 자료형은 바이트로 보관되어 저장하는 순서를 가진다.
  • 보통 순서는 부등호 표시로 처리한다.

자료형을 문자열로 받고 생성하기

데이터 사이언스 입문

90 of 320

  • 객체를 비교하는 is 예약어를 사용해서 객체를 비교한다.
  • Asarray로 다차원 배열을 변환하면 원본을 그대로 전달한다.
  • 리스트를 사용할 경우는 다차원 배열로 변환되어 다른 객체가 만들어진다.

다차원 배열의 객체 비교

데이터 사이언스 입문

91 of 320

  • 다차원 배열에서 copy 메소드로 새로운 다차원 배열을 만든다.
  • 또한 다차원 배열을 array 함수에 넣어서 새로운 다차원 배열을 만든다.

다차원 배열의 복사

데이터 사이언스 입문

92 of 320

판다스의 자료구조

Chapter 4

93 of 320

시리즈(Series) 클래스

94 of 320

  • 시리즈는 인덱스를 가지는 1차원 배열을 말한다.
  • Series 클래스에 리스트와 index 이름을 지정해서 넣어서 객체를 생성한다.
  • 시리즈 객체의 값은 다차원 배열이다.

시리즈 클래스

데이터 사이언스 입문

95 of 320

  • 시리즈 객체는 index 속성의 인덱스의 이름을 가진다.
  • 다차원 배열처럼 shape, ndim, size 등의 속성을 가진다.

시리즈 메타 정보

데이터 사이언스 입문

96 of 320

  • 하나의 원소를 검색하는 인덱싱은 정수와 인덱스의 이름으로 조회할 수 있다.
  • 슬라이싱도 인덱스 이름으로 가능하다. 정수와의 차이점은 마지막 이름까지 조회한다.

시리즈 인덱싱과 슬라이싱

데이터 사이언스 입문

97 of 320

  • 판다스에서 슬라이싱은 리스트에서처럼 새로운 객체를 생성하는 것이 아니다.
  • 판다스에서 슬라이싱은 기본 판다스 내의 시리즈 객체의 뷰(view)만을 제공한다.
  • 기존 슬라이스와 동일한지를 may_share_memory로 확인한다.

시리즈 슬라이싱의 결과 확인

데이터 사이언스 입문

98 of 320

  • 시리즈의 ‘a’ 위치의 값을 변경하면 원본인 변수 s에 저장된 객체까지 변경된다.
  • 시리즈 객체의 변경을 별도로 관리하려면 반드시 copy한 후에 사용해야한다.

시리즈 슬라이싱 결과 변경

데이터 사이언스 입문

99 of 320

  • 시리즈 인덱스에 이름을 지정할 수 있어서 새로운 이름을 지정해서 값을 할당하면 원소가 추가된다.
  • 인덱스를 정수를 지정해서 추가할 때는 예외를 발생하는 것을 알 수 있다.

시리즈 인덱싱으로 원소 추가

데이터 사이언스 입문

100 of 320

데이터프레임(DataFrame) 구조

101 of 320

  • 데이터프레임은 2차원이라 데이터도 2차원 리스트 등을 전달한다.
  • 행(index)과 열(columns)에 이름을 할당할 수 있다.
  • 데이터는 다차원 배열로 관리한다.

데이터프레임 생성

데이터 사이언스 입문

102 of 320

  • 행(index)과 열(columns)에 이름을 관리하는 두 개의 속성을 가진다.
  • 또한 모양, 차원, 크기에 대한 정보도 관리한다.

데이터프레임 메타정보

데이터 사이언스 입문

103 of 320

  • 행과 열에 이름을 가진다. 데이터프레임의 색인검색을 할 때 정수로 검색할 수 없다.
  • 색인연산은 하나의 열을 조회하는 것이므로 이름을 적어서 검색해야 한다.

데이터프레임 색인 검색

데이터 사이언스 입문

104 of 320

  • 데이터프레임은 열을 기준으로 검색하는 방식을 사용한다.
  • 행을 검색하려면 loc, iloc 등의 객체를 사용해야한다. 하나의 행은 행의 이름으로 검색한다. 하나의 행만 검색하면 시리즈 객체로 반환한다.
  • 행과 열을 슬라이스를 입력해서 검색하면 데이터프레임으로 결과를 반환한다.

데이터프레임 행 검색

데이터 사이언스 입문

105 of 320

  • 데이터프레임을 부분만 추출해서 다른 변수에 할당한 경우도 동일한 메모리를 유지한다.
  • 특정 값을 변경하면 두 변수가 전부 변경된다.

검색결과에 대한 메모리 처리기준

데이터 사이언스 입문

106 of 320

  • 행의 이름 대신 정수로 검색할 때는 loc 대신에 iloc를 사용한다.

행의 정보를 숫자로 검색하기

데이터 사이언스 입문

107 of 320

시리즈와 데이터프레임의 자료형 관리 기준

108 of 320

  • 판다스의 시리즈와 데이터 프레임의 각 열은 하나의 자료형을 가진다.
  • 데이터의 크기를 다양하게 하기위해 바이트 단위로 자료형을 분리해서 관리한다.

판다스 내부의 데이터 자료형

데이터 사이언스 입문

109 of 320

  • 두 개의 행과 열을 가지는 데이터프레임을 객체를 생성한다.
  • 이 데이터프레임의 열의 자료형을 dtypes 속성으로 확인한다.

데이터 프레임 자료형 확인하기

데이터 사이언스 입문

110 of 320

  • 두 개의 열의 자료형을 astype으로 변경한다. 이때 인자로 각 열에 대한 정보를 딕셔너리로 지정한다.
  • 하나는 문자열, 다른 열은 정수형으로 변경한다. 변경된 결과를 보면 문자열을 판다스에서는 object 자료형으로 관리한다.

데이터 프레임 자료형 변경하기

데이터 사이언스 입문

111 of 320

데이터 구조 접근하기

Chapter 5

112 of 320

다차원 배열 팬시 검색과

논리 검색

113 of 320

  • 넘파이 array 함수로 3행 3열의 다차원 배열을 만든다.
  • 리스트 등의 배열을 넣는 검색이 팬시검색이다. 먼저 정수로 검색하면 첫번째 행의 정보를 제공한다.
  • 리스트를 넣고 팬시검색하면 첫번째 행을 2차원 배열로 보여준다. 이는 검색할 때 리스트나 배열을 넣으면 현재 배열의 차원과 동일한 결과를 반환한다.

다차원 배열 팬시검색 1

데이터 사이언스 입문

114 of 320

  • 두 개의 정수를 넣고 조회하면 행과 열이 일치하는 하나의 원소를 검색한다.
  • 두 개의 원소를 가진 리스트를 넣으면 두 개의 행을 가진 2차원 배열로 조회한다.
  • 인덱스 범위가 벗어난 숫자를 리스트에 넣고 조회하면 예외를 발생시킨다.

다차원 배열 팬시검색 2

데이터 사이언스 입문

115 of 320

  • 2개의 행을 조회하는 팬시검색한 결과를 다른 변수에 할당한다.
  • 팬시검색할 때도 모든 행은 슬라이스, 열은 팬시검색으로 두 개의 열만 선택할 수 있다.

다차원 배열 다양한 조합 사용하기

데이터 사이언스 입문

116 of 320

  • 리스트를 행과 열에 넣고 팬시검색을 하면 두 리스트를 조합한 인덱스의 정보만 추출한다.
  • 두 개의 행과 두 개의 열을 조합한 결과를 처리할 때는 np.ix_ 함수를 추가해야 한다.

두 개의 리스트로 팬시 검색

데이터 사이언스 입문

117 of 320

  • 다차원 배열의 검색은 기존 배열을 공유한다. 하지만 팬시검색은 새로운 객체를 만들어서 반환한다.

팬시 검색의 특징

데이터 사이언스 입문

118 of 320

  • 하나의 다차원 배열을 만든 후에 정수 5와 비교하면 결과가 논리값의 원소를 가진 배열로 반환한다..

다차원 배열의 논리식

데이터 사이언스 입문

119 of 320

  • 다차원 배열의 검색에 논리식의 결과를 넣으면 참으로 매칭되는 원소만 추출해 반환한다.
  • 복잡한 논리식을 사용할 때는 and 대신 연산기호로 표시해야한다.
  • 논리 검색된 결과도 기존 다차원 배열이 메모리를 공유하지 않는다.

다차원 배열의 논리검색

데이터 사이언스 입문

120 of 320

판다스의 팬시 검색과

논리 검색

121 of 320

  • 2차원 다차원 배열을 만들어서 DataFrame의 데이터로 넣는다. 5개의 열에 대한 이름을 할당해서 객체를 생성한다.

데이터 프레임 생성하기

데이터 사이언스 입문

122 of 320

  • 검색할 때 열의 이름을 가진 배열을 넣어서 데이터프레임을 검색한다.
  • 리스트의 원소 개수에 맞춰 열이 추가된다.

데이터 프레임 팬시검색하기

데이터 사이언스 입문

123 of 320

  • 논리식으로 한 결과을 1차원 배열로 변경하고 이를 데이터프레임이 데이터를 관리하는 values 속성으로 처리하면 필요한 원소 하나씩 추출한다.

데이터 프레임 논리검색하기

데이터 사이언스 입문

124 of 320

데이터 구조 변경

125 of 320

  • 3행 3열과 1행 3열의 행렬을 만든다.
  • Append함수에 axis=0을 주면 행기준으로 추가된다.

다차원 배열을 행으로 결합하기

데이터 사이언스 입문

126 of 320

  • Append 함수에 axis=1로 주면 열이 하나 추가되어 3행 4열의 다차원 배열이 만들어진다.

다차원 배열을 열로 결합하기

데이터 사이언스 입문

127 of 320

  • 2행 2열의 데이터프레임을 두 개 만든다.

데이터프레임 결합하기

데이터 사이언스 입문

128 of 320

  • Append 메소드로 연결하면 행을 기준으로 결합해서 하나의 데이터프레임을 만든다. 인덱스의 이름이 겹치는 것을 볼 수 있다.
  • 인덱스의 이름을 다시 지정하려면 ignore_index=True로 지정해서 결합한다.

데이터프레임 행으로 결합하기

데이터 사이언스 입문

129 of 320

  • Append 메소드로연결할 때 axis=1을 지정한다.
  • 두 개의 데이터프레임이 하나로 결합해서 열이 하나 추가된 것을 알 수 있다.

데이터프레임 열로 결합하기

데이터 사이언스 입문

130 of 320

시각화

Chapter 6

131 of 320

그래프의 기본

132 of 320

  • Plot 함수에 x축과 y축에 데이터(리스트나 배열 등)을 인자로 전달한다.
  • 두 점이 맞나는 것을 선으로 그린다.

선 그래프 그리기

데이터 사이언스 입문

133 of 320

그래프 꾸미기

134 of 320

  • 그래프는 기본으로 영어 표기법이므로 한글 폰트를 지정해야함
  • 윈도우, 맥 OS가 다르므로 플랫폼에 맞춰 지정한다.

그래프에 한글 처리 세팅하기

데이터 사이언스 입문

135 of 320

  • 그래프를 그리는 캔버스는 Figuer이고 실제 그래프는 Axes 내에 그려진다.
  • 그래프를 꾸미려면 title, xlabel, ylabe . Axis 등 다양한 클래스들이 필요하다.

그래프 구조 이해하기 1

데이터 사이언스 입문

136 of 320

  • 그래프를 그리는 캔버스는 Figuer 클래스로 객체를 만든다.
  • 이 객체에 add_subplot으로 Axes 객체를 두 개 만든다. 인자로 들어가는 숫자는 행과 열의 의미이다. 이 숫자대로 상하 또는 좌우로 그래프가 표시된다.

그래프 구조 이해하기 2

데이터 사이언스 입문

137 of 320

  • 하나의 선 그래프를 먼저 그린 다음에 plt.gcf 함수로 현재 그래프 객체를 가져와서 다시 선 그래프를 그리면 동일한 그래프 두 개가 같이 표시된다.

두 개의 그래프를 같이 표시하기

데이터 사이언스 입문

138 of 320

  • 한글 폰트 처리를 먼저 지정했다.
  • 한글 문자열로 title 함수의 인자로 전달하면 그래프 제목이 한글로 표시한다.

그래프의 제목 처리하기

데이터 사이언스 입문

139 of 320

  • 그래프를 그릴 때 약어나 기호를 문자열로 전달해서 표시할 수 있다.

그래프의 색깔 및 스타일 표시

데이터 사이언스 입문

140 of 320

  • 그래프를 그릴 때 매개변수를 전부 표시한다.

그래프의 스타일 매개변수 1

데이터 사이언스 입문

141 of 320

  • 그래프를 그릴 때 매개변수를 약자로 표시한다.

그래프의 스타일 매개변수 2

데이터 사이언스 입문

142 of 320

  • 두 개의 axes를 add_subplot으로 만들어서 사인과 코사인 그래프를 각각 그린다.

그래프를 분리해서 그리기

데이터 사이언스 입문

143 of 320

수학함수

Chapter 7

144 of 320

시그마와 파이 기호

145 of 320

  • 파이썬은 연산자는 전부 스페셜 메소드이다.
  • + 연산자는 __add__ 스페셜 메소드이다. 또한 add라는 함수도 추가적으로 지원한다.

연산자, 스페셜 메소드, 함수

데이터 사이언스 입문

146 of 320

  • 반복적인 덧셈을 처리하는 수학기호
  • 여러 개를 더하는 sum 메소드와 누적 합산을 처리하는 cumsum 메소드

시그마 기호

데이터 사이언스 입문

147 of 320

  • 반복적인 곱셈을 처리하는 수학기호
  • 여러 개를 곱하는 prod 메소드와 누적 곱을 처리하는 cumprod 메소드

파이 기호

데이터 사이언스 입문

148 of 320

  • 특정 정수를 밑으로 두고 특정 수를 지수로 계산하는 방식
  • 다차원 배열은 모든 원소를 지수로 계산한다.

지수 계산

데이터 사이언스 입문

149 of 320

  • 지수가 음수일 경우는 ** 연산기호에 음수를 사용해서 계산한다.
  • 다차원 배열은 모든 원소를 계산한다.

음의 지수 계산

데이터 사이언스 입문

150 of 320

  • 밑을 e로 처리할 때 넘파이 exp 함수와 math 모듈의 exp 계산 결과를 비교
  • 넘파이 모듈의 수학함수는 모든 원소를 계산하는 벡터화 연산을 수행

밑은 e 상수로 처리

데이터 사이언스 입문

151 of 320

  • 로그함수는 지수함수의 역함수이다.
  • 넘파이 모듈와 math 모듈의 로그함수 계산을 비교한다.
  • 밑이 10일 경우는 log10 함수로 처리한다

로그 함수

데이터 사이언스 입문

152 of 320

  • 삼각함수는 각도를 라디언으로 변환해서 계산이 가능하다.
  • 넘파이의 삼각함수도 다차원 배열의 원소를 벡터화 연산을 처리한다.

삼각 함수

데이터 사이언스 입문

153 of 320

지수, 로그와 삼각 함수

154 of 320

  • Append 메소드로연결할 때 axis=1을 지정한다.
  • 두 개의 데이터프레임이 하나로 결합해서 열이 하나 추가된 것을 알 수 있다.

데이터프레임 열로 결합하기

데이터 사이언스 입문

155 of 320

축 기준으로 함수 처리

156 of 320

  • 다차원 배열은 함수에 axis 축이 있으면 이를 기준으로 계산이 가능하다

다차원 배열은 축으로 함수 계산

데이터 사이언스 입문

157 of 320

  • 두 개의 데이터프레임을 만든다.

데이터프레임 축으로 계산 `1

데이터 사이언스 입문

158 of 320

  • 두 개의 데이터프레임의 덧셈은 동일한 인덱스 레이블이 있는 경우에만 계산된다.
  • 레이블이 불일치할 때 예외가 발생하지 않고 NaN과 계산을 처리하므로 결과값도 NaN이 된다.

데이터프레임 축으로 계산 `2

데이터 사이언스 입문

159 of 320

  • 데이터프레임에서도 axis 를 지정해서 계산이 가능하다. 레이블이 불일치하면 계산되는 값이 NaN으로 처리
  • 인자를 fill_value=0을 지정하면 불일치되어도 기본 값이 0이므로 계산된 결과가 나온다. 이때도 불일치한 결과만 NaN 으로 처리된다.

데이터프레임 축으로 계산 `3

데이터 사이언스 입문

160 of 320

확률의 기초와 원리

Chapter 8

161 of 320

집합

162 of 320

  • 여러 개의 원소 중에 유일한 값 추출을 unique 함수로 가능
  • 원소 값에 대한 포함관계를 in1d, isin 함수로 가능

다차원 배열로 집합 연산

데이터 사이언스 입문

163 of 320

  • Setdiff1d 함수로 차집합 계산하고 setxor1d로 대칭차집합을 처리한다.

다차원 배열로 차집합, 대칭차집합

데이터 사이언스 입문

164 of 320

  • 교집합은 intersect1d, 합집합은 union 함수로 처리

다차원 배열로 교집합 , 합집합

데이터 사이언스 입문

165 of 320

경우의 수

166 of 320

  • 연속되는 수를 곱해서 결과를 구한다.

팩토리얼 계산

데이터 사이언스 입문

167 of 320

  • 서로 다른 n개 중에 r개를 선택해 순서대로 나열한 것에 대한 경우의 수를 계산.

순열

데이터 사이언스 입문

168 of 320

  • 전체 원소의 n개수와 순서없이 선택된 원소의 k개수를 선택한 경우의 수.

조합

데이터 사이언스 입문

169 of 320

확률의 원리

170 of 320

기본 용어

데이터 사이언스 입문

171 of 320

확률 산식

  • 확률은 어떤 시행에서 사건 A가 일어날 가능성을 수로 나타낸 것을
  • 말합니다. 이것을 사건 A가 일어날 확률이라고 합니다.

데이터 사이언스 입문

172 of 320

확률 변수와 확률분포

173 of 320

확률변수와 확률분포

데이터 사이언스 입문

174 of 320

  • 이산확률을 구하는 lea 모듈 사용
  • 주사위 한번 던지기를 dice 로 수행하고 분수로 표현하기 위해 prob_type=‘r’로 지정한다.

주사위 던지기 1

데이터 사이언스 입문

175 of 320

  • 주사위에 대한 값은 support 속성, 각 값에 대한 확률은 ps 속성에 있다.
  • 모든 경우에 따른 확률을 더하면 1이다. 이를 p_sum 속성으로 확인한다.

주사위 던지기 2

데이터 사이언스 입문

176 of 320

  • 판다스 모듈을 사용해서 확률분포를 만든다.
  • 그래프를 그리면 균등분포라는 것을 알 수 있다.

주사위 던지기 - 확률분포

데이터 사이언스 입문

177 of 320

  • 주사위 던지를 random_draw 메소드로 실행한다.
  • 실행된 확률은 p 메소드로 확인한다.

주사위 던지기 실행

데이터 사이언스 입문

178 of 320

  • 주사위를 두 번 던지면 경우의 수가 36이 되고 두 번 나온 값을 합산한 결과가 모든 36이 나온다.

주사위 두번 던지기 1

데이터 사이언스 입문

179 of 320

  • 주사위 던지기를 한번 실행한 후에 확률을 확인한다.

주사위 두번 던지기 2

데이터 사이언스 입문

180 of 320

  • 주사위가 짝수가 나올 확률은 P 내에 비교연산과 논리연산을 사용해서 구한다.
  • 조건부 확률은 given 메소드로 구할 수 있다.

주사위 두번 던지기 3

데이터 사이언스 입문

181 of 320

  • Vals 함수를 사용하면 특정 문자열을 심벌로 지정해 확률을 만들 수 있다.
  • 확률질량함수 pmf에 딕셔너리를 인수로 전달해도 동일한 결과가 나온다.

특정 심벌로 만들기

데이터 사이언스 입문

182 of 320

  • Vals 함수를 사용하면 특정 문자열을 심벌로 지정해 확률을 만들 수 있다.
  • 확률질량함수 pmf에 딕셔너리를 인수로 전달해도 동일한 결과가 나온다.

동전 던지기 1

데이터 사이언스 입문

183 of 320

  • Vals 함수를 사용하면 특정 문자열을 심벌로 지정해 확률을 만들 수 있다.
  • 확률질량함수 pmf에 딕셔너리를 인수로 전달해도 동일한 결과가 나온다.

동전 던지기 2

데이터 사이언스 입문

184 of 320

베이지안

185 of 320

  • 그릇 1에는 바닐라 쿠키 30개와 초콜릿 쿠키가 10개, 그릇 2에는 바닐라 쿠키와 초콜릿 쿠키가 20개씩 들어있다.
  • 먼저 그릇에 대한 확률을 정의한다.

베이지안 문제풀이 1

데이터 사이언스 입문

186 of 320

  • 그릇 1에는 바닐라 쿠키 30개와 초콜릿 쿠키가 10개, 그릇 2에는 바닐라 쿠키와 초콜릿 쿠키가 20개씩 들어있다.
  • 쿠기에 대한 확률을 정의한다.

베이지안 문제풀이 2

데이터 사이언스 입문

187 of 320

  • 확률 분포를 확인한다.
  • 그릇별로 분포된 쿠키의 그래프를 그린다.

베이지안 문제풀이 3

데이터 사이언스 입문

188 of 320

  • P(B)는 어떤 가설에든 포함되는 데이터의 비율인 한정 상수

베이지안 문제풀이 4

데이터 사이언스 입문

189 of 320

  • P(A1|B)는 계산하고자 하는 데이터를 확인한 후 가설 확률인 사후 확률

베이지안 문제풀이 5

데이터 사이언스 입문

190 of 320

  • 확률분포표를 만들기 위해 T, F 변수에 True와 False를 할당합니다.

베이지안 문제풀이 6

데이터 사이언스 입문

191 of 320

  • 그릇과 쿠키의 표시가 명확한지 support 속성으로 확인한다.
  • 조건을 처리하는 P 함수에 그릇 1과 바닐라 쿠키의 결합확률을 넣어 확률을 구한다.

베이지안 문제풀이 7

데이터 사이언스 입문

192 of 320

  • 바닐라 쿠키가 주어질 때 조건부 확률을 구하면 그릇 1의 확률과 그릇 2의 확률이 나온다.
  • 사후 확률로 조건부 확률을 given으로 지정하고 그중에 그릇 1이 선택될 확률을 계산하면 최종 결과이다.

베이지안 문제풀이 8

데이터 사이언스 입문

193 of 320

선형 대수로 넘파이 모듈 이해하기

Chapter 9

194 of 320

벡터와 1차원 배열

195 of 320

  • 선형대수에서 벡터는 크기와 방향을 가지는 수의 집합이다.
  • 기하적인 벡터는 크기를 선분으로 표시한다.

벡터

데이터 사이언스 입문

196 of 320

  • 벡터간의 연산은 벡터간의 차원 즉 원소가 같아야 계산한다

벡터 산술연산

데이터 사이언스 입문

197 of 320

  • 스칼라를 벡터로 변환해서 계산한다,.

벡터와 스칼라 연산

데이터 사이언스 입문

198 of 320

행렬과 2차원 배열

199 of 320

  • 행렬은 벡터보다 축이 하나 많아져서 2차원 배열로 만든다.
  • 행과 열의 인덱스를 첨자로 표시한 곳에 원소가 들어가면 행렬이 만들어진다.

행렬

데이터 사이언스 입문

200 of 320

  • 축을 변환하는 것을 전치(transpose)하고, 원본 행렬의 축을 변경해서 만든 행렬을 전치행렬이다 .
  • 전치행렬은 속성 T와 transpose 함수를 사용한다.

전치 행렬

데이터 사이언스 입문

201 of 320

  • 행렬도 원소별로 산술연산을 수행해서 두 행렬간의 shape이 동일해야한다.

행렬의 산술연산

데이터 사이언스 입문

202 of 320

  • 스칼라인 상수를 동일한 값을 가지는 행렬로 변환해서 원소 별로 계산한다.

행렬과 스칼라 연산

데이터 사이언스 입문

203 of 320

  • 대각선이 전부 1이고 나머지는 전부 0인 행렬이다.

단위행렬

데이터 사이언스 입문

204 of 320

  • 대각선을 기준으로 윗부분이 원소가 전부 0인 경우는 하삼각행렬이고 아래 부분이 원소가 전부 0인 경우는 상삼각행렬이다.

삼각행렬

데이터 사이언스 입문

205 of 320

  • 하나의 행렬을 둘로 분해할 수 있는데 두 개의 삼각 행렬로 분해하는 것을 LU 분해라고 한다.

LU 분해 1

데이터 사이언스 입문

206 of 320

  • 두 개의 삼각행렬을 행렬곱으로 계산한 후에 allclose 함수로 비교한다. 소수점 이하 오차값을 비교할 때 allclose 함수를 사용한다.

LU 분해 2

데이터 사이언스 입문

207 of 320

텐서와 다차원 배열

208 of 320

  • 벡터와 행렬도 텐서(Tensor)에 속한다.
  • 3차원 이상일 경우는 텐서에 차원을 붙여서 부른다.
  • 머신러닝 딥러닝은 차원이 높아서 모든 데이터를 텐서로 처리한다.

텐서

데이터 사이언스 입문

209 of 320

  • 3차원 텐서 배열을 만들고 속성 shape를 보면 3개의 원소를 가진 튜플이다.
  • 인덱스 검색도 3개의 정수를 쉼표로 구분해서 조회가 가능하다.

3차원 텐서

데이터 사이언스 입문

210 of 320

  • 4차원 텐서(배열)을 만든다.
  • 하나의 원소의 크기는 itemsize이다.
  • 속성 strides 내부의 정보를 itemsize로 확인해 본다.

4차원 텐서

데이터 사이언스 입문

211 of 320

유니버설 함수

(universal function)

212 of 320

  • 파이썬에서 제공하는 함수는 함수 클래스의 객체이다. 넘파이 모듈은 벡터 연산을 처리하는 함수인 유니버설 함수 클래스(numpy.ufunc)를 제공한다.
  • 유니버셜 함수는 배열의 원소를 순환문 없이 벡터화연산을 수행한다.

유니버셜 함수 클래스

데이터 사이언스 입문

213 of 320

  • 유니버셜 함수는 배열의 원소를 순환문 없이 벡터화연산을 수행한다.
  • 추가적인 내부 메소드를 제공한다.

유니버셜 함수

벡터화 연산

메소드 계산

데이터 사이언스 입문

214 of 320

선형대수 연산인

내적과 외적

215 of 320

  • 벡터의 크기를 구하라는 기호는 벡터 이름 앞뒤에 절댓값 기호를 표시한다.
  • 벡터의 크기를 구하는 산식은 벡터 내의 원소의 제곱을 구하고 모두 더한 후에 제곱근을 처리한다.

벡터의 크기

데이터 사이언스 입문

216 of 320

  • 벡터의 내적은 점 연산을 사용해 벡터 사이에 점을 표시한다.
  • 두 벡터를 원소별로 곱하고 더하므로 두 벡터를 원소별로 표시한 후에 대문자 시그마 기호를 사용한다.

벡터 내적 1

데이터 사이언스 입문

217 of 320

  • 두 벡터 내적은 두 벡터의 크기와 두 벡터의 사잇각에 cos 함수를 곱해서 구한다.
  • 사이각도 구해본다.

벡터 내적 2

데이터 사이언스 입문

218 of 320

  • 행렬곱은 앞의 행렬의 행과 뒤에 행렬의 열을 곱해서 새로운 행렬의 원소를 만든다.
  • 새로운 행렬의 원소를 간단하기 시그마 수식으로 표시할 수 있다.

행렬곱 계산 알아보기

행 분리

열분리

두 행렬의 행렬곱

데이터 사이언스 입문

219 of 320

  • 외적은 주로 벡터의 수직인 법선벡터를 구할 때 사용한다.
  • 두 벡터가 직교이면 내적은 0이다.

벡터의 외적

데이터 사이언스 입문

220 of 320

행렬식과 역행렬

221 of 320

  • 2행 2열의 정사각 행렬 A의 대각선 원소의 곱을 한 후에 역방향의 대각선 원소의 곱에는 마이너스 부호를 붙여서 행렬식을 구한다.

행렬식

데이터 사이언스 입문

222 of 320

  • 역행렬은 행렬식은 분모이고 수반행렬이 분자이다.
  • 행렬식이 0이면 역행렬이 없다.

역행렬

데이터 사이언스 입문

223 of 320

  • 행렬과 역행렬의 곱은 단위행렬이다.

행렬과 역행렬 곱

데이터 사이언스 입문

224 of 320

  • 행렬식이 0일 경우는 유사 역행렬을 구한다.

유사 역행렬

데이터 사이언스 입문

225 of 320

선형변환, 고윳값, 고유벡터

226 of 320

  • 행렬을 하나의 함수로 생각하면 공간상에 벡터를 변환할 수 있다.이때 벡터가 확대, 축소 등 변형이 생긴다.

선형변환

데이터 사이언스 입문

227 of 320

  • 행렬과 벡터의 곱은 특정 상수와 벡터의 곱으로 분리할 수 있다. 이때 상수를 고유값이라고 하고 벡터를 고유벡터라고 한다.

고유값 고유벡터

데이터 사이언스 입문

228 of 320

신경망 사용 함수

Chapter 10

229 of 320

활성화 함수

(activation function)

230 of 320

  • 특정 입력 x에 가중치(w)를 행렬곱하고 편향(b)을 더한 값을 활성화 함수에 인자로 전달해서 결괏값을 처리하는 함수의 산식이다.
  • 딥러닝에서 앞 계층에서 다음 계층으로 값을 전달할 때 활성화함수로 처리된 결과를 전달한다.
  • 항등함수는 입력과 출력이 동일한 함수이다.

활성화 함수 1

데이터 사이언스 입문

231 of 320

  • 계단함수는 0보다 작을 경우는 0이고 0보다 클 경우는 1로 처리하는 함수이다.

활성화 함수 2

데이터 사이언스 입문

232 of 320

  • 시그모이드 함수는 자연 상수를 지수로 사용해서 작은 값과 큰 값을 특정 범위 내의 값으로 처리한다.
  • 값은 0부터 1사이를 반환한다.

활성화 함수 3

데이터 사이언스 입문

233 of 320

  • 하이퍼볼릭 탄젠트 함수(hyperbolic tangent function)도시그모이드 함수처럼 자연 상수 e를 제곱해서 분모는 합하고 분자는 빼는 구조이다.
  • 계산하면 -1과 1 사이의 값을 0을 중심으로 대칭 형태로 보여준다

활성화 함수 4

데이터 사이언스 입문

234 of 320

  • 렐루(Rectified Linear Unit)는 입력값이 0보다 크면 그 값을 그대로 반환하고 0보다 작거나 같으면 0으로 출력하는 함수이다. 이 함수를 미분하면 0보다 작거나 같을 때는 0이고, 0보다 크면 1로 반환한다.

활성화 함수 5

데이터 사이언스 입문

235 of 320

  • 렐루(Rectified Linear Unit)는 입력값이 0보다 크면 그 값을 그대로 반환하고 0보다 작거나 같으면 0으로 출력하는 함수이다. 이 함수를 미분하면 0보다 작거나 같을 때는 0이고, 0보다 크면 1로 반환한다.

활성화 함수 6

데이터 사이언스 입문

236 of 320

  • 소프트맥스 함수는 출력의 노드 수가 n이라면 이 노드의 전체를 자연 상수 e의 제곱의 합을 구하고 특정 노드는 자연 상수 e의 제곱으로 구해서 나눈 값을 반환한다.
  • 이 함수의 값은 0보다 크고 1보다 작은 값을 반환한다.

활성화 함수 7

데이터 사이언스 입문

237 of 320

미분

238 of 320

  • 함수의 입력값인 x가 변할 때 아주 작은 변화량에 대한 함수 f(x)의 순간 변화율을 얻을 수 있다. 이를 도함수라고 하고 도함수를 만들면 미분한다고 한다.
  • 또한, 이 변화율을 기울기(gradient)라고 한다.

미분

최적화 미분 산식

수치 미분 산식

데이터 사이언스 입문

239 of 320

  • 수치미분으로 함수를 정의한 후에 미분을 구한다.

수치 미분 함수 처리

데이터 사이언스 입문

240 of 320

  • 다차원 배열을 gradient 함수로 미분할때 dx 값인 작은 변화량을 인자로 전달한다.

gradient 로 미분 처리

데이터 사이언스 입문

241 of 320

  • 합성함수에 대한 미분은 외부함수와 내부함수를 각각 미분하고 두 결과를 곱해서 구할 수 있다.
  • 외부함수의 미분을 내부 u로 미분하고 내부함수를 x로 미분한 후에 두 미분한 결과를 곱한다.

편미분 알아보기

데이터 사이언스 입문

242 of 320

  • 2개의 함수 를 정의, 미분처리 함수를 정의해서 미분하고 gradient 함수로 미분한다.
  • 처리결과가 오차가 발생했다.

편미분 함수로 계산하기

데이터 사이언스 입문

243 of 320

계층(layer)을 다차원 배열로

계산하기

244 of 320

  • 딥러닝의 계층은 입력층과 출력층이 있고 중간에 히든층을 만든다.
  • 이 히든 층에 학습을 통해 가중치와 편향을 정해 패턴에 맞는 규칙을 만든다.

딥러닝 계층 구조

데이터 사이언스 입문

245 of 320

  • 두 개의 다차원 배열을 만든 후에 하나는 입력, 하나는 가중치로 정한 후에 dot 함수를 통해 계산을 하는 방식이다.
  • 다른 계층에 전달할 때는 앞에서 배운 활성화함수를 거친다.

딥러닝 계층 내 계산

데이터 사이언스 입문

246 of 320

합성 곱 함수

247 of 320

  • 특정 필터를 사용해 배열의 내부 값을 변환하는 것이 합성 곱이다.

합성곱 처리 방식

데이터 사이언스 입문

248 of 320

  • 하나는 원본이고 하나는 필터로 사용하는 배열이다.
  • 동일한 원소 개수가 나오도록 mode=same으로 처리한다.

convolve 함수 처리

데이터 사이언스 입문

249 of 320

  • 딥러닝의 컨볼루션 레이어는 컨볼루션 후에 풀링(pooling)을 처리한다.
  • 풀링은 주어진 배열을 축소할 때 사용한다.

풀링 처리

데이터 사이언스 입문

250 of 320

데이터 변수 정제

Chapter 11

251 of 320

날짜 자료형

252 of 320

  • 판다스 모듈도 html를 read_html에 주소를 인자로 전달해서 읽어온다.

파일 읽기

데이터 사이언스 입문

253 of 320

  • 파일을 읽어온 후에 파일의 개수를 shape으로 확인한다.
  • 파일 내의 상태를 head 메소드로 출력한다.

데이터프레임 확인하기

데이터 사이언스 입문

254 of 320

  • 데이터프레임의 info 메소드를 사용해서 열의 자료형과 개수 등을 확인한다
  • 또한 메모리 사용량도 확인한다.

데이터프레임의 열정보 확인

데이터 사이언스 입문

255 of 320

  • 두 개의 열이 날짜형이므로 이를 to_datetime 함수로 변경한다.
  • 열에 대한 자료형은 dtyes 속성으로 확인하면 날짜 자료형으로 변경된 것을 알 수 있다.

날짜에 대한 자료형 변경

데이터 사이언스 입문

256 of 320

  • 날짜 열을 조회하면 dt 속성이 있다. 이 속성내에 strftime 메소드로 연도를 추출해서 새로운 열을 추가한다.
  • 년도 열을 조회해서 특정 년도 발생빈도를 확인한다.

연도 열을 추가

데이터 사이언스 입문

257 of 320

결측값 및 이상치 값 처리

258 of 320

  • 쉼표로 구분하는 csv 파일을 read_csv 함수로 읽는다.
  • 데이터의 크기를 shape로 확인하고 데이터를 head 메소드로 확인한다.

파일을 읽기

데이터 사이언스 입문

259 of 320

  • 데이터의 각 열마다 결측값을 확인하기 위해 isna , isnull 메소드를 사용한다.
  • 이 결과를 sum 메소드로 합산하면 True 건수만 계산한다.

데이터프레임 열의 결측값 확인

데이터 사이언스 입문

260 of 320

  • 데이터프레임의 fillna 메소드에 0 을 인자로 받아서 결측값을 전부 0 으로 처리한다.
  • 각 열의 자료형을 get_dtype_counts 메소드로 확인한다.

결측값이 초기값 처리

데이터 사이언스 입문

261 of 320

  • 열의 문자열은 str 속성을 가지고 필요없는 기호들을 전부 변환한다.
  • 또한 임의의 문자열을 0으로 변환한다.
  • 열의 자료형 변환은 astype 메소드로 한다.

열의 자료형을 변경하기

데이터 사이언스 입문

262 of 320

다양한 값의 정규화와 변환

263 of 320

  • 이진화 처리는 scikit learn 의 preprocessing 모듈이 Binarizer 클래스를 사용한다.
  • 이진화 대상 값을 넣고 transform 메소드를 실행해서 값을 변환한다.

이진화 처리

데이터 사이언스 입문

264 of 320

  • 평균0 과 표준편차 1로 전체 데이터의 스케일을 preprocessing scale 함수로 조정한다.

표준화

데이터 사이언스 입문

265 of 320

  • 데이터를 특정 범위 내에 의값으로 조정한다. 이때는 MinMaxScaler를 사용한다.

최소값 최대값 스케일 처리

데이터 사이언스 입문

266 of 320

  • 표준화 처리는 StandardScaler 클래스로 처리가 가능하다.

표준화

데이터 사이언스 입문

267 of 320

  • 특정 벡터의 값을 일정한 기준으로 변환하기 위해 정규화 기법을 사용한다.
  • 이때 총합이 1이 되도록 값을 조정한다.
  • 정규화에는 L1, L2 정규화가 있다.

정규화

데이터 사이언스 입문

268 of 320

  • 특정 문자열 값을 숫자값으로 변환할 때 사용한다.
  • 또한 preprocessing 모듈에 LabelEncoder 클래스를 사용해서 조정한다.
  • 변환 준비는 fit 메소드이고 변환은 transform이다.

레이블 인코딩

데이터 사이언스 입문

269 of 320

데이터로 통계

알아보기

Chapter 12

270 of 320

중심위치 확인

271 of 320

  • 파일을 읽고 필요없는 열을 drop 메소드로 삭제한다.
  • 들어온 데이터를 head 메소드로 확인한다.

파일 읽기

데이터 사이언스 입문

272 of 320

  • 특정 열의 유일한 정보를 unique 함수나 value_counts 메소드로 확인할 수 있다.
  • 문자열의 기술통계는 describe 메소드로 처리하면 개수, 유일한 값 등을 보여준다.

문자열의 기술 통계

데이터 사이언스 입문

273 of 320

  • 특정 열의 유일한 정보를 unique 함수나 value_counts 메소드로 확인할 수 있다.
  • 문자열의 기술통계는 describe 메소드로 처리하면 개수, 유일한 값 등을 보여준다.

문자열의 기술 통계

데이터 사이언스 입문

274 of 320

  • 숫자 열에 대해 기술 통계를 하면 평균, 표준편차, 사분위 표시를 한다.
  • 또한 평균, 중앙값, 최빈수에 대한 정보를 메소드로 확인할 수 있다.

숫자 열의 기술 통계

데이터 사이언스 입문

275 of 320

퍼진 정도 확인

276 of 320

  • 열에 대한 기술 통계에는 표준편차와 범위를 표시한다.
  • 추가적으로 분산(var), 표준편차(std), 범위(max, min)으로 확인할 수 있다. 또한 사분위수(quantile)도 확인할 수 있다.

퍼진정도 알아보기

데이터 사이언스 입문

277 of 320

공공 데이터

Chapter 13

278 of 320

공공 데이터 분석

279 of 320

  • 공공 데이터 포털(https://www.data.go.kr)에서 다운로드를 받는다.
  • 판다스로 csv 파일을 읽고 행과 열을 확인한다.
  • 열에 대한 정보를 dtypes 속성으로 확인한다.

데이터 읽기

데이터 사이언스 입문

280 of 320

  • 열의 자료형 변환은 astype 메소드로 바꾼다.
  • 열의 정수 자료형을 8바이트(int64)에서 2바이트(int16)로 변환한다.
  • 열의 실수 자료형을 8바이트(float64)에서 4바이트(float32)로 변환한다.

파일의 사이즈 줄이기

데이터 사이언스 입문

281 of 320

  • 메소드 isna, isnull 로 결측값 여부를 확인하고 메소드 sum으로 True 값만 합산한다.
  • 결측값을 전부 fillna 메소드를 가지고 0으로 처리한다.

결측값 제거하기

데이터 사이언스 입문

282 of 320

  • 팬시검색으로 두 개의 열을 추출한다.
  • 또한 이 데이터프레임에 열을 하나 추가한다.

특정 열 추출 후 열 추가

데이터 사이언스 입문

283 of 320

  • 신장 열을 인덱스로 하고 성별을 열로 하는 피봇 테이블을 만든다.
  • 신장별로 남성과 여성에 대한 건수를 계산한다. 해당되는 신장이 없을 경우는 결측값이 들어간다.

피봇 테이블 만들기

데이터 사이언스 입문

284 of 320

  • 피봇 테이블에 대한 기술통계량을 확인한다.
  • 남성과 여성의 신장에 대한 분포를 막대 그래프로 확인한다.

기술 통계량 및 신장 분포

데이터 사이언스 입문

285 of 320

유가 데이터 분석

286 of 320

  • 인터넷에 공유된 3개의 엑셀 데이터를 읽는다.
  • 브렌트, wti는 석유가격이고, natural은 천연가스 가격이다.

데이터 읽기

데이터 사이언스 입문

287 of 320

  • 인터넷에 공유된 3개의 엑셀 데이터를 읽는다.

데이터 읽기

데이터 사이언스 입문

288 of 320

  • 3개의 형상을 확인하면 행의 길이가 다른 것을 알 수 있다.

데이터 형상 알아보기

데이터 사이언스 입문

289 of 320

  • 3개의 파일은 시작일이 차이가 있다. 3개를 비교하려면 동일한 기간을 맞추는 작업이 필요하다.

데이터 확인하기

데이터 사이언스 입문

290 of 320

  • 1997-01-07일 부터 데이터를 맞춘다.

데이터의 기간을 맞추기

데이터 사이언스 입문

291 of 320

  • 하나의 빈 데이터프레임을 만들고 열을 두 개 추가한다.
  • 새로 만들어진 파일에 merge 함수에서 Date 열을 기준으로 병합해서 하나의 파일로 만든다. 4개의 열을 가지는 데이터프레임을 만든다.

데이터를 하나로 병합하기

데이터 사이언스 입문

292 of 320

  • 결측값을 확인하고 초기값을 0 으로 처리한다.

결측값 처리

데이터 사이언스 입문

293 of 320

  • Date 열을 index로 고정시킨다.
  • 선 그래프로 기간별 가격을 시각화한다. 석유가격은 등락폭이 심하지만 가스 가격은 거의 변화가 없다.

기간결 가격 추세 시각화

데이터 사이언스 입문

294 of 320

  • 석유가격은 변화율이 비슷한 것을 알 수 있다.

가격 변화율 그래프 확인하기 1

데이터 사이언스 입문

295 of 320

  • 천연가스는 가격변화률이 거의 없다.
  • 변화를 계산시 무한대 값이 있어서 이를 0으로 정리한다

가격 변화율 그래프 확인하기 2

데이터 사이언스 입문

296 of 320

  • 인덱스를 다시 열로 만든다.
  • Date 열의 dt 속성을 사용해서 년, 월, 주 등의 열을 추가한다.

년 월 주 등으로 열 추가 하기

데이터 사이언스 입문

297 of 320

  • 다시 Date를 인덱스로 정한다.
  • 년을 기준으로 그룹화하고 평균을 계산한다. 이 기준으로 선 그래프를 그린다.

그룹화 처리하기 1

데이터 사이언스 입문

298 of 320

  • 년과 월을 그룹화하고 평균을 계산한다. 이 기준으로 선 그래프를 그린다.

그룹화 처리하기 2

데이터 사이언스 입문

299 of 320

  • 월을 인덱스, 년은 열이면 값은 월별 평균금액을 계산한 피봇 테이블을 만든다.
  • 5년치만 조회하기 위해 5개의 년도를 리스트로 만들어서 검색한다.

피봇 테이블 만들기

데이터 사이언스 입문

300 of 320

금융 데이터

Chapter 14

301 of 320

주식 데이터 분석

302 of 320

  • 한국주식시장 상장정보를 가져옵니다.

상장회사 정보 가져오기 1

데이터 사이언스 입문

303 of 320

  • 데이터프레임의 구조를 확인한다.

상장회사 정보 가져오기 2

데이터 사이언스 입문

304 of 320

  • 열의 자료형과 메모리를 확인한다.
  • 일부 데이터에 널값이 들어간 것을 알 수 있다.

상장회사 정보 가져오기 3

데이터 사이언스 입문

305 of 320

  • 결측값 열을 추가한 후에 결측값을 확인한다.

결측값 확인

데이터 사이언스 입문

306 of 320

  • 결측값을 sector 열의 이름으로 대체한다.
  • 결측값을 처리할 때 사용한 열을 제거한다.

결측값 수정

데이터 사이언스 입문

307 of 320

  • 종목코드와 조회할 기간을 넣고 조회한다.
  • 시가, 고가, 저가, 종가, 거래량, 등락폭으로 표시한다.

종목 데이터 읽어오기

데이터 사이언스 입문

308 of 320

  • 시가, 고가, 저가, 종가, 거래량, 등락폭에 대한 기술통계량을 확인한다.

기술통계량 확인

데이터 사이언스 입문

309 of 320

  • 종가의 왜도를 skew 메소드의 값을 레이블로 넣는 그래프를 그린다.
  • 선 그래프와 히스토그램을 같이 그리는 distplot 함수를 사용했다.

종가에 대한 금액 변동 그래프

데이터 사이언스 입문

310 of 320

  • 다른 종목을 가져와서 동일한 그래프를 그린다.

다른 종목 가져오기

데이터 사이언스 입문

311 of 320

  • 두 종목이 금액변동 및 거래량을 확인한다.
  • 거래량이 변동이 커도 실제 금액의 변동이 별로 없는 것을 볼 수 있다.

두 종목의 종가를 비교한다

데이터 사이언스 입문

312 of 320

자연어 기본

Chapter 15

313 of 320

자연어 기본 처리

314 of 320

  • 한국어 자연어 처리 konlpy 모듈에서 두 개의 말뭉치를 확인한다.
  • 그 중에 헌법을 텍스트를 가지고 문장을 분리해서 첫번째를 출력한다.

자연어 처리

데이터 사이언스 입문

315 of 320

  • 문장을 분리하고 명사(nouns), 형태소(morphs), 품사(pos)를 확인한다.

형태소 분리

데이터 사이언스 입문

316 of 320

HTML 파싱과 워드클라우드

317 of 320

  • 뷰티플 스푸 모듈을 사용해서 html을 파싱하려면 문자열에서 필요없는 문자들을 정리한다.

HTML 문서 준비

데이터 사이언스 입문

318 of 320

  • 뷰티플스프 클래스에 Html 문서 파서를 지정한다.
  • 텍스트 내의 문자를 파싱해서 이를 출력한다.

HTML 문서의 태그(tag)를 파싱

데이터 사이언스 입문

319 of 320

  • 모듈 wordcloud를 사용해서 사용하는 단어들이 중요 빈도를 표시할 수 있다.
  • 이미지를 출력하므로 matplotlib 내의 imshow 함수 사용

워드 클라우드

데이터 사이언스 입문

320 of 320

감사합니다

도서출판 잇플ITPLE

www.itpleinfo.com