Top

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를 배포할 계획이라면 이 장을 통해 코드를 신뢰할 수 있게 돕는다.

저자/역자 소개

지은이의 말

pandas는 파이썬을 사용해 구조화된 데이터를 만들고 조작하기 위한 라이브러리다. 구조화했다는 것은 무슨 의미일까? 구조화란 스프레드시트나 데이터베이스에서와 같이 행과 열의 테이블 형식으로 된 데이터를 의미한다. 데이터 과학자, 분석가, 프로그래머, 엔지니어 등은 데이터를 활용하고자 이런 형식의 데이터를 활용하고 있다.
pandas는 ‘작은 데이터’(단일 시스템 메모리에 들어갈 수 있는 데이터)만 다룰 수 있다. 그러나 pandas의 구문과 연산은 PySpark, Dask, Modin, cuDF, Baloo, Dexplo, Tabel, StaticFrame 등 다른 프로젝트에 채택되거나 영감을 줬다. 프로젝트에는 다양한 목표가 있지만 일부 프로젝트는 빅데이터로 확장된다. 따라서 pandas는 구조화된 데이터와 상호작용하기 위한 사실상 표준 API가 되고 있으므로 작동 방식을 이해할 가치가 있다. 내 이름은 매트 해리슨(Matt Harrison)이며 기업 교육을 수행하는 메타스네이크(MetaSnake)라는 회사를 운영한다. 내가 하는 일은 파이썬과 데이터 기술을 향상시키고자 하는 대기업을 훈련하는 것이다. 따라서 수년 동안 수천 명의 파이썬과 pandas 사용자를 가르쳤다.
2판을 쓸 때 내 목표는 pandas와 관련해 많은 사람이 혼동을 겪는 부분을 열심히 돕는 것이었다. pandas는 여러 이점이 있지만 어렵고 혼란스러운 점이 있다. 독자 여러분이 실제 환경에서 그러한 문제점을 해결할 수 있도록 돕고자 한다. 라이브 교육에 관심이 있다면 언제든지 문의하라(matt@metasnake).

지은이 소개

매트 해리슨(Matt Harrison)

2000년부터 파이썬을 사용해 왔다. 파이썬과 데이터 과학에 대한 기업 교육을 제공하는 메타스네이크(MetaSnake)를 운영하고 있다. 『Machine Learning Pocket Reference』(O'Reilly, 2019), 베스트셀러인 『Illustrated Guide to Python 3』(2017), 『Learning the Pandas Library』(2016) 등 여러 책의 저자다.

시어도어 페트로우(Theodore Petrou)

데이터 과학자이자 탐색적 데이터 분석에 중점을 두고 있는 교육 회사 던더 데이터(Dunder Data)의 설립자다. 밋업(meetup) 그룹인 휴스턴 데이터 과학(Houston Data Science)을 이끌고 있는데, 그룹에는 2,000여명의 멤버가 있고 같은 공간에서 데이터 과학을 학습하기 위한 공동체를 형성하는 것을 주목적으로 한다. 던더 데이터를 설립하기 전에는 대규모 정유회사인 슐룸베르거(Schlumberger)에서 데이터 과학자로 근무했는데, 데이터 분석 업무에 대부분의 시간을 보냈다. 수행한 프로젝트에는 엔지니어 텍스트에서 부품 고장의 근본 원인을 파악하는 타깃화된 감정 분석, 맞춤형 대시보드 응용, 판매 상품 가격 산정 에러를 막기 위한 실시간 웹 서비스 등이 있다. 라이스대학교(Rice University)에서 통계학으로 석사 학위를 받았고, 데이터 과학자가 되기 전에는 분석 기술을 이용해 직업 포커 게임을 하기도 했으며 수학을 가르치기도 했다. 실습을 통한 학습을 강조하며 스택 오버플로에서 pandas 관련해 자주 답변하곤 한다.

옮긴이의 말

구조화된 데이터를 다룰 때 최적의 편의성을 제공해주는 pandas 라이브러리의 거의 모든 것을 정리해 둔 책이다. 이미 1판에서 다양한 예제를 통해 pandas 라이브러리를 상세히 설명했지만, 2판에서는 더 많은 예제를 통해 좀 더 친절하고 풍부한 내용을 전달한다. 특히 pandas의 그룹화, 체인, 집계 함수를 동시에 사용하는 방법을 접하게 되면 기존의 까다롭고 복잡한 연산을 단순하게 구현하는 일을 할 수 있음에 놀랄 것이다.
데이터 분석의 중요성과 데이터 과학자의 필요성에 대한 목소리는 하루가 다르게 커져가고 있지만, 데이터 분석에서 소위 ‘정돈된 데이터(Tidy data)’의 필요성과 데이터 전처리의 중요성을 여전히 잘 인식하지 못하는 듯하다. 특히 파이썬을 이용해 데이터를 분석하는 대부분의 사람들은 늘 pandas를 사용하면서도 정작 pandas의 전체 기능을 제대로 학습하려는 노력은 많이 부족한 듯하다. DataFrame과 Series 등 pandas의 근간이 되는 데이터 구조에서 자신이 원하는 부분만 정확히 선택하되 가장 효율적인 방식으로 처리하는 방법을 풍부한 예제를 통해 배울 수 있다.

옮긴이 소개

(주)크라스랩

머신러닝을 기반으로 다양한 연구를 수행하고 있으며, 특히 머신러닝 기반의 금융 분석과 핀테크에 중점을 두고 있다. KAIST 전산학과 계산이론 연구실 출신의 이병욱 대표가 이끌고 있으며, 저서인 『블록체인 해설서』(에이콘, 2019)는 대한민국학술원에서 2019 교육부 우수학술 도서로 선정됐다.

목차

목차
  • 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.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.37 : 아래에서 2행]

[p.58: 4행]
>>> money ? 15
->
>>> money - 15

[p.88: 10행 8번]