따라하며 배우는 파이썬과 데이터 과학( 생능출판사 ) 목차 1장 데이터 과학과 파이썬의 세계로 1.1 데이터에 숨겨진 보물 찾기 : 데이터 과학의 세계로 출발 1.2 데이터 과학은 무엇을 다루나 1.3 데이터 처리 과정과 관련 전문가의 역할 1.4 프로그래밍이란 무엇인가 1.5 프로그래밍을 꼭 알아야 하나 1.6 파이썬 밖에 없을까 1.7 파이썬 개발도구를 설치해 보자 1.8 파이썬 인터프리터를 사용해 보기 1.9 파이썬 개발도구에서 ‘Hello World’를 출력해 보자 1.10 주석으로 이해하기 쉬운 코드를 만들기 1.11 무작정 계산부터 해보자 1.12 print() 함수로 원하는 메시지 출력해 보기 1.13 파이썬이 정말로 편리한 이유 : 모듈 설치하기 1.14 터틀 그래픽으로 눈에 보이는 결과를 만들어 보자 1.15 오류가 발생할 수 있다 2장 값을 담아 다루어 보자 2.1 데이터를 저장하는 공간 : 변수 2.2 변수의 내용은 언제든 바꿀 수 있다 2.3 변수의 이름은 어떻게 짓나 2.4 변수에는 문자열도 저장할 수 있다 2.5 변수를 사용해서 좋은 점이 뭘까 2.6 자료형을 알아야 연산을 할 수 있다 2.7 변수의 자료형을 알려면 : type() 함수 2.8 왜 자료형에 신경써야 할까 : 자료형과 연산 2.9 컴퓨터 수치 표현의 한계, 그리고 컴퓨터의 한계 2.10 문자들의 연속된 모음을 문자열이라고 한다 2.11 문자열을 만드는 방법 2.12 왜 큰따옴표와 작은따옴표를 동시에 사용할까 2.13 왜 오류가 발생할까 : 자료형의 변환 2.14 사용자로부터 문자열 입력받기 : input() 함수 2.15 사용자로부터 정수 입력받기 3장 연산자로 계산을 해 보자 3.1 수식은 어디에나 있다 3.2 할당 연산자를 통해 변수에 값을 넣자 3.3 수식과 연산자는 어떻게 쓰는 걸까 3.4 컴퓨터과학에서 아주 중요한 나머지 연산자 : % 3.5 거듭제곱 연산자 : ** 3.6 복합 할당 연산자라는 편리한 연산자 3.7 두 값의 크기를 비교하는 비교 연산자 3.8 AND, OR, NOT도 연산자로 사용가능하다 : 논리 연산자 3.9 이진수를 잘 다루는 컴퓨터에 최적화된 연산자 : 비트 연산자 3.10 연산자 사이에도 먼저 처리하는 것이 있다 3.11 랜덤 모듈과 math 모듈로 다양한 기능을 사용해보자 4장 조건을 따져 실행해보자 4.1 프로그램의 기본 제어 구조는 크게 세 가지가 있다 4.2 왜 선택 구조가 필요한가 4.3 조건이 맞을때만 실행되는 if 문 4.4 들여쓰기가 아주 중요한 파이썬 : 블록은 들여쓰기로 완성 4.5 배타적 조건에 따라 실행하는 if-else 문 4.6 if-else 문으로 다양한 코드를 작성해보자 4.7 조건이 거짓일 때 연속하여 다른 조건을 검사 4.8 if-else 문 안에 if-else 문 넣기 5장 여러 번 반복하는 일을 하자 5.1 왜 반복이 중요한가 5.2 반복의 종류 5.3 횟수를 정해놓고 반복시키자 5.4 for - in 다음에는 리스트나 문자열도 올 수 있다 5.5 for 문과의 찰떡 궁합인 range() 함수 5.6 range() 함수는 숫자를 생산하는 공장이다 5.7 조건에 따라 반복해서 실행하는 while 문 5.8 일정한 횟수 반복에 while 사용하기 5.9 무한 루프와 break로 빠져나가기 5.10 루프를 제어하는 고급 기법 : continue와 break 5.11 출력을 예쁘게 만드는 포매팅 6장 함수로 일처리를 짜임새있게 하자 6.1 짜임새 있는 기능을 만드는 멋진 기능 : 함수 6.2 def 예약어를 이용하여 함수를 작성하고 호출하기 6.3 함수를 만들고 불러서 일을 시켜보자 6.4 함수에 하나의 값을 넘겨주고 일을 시키자 6.5 함수에 일을 시키고 그 값을 받아오도록 하자 6.6 여러 개의 값을 넘겨주고 여러 개의 값을 돌려받자 6.7 함수에 여러 개의 값을 넘겨주는 고급 기능 6.8 변수의 범위는 어디까지인가 6.9 함수 안에서 전역변수 사용하기 : global 키워드 6.10 함수에 쉽게 일을 시키는 디폴트 인자 6.11 키워드 인자로 더욱더 고급지게 함수활용하기 6.12 자신을 호출하는 재귀 함수 6.13 모듈을 이용해서 함수를 두고두고 재사용하자 6.14 나만의 모듈을 만들고 불러서 사용해 보자 7장 데이터를 리스트와 튜플로 묶어보자 7.1 리스트는 무엇이고 왜 필요한가 7.2 여러개의 항목이 들어가는 리스트를 만들자 7.3 리스트 연산을 해보자 7.4 리스트에 사용가능한 함수를 알아보자 7.5 인덱스를 사용하여 리스트의 항목에 접근하자 7.6 리스트를 원하는 모양으로 자르는 슬라이싱 7.7 리스트의 원소 값을 자유롭게 조작해 보자 7.8 항목을 삭제하는 방법은 여러가지가 있다 7.9 리스트의 객체의 생성과 참조라는 깊이있는 개념 7.10 리스트를 복제한 새로운 리스트 만들기 7.11 리스트를 탐색해보자 7.12 리스트를 크기에 따라 정렬해보자 7.13 리스트 함축은 코드를 짧고 간결하게 만드는데 사용된다 7.14 조건이 붙는 리스트 함축표현도 가능하다 7.15 한번 생성하면 그 값을 고칠 수 없는 자료형 : 튜플 7.16 클래스와 객체가 무엇인가 8장 연관된 데이터를 딕셔너리로 짝을 짓자 8.1 키와 값을 가진 딕셔너리로 자료를 저장하자 8.2 딕셔너리의 기능을 알아보자 8.3 딕셔너리의 다양하고 멋진 기능들을 수행하는 메소드 8.4 람다 함수 = 이름이 없는 함수 8.5 순서가 중요하지 않은 대상들이 모이면 : 집합 8.6 집합의 항목에 접근하는 연산 8.7 집합에 적용할 수 있는 다양한 연산들을 살펴보자 8.8 풍부하고 멋진 집합 연산이 있다 8.9 파일로부터 자료를 읽고 저장해보자 8.10 두 수의 약수와 최대공약수 그리고 프로그래밍적인 사고 9장 텍스트를 처리해보자 9.1 텍스트 데이터란 무엇인가 9.2 문자열에서 개별 문자들을 뽑아보자 9.3 split() 메소드는 문자열을 잘 잘라줘요 9.4 문자열을 이어붙이는 것은 파이썬한테는 쉬운 일 9.5 대문자와 소문자 변환, 그리고 문자열 삭제 9.6 다양한 문자열 처리 함수와 string 모듈 9.7 정보를 한눈에 보여주는 워드 클라우드 9.8 규칙을 이용해서 문자를 추출하는 정규식과 메타 문자 9.9 메타 문자를 좀 더 상세하게 알아보자 9.10 정규식을 활용해서 멋지게 검색을 하자 9.11 정규식에서 특정 문자를 대체하는 함수 : sub() 10장 넘파이로 수치 데이터를 처리해보자 10.1 리스트보다 넘파이의 배열이 훨씬 빠르다 10.2 리스트와 넘파이 배열은 무엇이 다른가 10.3 넘파이의 별칭 만들기, 그리고 간단한 배열 연산하기 10.4 넘파이의 핵심 다차원배열을 알아보자 10.5 강력한 넘파이 배열의 연산을 알아보자 10.6 인덱싱과 슬라이싱을 넘파이에서도 할 수 있다 10.7 논리적인 인덱싱을 통해 값을 추려내자 10.8 2차원 배열 인덱싱도 해 보자 10.9 넘파이는 넘파이 스타일로 인덱싱할 수 있다 10.10 넘파이 스타일의 2차원 배열 잘라내기 10.11 2차원 배열에서 논리적인 인덱싱을 해 보자 10.12 arange() 함수와 range() 함수의 비교 10.13 linspace() 함수와 logspace() 함수 10.14 배열의 형태를 바꾸는 reshape() 함수와 flatten() 함수 10.15 난수를 생성해보자 10.16 난수 생성하기 10.17 정규 분포 난수 생성 10.18 평균과 중간값 계산하기 10.19 상관관계 계산하기 10.20 다수 변수들 사이의 상관관계 계산하기 11장 차트를 멋지게 그려보자 11.1 데이터 시각화 11.2 데이터 시각화를 통해 가치있는 정보를 만드는 사례 11.3 matplotlib 무작정 사용해 보기 11.4 맷플롯립 코드 살펴 보기 11.5 차트 장식을 도와주는 다양한 기법들 11.6 하나의 차트에 여러 개의 데이터를 그려보자 11.7 막대형 차트도 손쉽게 그려보자 11.8 여러나라의 국민소득 추이를 다중 막대형 차트로 그리자 11.9 데이터를 점으로 표현하는 산포도 그래프 그리기 11.10 맛있는 피자가 생각나는 파이 차트 11.11 히스토그램으로 자료의 분포를 한눈에 보아요 11.12 겹쳐진 히스토그램도 그리자 : 다중 히스토그램 11.13 데이터를 효율적으로 표현하는 상자 차트를 알아보자 11.14 여러 개의 상자 차트 그리기 11.15 한 화면에 여러 그래프 그리기 : subplots() 12장 판다스로 데이터를 분석해보자 12.1 엑셀보다 빠른 일처리는 판다스로 12.2 판다스로 어떤 일을 할 수 있나 12.3 CSV 라고 들어봤니 12.4 CSV 데이터의 내용을 읽어 보자 12.5 CSV에서 원하는 데이터를 뽑아 보자 12.6 판다스의 데이터 구조 : 시리즈와 데이터프레임 12.7 판다스로 데이터 파일을 읽기 12.8 데이터를 설명하는 인덱스와 컬럼스 객체 12.9 열을 기준으로 데이터 선택하기 12.10 데이터 가시화하기 12.11 판다스에서도 슬라이싱으로 행 선택이 된다 12.12 새로운 열을 쉽게 생성해 보자 12.13 데이터를 간편하게 분석할 수 있는 기능이 있다 12.14 데이터 집계 분석도 손쉽게 12.15 데이터를 특정한 값에 기반하여 묶는 기능 : 그룹핑 12.16 조건에 맞게 골라내자 : 필터링 12.17 빠진 값을 찾고 삭제하기 12.18 빠진 데이터를 깨끗하게 메워 보자 12.19 데이터 구조를 변경해 보자 12.20 concat() 함수로 데이터프레임을 합쳐보자 12.21 데이터베이스 join 방식의 데이터 병합 - merge 12.22 인덱스를 키로 활용하여 merge 적용해 보기 12.23 데이터를 크기에 따라 나열하자 : 정렬 13장 시각 정보를 다루어 보자 13.1 이미지 데이터는 어떻게 되어 있나 13.2 맷플롯립으로 간단히 이미지 그려보기 13.3 좀 더 편리한 이미지 도구는 없을까 13.4 OpenCV로 이미지 다루어 보자 13.5 합성 사진을 제작해 보자 13.6 이미지에 마스크를 씌워볼까 13.7 원하는 색깔 픽셀만 뽑아 보자 13.8 이미지에 필터를 씌워 보자 13.9 OpenCV로 이미지 필터링하기 13.10 다양한 흐림 필터로 잡음을 제거해 보자 13.11 관심있는 곳만 남겨보자 13.12 윤곽선을 더 잘 뽑아 낼 수 있을까 14장 기계학습으로 똑똑한 컴퓨터를 만들자 14.1 이세돌을 이긴 컴퓨터 프로그램 : 비결이 뭘까 14.2 다양한 종류의 기계학습 기법 14.3 지도 학습은 문제와 정답을 알려주고 학습을 시킨다 14.4 데이터를 잘 설명하는 함수를 찾아라 : 회귀문제 14.5 가장 간단한 회귀 : 선형 회귀 분석 14.6 선형 회귀를 사이킷런 라이브러리로 구현해 보자 14.7 선형 회귀 학습결과를 확인하고 예측하기 14.8 선형회귀로 예측하기 : 키와 몸무게는 상관관계가 있을까 14.9 사이킷런의 당뇨병 예제와 학습 데이터 생성 14.10 체질량지수와 당뇨수치는 어떤 상관관계가 있을까 14.11 학습 데이터와 테스트 데이터를 나누자 14.12 당뇨병 예제를 학습 데이터와 테스트 데이터로 구분하자 14.13 알고리즘이 가지는 오차 14.14 닥스훈트와 사모예드 개를 분류하는 문제 14.15 k-NN 알고리즘을 이용한 분류 14.16 아름다운 붓꽃의 종류를 분류할 준비를 해보자 14.17 k-NN 알고리즘을 적용할 데이터를 살펴보자 14.18 k-NN 알고리즘을 적용해보자 14.19 새로운 꽃에 대해서 모델을 적용하고 분류해 보자 14.20 분류기의 정확성을 알아보자 14.21 사례 분석 - 선형회귀: 기대수명 예측하기 14.22 기대수명 데이터 읽어오기와 결측 확인하기 14.23 각 특징들 사이의 상관관계를 살펴보자 14.24 어떤 특징들이 서로 상관관계가 있을까 14.25 간단한 회귀모델을 만들자 14.26 과적합과 과소적합 15장 텐서플로우로 딥러닝의 맛을 보자 15.1 인간의 뇌를 흉내내자 15.2 가장 단순한 인공 신경망을 살펴보자 15.3 가장 인기있는 기계학습과 딥러닝 플랫폼 : 텐서플로우 15.4 구글 코래버러토리를 이용한 텐서플로우 사용 15.5 패션 MNIST라는 예시 데이터가 제공된다 15.6 패션 MNIST는 레이블이 있는 이미지 데이터이다 15.7 딥러닝? 인공 신경망을 구축해 보자 15.8 인공 신경망을 학습시켜 보자 : 최적화와 에폭 15.9 학습된 신경망을 새 이미지에 적용해 보자 15.10 클래스를 찾아 출력하게 만들기 15.11 나만의 데이터 이용법 : 드라이브에 올린 파일 접근하기기 15.12 구글 클라우드의 자료를 코랩에서 사용하기 15.13 드라이브의 이미지 파일을 읽어 화면에 표시해 보기 15.14 이미지를 모델에 입력으로 제공해 인식을 시도하자 15.15 신경망 학습과 편향 : 학습의 한계를 인식하자 15.16 인공지능? 딥러닝이라는 것은 무엇인가 15.17 층을 쌓아 얼마나 좋아졌는지 눈으로 확인해 보자 15.18 은닉층을 쌓기만 하면 좋은 모델이 될까 15.19 학습된 모델 저장하고 불러와서 사용하기