데이터ㆍAI 시스템 아키텍트를 위한 실무 가이드
42,000원
중급
도서 소개
많은 연구원에게 파이썬은 데이터를 저장, 가공하고 데이터에서 통찰력을 얻을 수 있는 라이브러리 덕분에 데이터를 다루기에 최고의 도구로 여겨진다. 여러 참고 자료에서 파이썬 라이브러리를 소개하지만, 대부분은 각 라이브러리를 개별적으로 다룬다. 하지만 《파이썬 데이터 사이언스 핸드북》 개정판에서는 IPython, NumPy, Pandas, Matplotlib, Scikit-Learn을 비롯한 관련 도구를 모두 다루며, 데이터 과학 및 머신러닝 활용에 꼭 필요한 도구를 성공적으로 설정하고 사용하는 데 도움이 되는 명확하고 따라 하기 쉬운 예제를 제공한다.
파이썬 코드를 읽고 작성하는 데 익숙한 과학자나 데이터 분석가라면 이 책이 데이터의 가공, 변환, 정제와 다른 유형의 데이터 시각화, 통계 모델이나 머신러닝 모델 구축을 위한 데이터 활용 면에서 흔히 발생하는 문제를 해결하기에 가장 이상적인 종합 참고서가 될 것이다. 간단히 말해, 이 책은 파이썬으로 데이터 사이언스 분야를 배우기 위해 반드시 소장해야 할 책이다.
이 핸드북을 통해 다음 도구의 사용법을 학습할 수 있다.
- IPython과 Jupyter: 파이썬을 이용하는 데이터 과학자를 위한 컴퓨팅 환경 제공
- NumPy: 파이썬의 복잡한 데이터 배열을 효율적으로 저장하고 가공할 수 있는 ndarray(n 차원 배열 객체) 제공
- Pandas: 파이썬에서 레이블이 붙거나 칼럼 형식의 데이터를 효율적으로 저장하고 가공하기 위한 DataFrame 자료구조 제공
- Matplotlib: 파이썬을 이용한 유연한 데이터 시각화 기능 제공
- Scikit-Learn: 기존 머신러닝 알고리즘 중 가장 중요한 것을 파이썬으로 효율적이고 깔끔하게 구현한 라이브러리
저자 소개
제이크 밴더플래스 (Jake VanderPlas)
제이크 밴더플래스는 파이썬 과학 스택의 장기 사용자이자 개발자다. 현재 워싱턴 대학교의 학제간 연구 부장으로 근무하면서 독자적인 천문학 연구를 수행하고 있으며 다양한 분야의 과학자와 함께 상담 및 컨설팅을 진행하고 있다.
역자 소개
김정인
현재 기업 빅데이터 전략팀에서 근무하고 있다. 옮긴 책으로는 《실전! 파이토치 딥러닝 프로젝트》 《강화학습/심층강화학습 특강》 《실전! 텐서플로 2를 활용한 딥러닝 컴퓨터 비전》 《케라스로 구현하는 고급 딥러닝 알고리즘》 《실전! Core ML을 활용한 머신러닝 iOS 앱 개발》 《실전활용! 텐서플로 딥러닝 프로젝트》 《마이크로소프트 봇 프레임워크 프로그래밍》 《애자일 데이터 과학 2.0》 《구글 애널리틱스 완벽 가이드》 《파이썬 데이터 사이언스 핸드북》 《러닝 스칼라》가 있다.
목차
- ▣ 1장: Jupyter - 파이썬에 날개를 달자
- IPython과 Jupyter 시작하기
- __IPython 셸 실행하기
- __Jupyter 노트북 실행하기
- __IPython의 도움말과 문서
- __IPython 셸에서 사용할 수 있는 키보드 단축키
- 향상된 대화형 기능
- __IPython 매직 명령어
- __입력/출력 이력
- __IPython과 셸 명령어
- 디버깅 및 프로파일링
- __에러와 디버깅
- __코드 프로파일링 및 시간 측정
- __IPython 추가 참고 자료
- ▣ 2장: NumPy 소개
- 파이썬의 데이터 타입 이해하기
- __파이썬 정수는 정수 이상이다
- __파이썬 리스트는 리스트 이상이다
- __파이썬의 고정 타입 배열
- __파이썬 리스트에서 배열 만들기
- __처음부터 배열 만들기
- __NumPy 표준 데이터 타입
- NumPy 배열의 기초
- __NumPy 배열 속성 지정
- __배열 인덱싱: 단일 요소에 접근하기
- __배열 슬라이싱: 하위 배열에 접근하기
- __배열 재구조화
- __배열 연결 및 분할
- NumPy 배열 연산: 유니버설 함수
- __루프는 느리다
- __Ufuncs 소개
- __NumPy 유니버설 함수(Ufuncs)
- __고급 Ufunc 기능
- __Ufuncs: 더 알아보기
- 집계: 최솟값, 최댓값, 그리고 그사이의 모든 것
- __배열의 값의 합 구하기
- __최솟값과 최댓값
- __예제: 미국 대통령의 평균 신장은 얼마일까?
- 배열 연산: 브로드캐스팅
- __브로드캐스팅 소개
- __브로드캐스팅 규칙
- __실전 브로드캐스팅
- 비교, 마스크, 부울 로직
- __예제: 비온 날 세기
- __ufunc으로서의 비교 연산자
- __부울 배열로 작업하기
- __마스크로서의 부울 배열
- __키워드 and/or vs. 연산자 &/| 사용하기
- 팬시 인덱싱
- __팬시 인덱싱 알아보기
- __결합 인덱싱
- __예제: 임의의 점 선택하기
- __팬시 인덱싱으로 값 변경하기
- __예제: 데이터 구간화
- 배열 정렬
- __NumPy의 빠른 정렬: np.sort와 np.argsort
- __행이나 열 기준으로 정렬하기
- __부분 정렬: 파티션 나누기
- __예제: k-최근접 이웃 알고리즘
- 구조화된 데이터: NumPy의 구조화된 배열
- __구조화된 배열 만들기
- __고급 복합 타입
- __레코드 배열: 트위스트를 가진 구조화된 배열
- __Pandas로 넘어가며
- ▣ 3장: Pandas로 데이터 가공하기
- Pandas 객체 소개
- __Pandas Series 객체
- __Pandas DataFrame 객체
- __Pandas Index 객체
- 데이터 인덱싱과 선택
- __Series에서 데이터 선택
- __DataFrame에서 데이터 선택
- Pandas에서 데이터 연산하기
- __유니버설 함수: 인덱스 보존
- __유니버설 함수: 인덱스 정렬
- __유니버설 함수: DataFrame과 Series 간의 연산
- 누락된 데이터 처리하기
- __누락된 데이터 처리 방식의 트레이드오프
- __Pandas에서 누락된 데이터
- __Pandas의 널러블(Nullable) 데이터 타입
- __널 값 연산하기
- 계층적 인덱싱
- __다중 인덱스된 Series
- __MultiIndex 생성 메서드
- __MultiIndex 인덱싱 및 슬라이싱
- __다중 인덱스 재정렬하기
- 데이터세트 결합: Concat과 Append
- __복습: NumPy 배열 연결
- __pd.concat을 이용한 간단한 연결
- 데이터세트 결합하기: 병합과 조인
- __관계 대수
- __조인 작업의 분류
- __병합 키 지정
- __조인을 위한 집합 연산 지정하기
- __열 이름이 겹치는 경우: suffixes 키워드
- __예제: 미국 주 데이터
- 집계와 분류
- __행성 데이터
- __Pandas의 간단한 집계 연산
- __GroupBy: 분할, 적용, 결합
- 피벗 테이블
- __피벗 테이블 시작
- __피벗 테이블 등장 배경
- __피벗 테이블 구문
- __예제: 출생률 데이터
- 벡터화된 문자열 연산
- __Pandas 문자열 연산 소개
- __Pandas 문자열 메서드 목록
- __예제: 조리법 데이터베이스
- 시계열 다루기
- __파이썬에서의 날짜와 시간
- __Pandas 시계열: 시간으로 인덱싱하기
- __Pandas 시계열 데이터 구조
- __정규 시퀀스: pd.date_range()
- __주기와 오프셋
- __리샘플링, 시프팅, 윈도잉
- __예제: 시애틀 자전거 수 시각화
- 고성능 Pandas: eval()과 query()
- __query()와 eval()의 등장 배경: 복합 표현식
- __효율적인 연산을 위한 pandas.eval()
- __열 단위의 연산을 위한 DataFrame.eval()
- __DataFrame.query() 메서드
- __성능: 이 함수를 사용해야 하는 경우
- __추가 자료
- ▣ 04장: Matplotlib을 활용한 시각화
- 일반적인 Matplotlib 사용법
- __matplotlib 임포트하기
- __스타일 설정하기
- __show()를 사용할 것인가, 말 것인가 - 플롯 표현 방법
- 간단한 라인 플롯
- __플롯 수정하기: 선 색상과 스타일
- __플롯 조정하기: 축 경계
- __플롯에 레이블 붙이기
- __Matplotlib 주의사항
- 간단한 산점도
- __plt.plot을 사용한 산점도
- __plt.scatter를 활용한 산점도
- __plot과 scatter의 차이: 효율성 측면에서 유의할 점
- __오차 시각화하기
- 밀도 플롯과 등고선 플롯
- __3차원 함수 시각화하기
- __히스토그램, 구간화, 밀도
- __2차원 히스토그램과 구간화
- 플롯 범례 맞춤 변경하기
- __범례에 사용할 요소 선택하기
- __점 크기에 대한 범례
- __다중 범례
- 색상 막대 맞춤 변경하기
- __색상 막대 맞춤 변경하기
- __예제: 손으로 쓴 숫자
- 다중 서브플롯
- __plt.axes: 직접 만든 서브플롯
- __plt.subplot: 간단한 서브플롯의 그리드
- __plt.subplots: 한 번에 전체 그리드 만들기
- __plt.GridSpec: 복잡한 배치
- 텍스트와 주석
- __예제: 미국 출생률에 휴일이 미치는 영향
- __변환 및 텍스트 위치
- __화살표와 주석
- 눈금 맞춤 변경하기
- __주 눈금과 보조 눈금
- __눈금 또는 레이블 숨기기
- __눈금 개수 줄이기와 늘리기
- __팬시 눈금 포맷
- __위치 지시자와 서식 지시자 요약
- Matplotlib 맞춤변경하기: 설정과 스타일시트
- __직접 플롯 변경하기
- __기본값 변경하기: rcParams
- __스타일시트
- Matplotlib에서 3차원 플로팅하기
- __3차원 점과 선
- __3차원 등고선 플롯
- __와이어프레임과 표면도
- __표면 삼각측량법
- Seaborn을 활용한 시각화
- __Seaborn 플롯 탐색하기
- __예제: 마라톤 완주 시간 탐색
- __추가 자료
- __기타 파이썬 그래픽 라이브러리
- ▣ 5장: 머신러닝
- 머신러닝이란 무엇인가?
- __머신러닝의 범주
- __머신러닝 응용의 정성적 사례
- __정리
- Scikit-Learn 소개
- __Scikit-Learn에서의 데이터 표현 방식
- __Estimator API
- __응용: 손으로 쓴 숫자 탐색
- __정리
- 초모수와 모델 검증
- __모델 검증에 대한 고려사항
- __최적의 모델 선택하기
- __학습 곡선
- __실제 검증: 그리드 검색
- __정리
- 특징 공학
- __범주 특징
- __텍스트 특징
- __이미지 특징
- __유도 특징
- __누락 데이터의 대체
- __특징 파이프라인
- 심화 학습: 나이브 베이즈 분류
- __베이즈 분류
- __가우스 나이브 베이즈
- __다항분포 나이브 베이즈
- __언제 나이브 베이즈 모델을 사용할 것인가
- 심화 학습: 선형 회귀
- __단순 선형 회귀
- __기저 함수 회귀
- __정규화
- __예제: 자전거 통행량 예측
- 심화 학습: 서포트 벡터 머신
- __서포트 벡터 머신의 동기
- __서포트 벡터 머신: 마진 최대화
- __예제: 안면 인식
- __정리
- 심화 학습: 의사결정 트리와 랜덤 포레스트
- __랜덤 포레스트 등장 배경: 의사결정 트리
- __추정 모델의 앙상블: 랜덤 포레스트
- __랜덤 포레스트 회귀
- __예제: 랜덤 포레스트를 사용한 숫자 분류
- __정리
- 심화 학습: 주성분 분석
- __주성분 분석 소개
- __PCA 응용: 노이즈 필터링
- __예제: 고유얼굴
- __정리
- 심화 학습: 다양체 학습
- __다양체 학습: ‘HELLO’
- __다차원 척도법(MDS, Multidimensional Sacling)
- __비선형 다양체 학습: 국소 선형 임베딩
- __다양체 방식에 대한 몇 가지 생각
- __예제: 얼굴 데이터에 아이소맵 적용
- __예제: 숫자 데이터의 구조 시각화
- 심화 학습: k-평균 군집화
- __k-평균 소개
- __기댓값-최대화
- __예제
- 심화 학습: 가우스 혼합 모델
- __GMM 등장 배경: k-평균의 약점
- __E-M 단계 일반화하기: 가우스 혼합 모델
- __공분산 유형 선택하기
- __밀도 추정에 GMM 사용하기
- __예제: 새로운 데이터를 생성하는 GMM
- 심화 학습: 커널 밀도 추정
- __KDE 등장 배경: 히스토그램
- __커널 밀도 추정의 실제 적용
- __교차 검증을 통한 대역폭 선택
- __예제: 나이브하지 않은 베이즈(Not-So-Naïve Bayes)
- 응용: 안면 인식 파이프라인
- __HOG 특징
- __실제 HOG: 간단한 안면 인식기
- __주의사항 및 개선사항
- __머신러닝 관련 추가 자료
예제 코드
- GitHub 저장소: https://github.com/wikibook/pydsr
- ZIP 형식으로 다운로드: https://github.com/wikibook/pydsr/archive/refs/heads/main.zip