Pandas Cookbook 2/e [파이썬 데이터 과학 기초]
- 원서명Pandas 1.x Cookbook: Practical recipes for scientific computing, time series analysis, and exploratory data analysis using Python, 2nd Edition (ISBN 9781839213106)
- 지은이매트 해리슨(Matt Harrison), 시어도어 페트로우(Theodore Petrou)
- 옮긴이(주)크라스랩
- ISBN : 9791161754840
- 45,000원
- 2020년 12월 29일 펴냄
- 페이퍼백 | 768쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 데이터 과학
책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/pandas-cookbook-2e
요약
pandas의 모든 기능을 친절한 예제와 설명, 실제 파이썬 코드를 통한 실습과 함께 설명한다. pandas의 핵심 DataFrame과 Series를 주축으로 함수, 메서드, 속성을 설명하고 장단점은 물론 메모리 사용량과 처리 시간도 비교한다. 금융 데이터에서 가장 중요한 시계열 자료를 처리하는 다양한 방법과 SQL 데이터베이스에 연결하는 방법도 알려준다. 한편 pandas 라이브러리의 그룹화 함수를 체인 기능과 집계함수를 결합해 사용할 때 pandas 라이브러리의 강력한 힘을 느낄 수 있다.
그리고 정돈된 데이터(tidy data)의 정의와 함께 데이터 정돈 방법과 절차를 자세히 알아보고 matplotlib, python plot, seaborn을 이용한 데이터 시각화와 각각의 장단점을 상세히 설명한다.
이 책에서 다루는 내용
■ 모든 데이터셋을 탐색할 수 있게 해주는 pandas의 기본 지식
■ 쿼리와 선택으로 데이터 중 원하는 부분만 부분집합으로 적절히 골라내는 방법
■ 데이터를 종합하거나 각 그룹으로 변환하기 전 개별 그룹으로 분할하는 방법
■ 데이터 분석과 시각화가 용이하도록 데이터를 정돈된 형식으로 재구성하기
■ 복잡한 실제 환경 데이터를 머신러닝에서 사용할 수 있도록 준비하기
■ pandas의 SQL 유사 연산 기능으로 서로 다른 소스의 데이터 병합하기
■ pandas의 독보적인 시계열 데이터 처리 능력
■ pandas의 matplitlib나 seaborn을 사용한 시각화 기능
이 책의 대상 독자
단순한 예제에서 고급 예제까지 거의 100가지 예제를 다룬다. 모든 예제는 간단명료하고 최신 파이썬 문법과 구문을 사용해 작성했다. ‘작동 원리’ 절에서는 예제의 복잡한 각 단계를 상세히 설명하며, 종종 ‘추가 사항’ 절에서 새로운 예제에 대한 정보를 얻을 수 있다.
처음 6개 장의 예제는 간단한 예제로 구성됐으며, 이후 5개 장에 비해 기본적이고 근본적인 pandas 연산에 중점을 둔다. 나머지 5개 장은 고급 연산과 프로젝트 성격이 강한 예제를 소개한다. 난이도가 광범위하므로 초보자나 숙련자 모두에게 유용하다. 내 경험에 비춰 봤을 때 pandas를 일상적으로 사용하는 사람도 pandas의 관용구에 익숙하지 않다면 마스터하지 못할 것이다. 이는 pandas가 방대한 영역을 다루기 때문이다. 대부분 동일한 연산을 수행할 수 있는 방법은 여러 가지가 있기 때문에 사용자는 원하는 결과를 얻고자 비효율적인 방법을 사용하고 있을 수도 있다. 동일한 문제를 해결하는 pandas 솔루션의 속도 차이가 수십 배 이상 다른 경우도 빈번하다.
필수 지식은 오직 파이썬뿐이다. 독자가 리스트(list), 집합(set), 딕셔너리(dictionary), 튜플(tuple) 등의 파이썬 내장 데이터 저장소에 어느 정도 익숙하다고 가정한다.
이 책의 구성
1장, ‘pandas 기초’에서는 pandas 데이터 구조를 이루는 두 구성 요소인 Series와 DataFrame을 해부하고 용어를 정리한다. 각 열은 동일한 데이터 형식을 가져야 하고 우리는 각 데이터 형식을 알아본다. 이를 통해 Series와 DataFrame의 메서드를 호출하고 바꾸면서 두 요소의 진정한 힘을 배울 수 있다.
2장, ‘기본 DataFrame 연산’에서는 데이터 분석을 위해 가장 중요하고 보편적인 연산을 알아본다.
3장, ‘DataFrame 생성과 유지’에서는 DataFrame을 생성하고 값을 넣는 다양한 방법을 알아본다.
4장, ‘데이터 분석 시작’에서는 데이터를 읽어 들인 후, 해야 할 반복 작업에 도움이 되는 내용을 다룬다.
5장, ‘탐색적 데이터 분석’에서는 수치와 범주 데이터를 비교하는 기본 분석 기법을 다룬다. 또한 일반적인 시각화 기법도 알아본다.
6장, ‘데이터의 부분집합 선택’에서는 서로 다른 부분집합 선택에서 다양하고 혼동되는 부분 등 여러 주제를 다룬다.
7장, ‘행 필터링’에서는 불리언 조건을 이용해 데이터의 부분집합을 선택하는 쿼리 프로세스를 다룬다.
8장, ‘인덱스 정렬’에서는 상당히 중요하면서도 종종 잘못 이해하고 있는 인덱스 객체를 다룬다. 인덱스를 잘못 다루면 많은 잘못된 결과를 초래한다. 예제에서 강력한 결과를 얻을 수 있는 올바른 사용법을 알아본다.
9장, ‘그룹화를 위한 집계, 여과, 변환’에서는 데이터 분석에 필요한 강력한 그룹화 기능을 다룬다. 따라서 목적에 맞는 그룹에 적용할 사용자 정의 함수를 구성할 수 있다.
10장, ‘정돈된 형식으로 데이터 재구성’에서는 정돈된 데이터를 설명하고 중요한 이유를 알아보고 서로 다른 형태의 데이터를 정돈하는 방법을 다룬다.
11장, ‘pandas 객체 병합’에서는 DataFrame과 Series를 수직과 수평으로 병합하는 여러 메서드를 알아본다. 또한 웹 스크래핑으로 트럼프와 오바마 대통령의 국정 수행 평가 점수를 비교하고 웹 스크래핑과 SQL 관계형 데이터베이스 연결을 실습해본다.
12장, ‘시계열 분석’에서는 가능한 모든 시간 차원에 따라 분해할 수 있는 시계열의 강력한 고급 기능을 알아본다.
13장, ‘matplotlib, pandas, seaborn을 이용한 시각화’에서는 pandas에서 모든 도식화의 기본이 되는 matplotlib 라이브러리를 소개한다. 그리고 pandas plot 메서드와 seaborn 라이브러리 등 pandas에서 직접 제공하지 않는 다양하고 심미적인 시각화 기능을 알아본다.
14장, ‘pandas 디버깅과 테스트’에서는 DataFrame과 pandas 코드를 테스트하는 메커니즘을 살펴본다. 생산 라인에 pandas를 배포할 계획이라면 이 장을 통해 코드를 신뢰할 수 있게 돕는다.
목차
목차
- 1장. pandas 기초
- pandas 임포트
- 소개
- pandas DataFrame
- DataFrame 속성
- 데이터 형식 이해
- 열 선택
- Series 메서드 호출
- Series 연산
- Series 메서드 체인
- 열 이름 변경
- 열의 생성과 삭제
- 2장. 기본 DataFrame 연산
- 소개
- 여러 DataFrame 열 선택
- 메서드를 사용해 열 선택
- 열 이름 정렬
- DataFrame 요약
- DataFrame 메서드 체인
- DataFrame 연산
- 결측치 비교
- DataFrame 연산 방향 전환
- 대학 인종 다양성 지수 결정
- 3장. DataFrame 생성과 유지
- 소개
- 스크래치에서 DataFrame 생성
- CSV 작성
- 대형 CSV 파일 읽기
- 엑셀 파일 사용
- ZIP 파일로 작업
- 데이터베이스와 작업
- JSON 파일 읽기
- HTML 테이블 읽기
- 4장. 데이터 분석 시작
- 소개
- 데이터 분석 루틴 개발
- 데이터 딕셔너리
- 데이터 형식 변경으로 메모리 절약
- 최대 중에 최소 선택
- 정렬해 각 그룹에서 가장 큰 항목 선택
- sort_values를 사용해 nlargest 복제
- 추적 지정가 주문 가격 계산
- 5장. 탐색적 데이터 분석
- 소개
- 요약 통계량
- 열 형식
- 예제 구현
- 범주형 데이터
- 연속 데이터
- 범주 간의 연속 값 비교
- 두 개의 연속 열 비교
- 범주 값과 범주 값 비교
- pandas 프로파일링 라이브러리 사용
- 6장. 데이터의 부분집합 선택
- 소개
- Series 데이터 선택
- DataFrame 행 선택
- DataFrame 행과 열을 동시에 선택
- 정수와 레이블 모두로 데이터 선택
- 사전식으로 슬라이싱
- 7장. 행 필터링
- 소개
- 불리언 통계량 계산
- 다중 불리언 조건 구성
- 불리언 배열을 사용한 필터링
- 행 필터링과 인덱스 필터링 비교
- 유일하고 정렬된 인덱스를 사용한 선택
- SQL WHERE 절 해석
- 쿼리 메서드를 사용한 불리언 인덱싱의 가독성 향상
- .where 메서드를 사용해 Series 크기 유지
- DataFrame 행 마스킹
- 불리언, 정수 위치, 레이블을 사용해 선택
- 8장. 인덱스 정렬
- 소개
- 인덱스 객체 검사
- 데카르트 곱 생성
- 인덱스 폭발
- 동일하지 않은 인덱스로 값 채우기
- 다른 DataFrame의 열 더하기
- 각 열의 최댓값 강조
- 메서드 체인으로 idxmax 복제
- 열에서 최대 공통 최댓값 찾기
- 9장. 그룹화를 위한 집계, 여과, 변환
- 소개
- 집계 정의
- 복수 열과 함수를 사용한 그룹화와 집계
- 그룹화 후 다중 인덱스 제거
- 사용자 정의 집계 함수를 사용한 그룹화
- *args와 **kwargs를 사용한 집계 함수 사용자 정의
- groupby 객체 검사
- 소수 인종이 과반인 주를 필터링
- 체중 감량 내기를 통한 변신
- apply를 사용해 주별 가중 평균 SAT 점수 계산
- 연속 변수를 기준으로 그룹화
- 도시 간 총 비행 횟수 계산
- 가장 긴 연속 정시 비행 찾기
- 10장. 정돈된 형식으로 데이터 재구성
- 소개
- 스택을 사용해 변수 값을 열 이름으로 정돈
- melt를 사용해 변수 값을 열 이름으로 정돈
- 여러 변수의 그룹을 동시에 스택
- 스택된 데이터 되돌리기
- groupby 집계 후 언스택
- groupby 집계로 pivot_table 복제
- 손쉬운 재구성을 위한 축 레벨 이름 변경
- 여러 변수가 열 이름으로 저장될 때의 정돈
- 여러 변수가 단일 열로 저장될 때 정돈
- 둘 이상의 값이 동일 셀에 저장될 때의 정돈
- 변수가 열 이름과 값으로 저장됐을 때의 데이터 정돈
- 11장. pandas 객체 병합
- 소개
- DataFrame에 새 행 추가
- 여러 DataFrame을 함께 연결
- concat, join, merge의 차이점 이해
- SQL 데이터베이스에 연결
- 12장. 시계열 분석
- 소개
- 파이썬과 pandas 날짜 도구의 차이점 이해
- 시계열을 지능적으로 슬라이스
- 시간 데이터로 열 필터링
- DatetimeIndex에서만 작동하는 메서드 사용
- 주간 범죄 수 계산
- 주간 범죄와 교통사고를 별도로 집계
- 주별, 연도별 범죄 측정
- timeIndex를 사용해 익명 함수로 그룹화
- Timestamp와 다른 열을 기준으로 그룹화
- 13장. matplotlib, pandas, seaborn을 이용한 시각화
- 소개
- matplotlib로 시작
- matplotlib에 대한 객체지향 가이드
- matplotlib로 데이터 시각화
- pandas를 사용한 기본 도식화
- flights 데이터셋 시각화
- 새로운 경향을 발견하기 위한 누적 영역 차트
- seaborn과 pandas의 차이점
- seaborn 그리드를 사용한 다변량 분석
- seaborn으로 diamonds 데이터셋의 심슨 역설 발견
- 14장. pandas 디버깅과 테스트
- 데이터를 변환하는 코드
- Apply 성능
- Dask, Pandarell, Swifter 등으로 apply 성능 향상
- 코드 검사
- Jupyter에서의 디버깅
- Great Expectations를 이용한 데이터 무결성 관리
- pandas와 함께 pytest 사용
- Hypothesis를 사용해 테스트 생성
도서 오류 신고
정오표
정오표
[p.37 : 아래에서 2행]
[p.58: 4행]
>>> money ? 15
->
>>> money - 15
[p.88: 10행 8번]