본문 바로가기

Life/Books

[서평] Do it! 데이터 분석을 위한 판다스 입문 (서평단)

728x90
반응형

 

 
다니엘 첸 저/시진 역 | 이지스퍼블리싱 | 2023년 11월 20일
 

전체적인 감상 (느낀 점)

"(주로 정형) 데이터 분석에 꼭 필요한 라이브러리 판다스, 판다스 사용법을 배울 수 있는 책"

먼저, 이 책은 판다스를 접해보지 않으셨던 분들도 파이썬 설치부터 시작해서 판다스의 기본적인 자료 구조인 시리즈와, 데이터 프레임부터 시작하여 데이터 시각화나, 데이터 전처리(구조화), apply/람다 함수 적용, 데이터 결합 및 분해, 그룹 연산(groupby), 결측값 처리, 문자열 처리, 시계열 데이터 처리 등 꼭 필요한 개념들을 알 수 있도록 구성되어 있습니다.
 
제가 이 책을 읽다가 놀랐던 점은 이 책의 저자가 외국 분이시고, 번역서였다는 점인데요. 그 사실을 읽다가 표지를 보고 알았을 만큼 번역이 메끄럽다는 느낌이 들었습니다. 이러한 기술서에서는 이렇게 메끄러운 번역을 접했던 적이 얼마만인지도 모르겠네요!
 
저도 알고 있던 개념도 있지만 이번에 apply 메서드나 람다 함수, 그리고 어렴풋이만 알고 있던 tidy data 등 추상적인 개념들을 다시 한번 짚고 넘어가서 구체적으로 익힐 수 있는 좋은 기회가 되었습니다. 앞으로 틈날 때마다 예제 코드들 실행해보고, 결과도 정리하며 깊이 학습할 예정입니다.

 
 
 

이 책의 구성 & 총평 (사실 위주)

 
1장은 판다스를 사용하기 위한 환경 설정에 초점을 맞추고 있으며, 아나콘다 설치부터 주피터 노트북 사용 방법, pip를 통한 패키지 관리까지 기초적인 내용을 상세히 다루고 있습니다.
2장은 판다스의 기본적인 기능과 필요성을 설명하면서 데이터프레임과 시리즈의 개념을 소개합니다. 이 장에서는 데이터를 불러오고, 추출하며, 기본적인 통계 계산을 수행하는 방법을 학습합니다. 특히, 데이터를 그래프로 시각화하는 방법에 대한 설명은 판다스의 강력한 기능 중 하나를 잘 보여줍니다.
이어지는 3장에서는 판다스의 핵심 자료구조인 시리즈와 데이터프레임을 깊이 있게 탐구합니다. 여기서는 데이터 변환, 저장 및 불러오기 방법 등이 포함되어 있습니다. 특히, 다양한 형식으로 데이터를 저장하고 불러오는 방법은 실무에서 매우 유용할 것입니다.
 
책의 중반부인 4장에서는 데이터 시각화를 위한 matplotlib과 seaborn 라이브러리에 대한 설명이 포함되어 있습니다. 이 부분은 데이터를 더욱 효과적으로 분석하고 이해하는 데 도움이 됩니다.
5~8장은 판다스 사용의 핵심인 데이터 정리와 관리 내용을 다루는데, 이 책은 이 부분을 매우 잘 다루고 있습니다. '깔끔한 데이터 만들기', 'apply() 메서드로 함수 적용하기', '그룹으로 묶어 연산하기' 등의 장은 데이터 처리 기술을 한 단계 업그레이드할 수 있는 통찰을 제공합니다. (저는 여기서 데이터 정리 부분을 인상깊게 읽었고, 위에도 해당 내용은 정리해 두었습니다 ; 더 공부가 필요한 부분같아요 저도)


책의 후반부인 9장에서 12장은 결측값 처리, 자료형 변환, 문자열 처리, 시계열 데이터 처리 등 판다스의 고급 기능들을 다룹니다. 이 부분은 데이터 과학자나 분석가들에게 특히 유용할 것입니다. (저도 이부분을 좀 더 실제 분석할때 참고할만한 내용들, 항상 까먹어서 그때마다 구글링해야하는 부분들을 많이 다루고 있더라구요)
 
총평을 하자면, 이 책의 전반부는 판다스를 처음 접하는 사람들에게도, 이미 어느 정도 경험이 있(다고 생각했던 저같은 뜨내기 사용자 포함)으신 사용자들에게도 매우 유익한 자료입니다. 저자는 복잡한 개념을 쉽게 설명하고, 단계별로 풀어서 설명하는 방식을 취하고 있습니다. 각 단계 마다 예제를 통해 이론을 어떻게 적용하는지 보여주며 이해를 돕고 있습니다. 추가로 번역 또한 외국 저자의 책인줄 모를 정도로 메끄럽게 잘 윤문되어 있어서 내용을 이해하는데 온전히 집중할 수 있었습니다.
 
 
 

구성 중 인상 깊었던 부분 소개

 
[Point 1] 이해를 돕는 도식/도표
 

시리즈와 데이터 프레임 개념 설명

 

먼저 초반에 데이터 프레임과 시리즈를 설명하는 부분인데요, 여기서는 데이터프레임은 시리즈의 집합(여러개 모임)이라는 점을 그림을 통해서 설명해주고 있는데, 한눈에 들어오는 그림이라 이해가 쉬웠습니다.


 
 

[Point 2] (강추!!) 단언컨데 이 책에서 가장 많이 도움을 받았던 부분 : 한걸음 더!

한걸음 더! 코너

 
그리고, 이 책에서 제가 가장 좋았던 부분은 바로 '한걸음 더!' 코너 인데요. 제목은 한걸음 더 이지만 내용은 어렵다기 보다는 앞에서 실행했던 코드들을 보면서 궁금증을 가질만한 부분들을 딱 시의적절하게 다뤄주셔서 궁금증을 해결할 수 있었습니다.
처음 접하시는 분들도 어렵더라도 이 부분을 한번씩 꼭 읽어보시고, 어려운 용어들만 구글링 or 요즘 최고의 과외선생님인 ChatGPT를 통해서 같은 질문을 해보거나 찾아보면 답을 얻으실 수 있을겁니다! 
 

 


 
[Point 3] 개념을 코드와 함께 차근차근 순차적으로 설명
 

이 책에서 좋았던 부분은 개념을 말로만 설명하는것이 아니라 순서대로, 코드를 한줄한줄 주피터노트북에 실행하듯이 설명해주고 있어서 실제 컴퓨터앞에 앉아서 읽지 않더라도 흐름을 따라가며 이해할 수 있었다는 점이에요!
 
먼저, 예를 들어 2장 앞부분에서 groupby 메서드를 설명하는데, 그냥 groupby 를 적용할 경우 결과가 출력되지 않는 이유를 2번, 3번, 4번, 5번, 6번 이렇게 순차적으로 한줄한줄씩 코드를 실행시켜가면서 값(내용)이 아닌 객체가 저장된 메모리 주소만 출력된다는 것을 보여주니 저도 아무생각 없이 쓰던 groupby 를 더 잘 이해할 수 있었습니다.
 

Groupby 메서드 설명

 

apply 함수 설명 (왼쪽 2페이지) / Lambda 함수 설명 (오른쪽 1페이지)

 
이부분은 6장 데이터프레임에 사용자 정의 함수를 적용할 수 있는 apply 함수 부분인데요, apply도 좋지만 간단한 함수라면 바로 뒤에서 다루는 아래 사진과 같은 lambda 함수를 이용하면 더 가독성있게 코드를 작성할 수 있을거에요!
 
** 람다 함수에 대한 개념은 이 글의 링크를 확인해주세요! : https://woomii.tistory.com/63

 

[Python] Lambda 함수 사용법(for 데이터분석가)

안녕하세요! 오늘은 파이썬을 사용할 때 유용한 람다 함수에 대해 설명한 글을 간단히 소개드리려 해요! Lambda 함수는 익명 함수라고도 하며 이름 없이 정의됩니다. 이러한 함수는 완전한 함수

woomii.tistory.com

 

 

[Point 4] 조심해야할 부분도 알려줘요!

 

Inplace

 
아! 그리고 이부분은 저도 판다스를 다루다가 가끔씩 실수하는 부분인데요.. Inplace=True를 사용할 때는 주의하셔야합니다.
기존의 데이터프레임에 판다스 함수나 메서드를 적용할 때 괄호안에 (Inplace=True, ...)를 적용하면 기존 데이터프레임에 덮어씌워지기 때문에 의도한 사용이 아니라면 사용을 자제해 주세요!
이 실수 떄문에 날려먹은 데이터가 많습니다...
 
 
 
 


지금까지는 제가 이 책을 읽으면서 인상 깊었던 부분 몇가지를 보여드렸는데요.
아래의 내용은 저도 '05 깔끔한 데이터 만들기' 장을 읽다가 이해가 잘 가지 않는 부분들이 있어서
해당 내용에 대한 부연 설명과 추가 예제를 찾아서 간단하게 정리해본 내용입니다! (powered by ChatGPT)
 
알고 계시거나 필요 없는 부분이라면 생략하세요 ^^;;
 


(참고) 긴 데이터? 넓은 데이터?

긴 데이터? 넓은 데이터?
저도 책을 읽어보다 길게 피벗? 넓게 피벗? 각각의 개념이 무엇인지 두루뭉술하게는 알것 같지만 정확히 알지는 못하겠어서 GPT 선생님께 질문해 보았습니다. 자세한 내용은 저도 다음 기회가 되면 실제 데이터와 예제 코드를 보여드리면서 내용을 정리해 보겠습니다.

 


"tidy data"라는 개념은 데이터 과학에서 데이터를 체계적이고 분석하기 쉬운 형태로 정리하는 방법을 말합니다. 이와 관련하여 "긴 데이터(long data)"와 "넓은 데이터(wide data)"라는 용어가 사용됩니다. 이들은 데이터의 구조를 설명하는 용어이며, pandas 라이브러리의 melt 및 pivot_table 메서드는 이러한 데이터 구조를 변환하는 데 사용됩니다. 그리고 결론적으로, melt와 pivot_table 메서드는 pandas에서 긴 데이터와 넓은 데이터 구조 간의 변환을 가능하게 해주며, 이는 데이터 분석 및 시각화 작업을 용이하게 하는 중요한 기능입니다. 이러한 메서드를 통해 데이터를 효율적으로 재구성하고, 분석에 적합한 형태로 만들 수 있습니다.


1. 긴 데이터 (Long Data):
* 긴 데이터는 각 행이 하나의 관측치(observation)을 나타내는 형태
* 일반적으로 "긴" 형태로 데이터가 표현되면, 같은 변수가 여러 행에 걸쳐 반복되어 나타남
* 이러한 형태는 데이터 분석 및 시각화에 유용하며, 대부분의 데이터 분석 시나리오에서 선호
 
2. 넓은 데이터 (Wide Data):
* 넓은 데이터는 각 관측치가 하나의 행에 여러 열로 퍼져 있는 구조
* 이 형태는 특정 유형의 데이터, 특히 시계열 데이터에서 자주 보임
* 넓은 데이터는 정보를 보기 쉽게 만들지만, 일반적인 데이터 분석 방법에는 적합하지 않을 수 있음
 
 
3. Pandas melt 메서드 [넓은 데이터 -> 긴 데이터]:

melt 메서드는 넓은 데이터를 긴 데이터로 변환합니다.
이 방법은 여러 열에 퍼져 있는 데이터를 하나의 열로 모으고, 각 데이터 포인트에 해당하는 변수 이름을 다른 열에 저장합니다.
이렇게 하면 데이터가 "긴" 형태로 변환되어, 분석과 시각화가 쉬워집니다.
 
 
4. Pandas pivot_table 메서드:
 

  • pivot_table 메서드는 긴 데이터를 넓은 데이터로 변환합니다.
  • 이 메서드는 특정 변수를 기준으로 데이터를 재구성하여, 요약 정보나 특정 구조의 테이블을 만드는 데 유용합니다.
  • 예를 들어, 여러 행에 걸쳐 있는 데이터를 요약하여 각 변수별로 하나의 열에 집계할 수 있습니다.

5. 예시
1) 긴 데이터 (Long Data) : 긴 데이터는 각 행이 단일 관측치를 나타내며, 같은 개체에 대한 정보가 여러 행에 걸쳐 나타납니다. 이 형태는 각 관측치에 대한 추가 정보(예: 어떤 시험의 점수인지)를 포함합니다.
 

긴 데이터의 예시

 
2) 넓은 데이터 (Wide Data) : 넓은 데이터는 각 행이 한 개체(예: 사람)의 여러 관측치(예: 시험 점수)를 나타내는 형태입니다. 여기에는 각 개체에 대한 모든 정보가 한 행에 나타납니다. (우리가 일반적으로 문서에서 사용하는 형태로 보기는 좋네요(?))

넓은 데이터의 예시


이 두 형태 사이의 주요 차이점은 데이터의 구조입니다. 넓은 데이터는 각 개체에 대한 모든 정보를 하나의 행에 저장하는 반면, 긴 데이터는 각 개체에 대한 정보를 여러 행에 걸쳐 저장합니다. 이러한 차이는 데이터의 분석과 시각화 방법에 영향을 미칩니다. 예를 들어, 긴 데이터 형식은 여러 변수에 대한 트렌드를 비교하는 데 적합한 반면, 넓은 데이터 형식은 각 개체별 전체적인 정보를 한눈에 볼 때 유리합니다.

 


 
 
 
마지막으로 이책의 목차와 자세한 정보를 알수 있는 판매링크, 그리고 책에 나온 코드들을 실행해 볼 수 있는 git 링크를 남겨둡니다.

목차

01 판다스 실습 환경 준비하기
__01-1 아나콘다 설치하기
__01-2 판다스 실습 준비하기
__01-3 안녕? 주피터 노트북!
__01-4 파이썬 패키지 관리자 pip 알아보기

02 판다스 시작하기
__02-1 판다스가 왜 필요할까? : 데이터프레임과 시리즈
__02-2 데이터셋 불러오기 : 데이터 분석은 데이터셋 불러오기부터
__02-3 데이터 추출하기 : 열 데이터 추출하기, 행 데이터 추출하기, loc와 iloc로 데이터 추출하기, 행과 열 함께 지정하여 추출하기
__02-4 기초 통계 계산하기 : 그룹화한 데이터의 평균 구하기, 그룹화한 데이터 개수 세기
__02-5 데이터를 그래프로 표현하려면?

03 판다스 자료구조 살펴보기
__03-1 나만의 데이터 만들기 : 시리즈와 데이터프레임 만들기
__03-2 시리즈 다루기 : 시리즈의 keys() 메서드, 시리즈와 ndarray, 시리즈와 불리언, 시리즈와 브로드캐스팅
__03-3 데이터프레임 다루기 : 데이터프레임의 구성, 데이터프레임과 불리언 추출, 데이터프레임과 브로드캐스팅
__03-4 시리즈와 데이터프레임 데이터 변환하기
__03-5 데이터 저장하고 불러오기 : 피클로 저장하고 불러오기, CSV와 TSV 파일로 저장하고 불러오기, 엑셀로 저장하기, 다양한 형식으로 저장하기, 다양한 데이터 저장 유형

04 그래프 그리기
__04-1 데이터 시각화란?
__04-2 matplotlib 라이브러리란? : 그림 영역과 하위 그래프 이해하기, 그래프 구성 요소 이해하기
__04-3 matplotlib으로 그래프 그리기 : 일변량 그래프 그리기, 이변량 그래프 그리기, 다변량 그래프 그리기
__04-4 seaborn으로 그래프 그리기 : 다양한 그래프 그려 보기, seaborn 스타일 알아보기, seaborn 공식 문서 읽는 방법
__04-5 판다스로 그래프 그리기

05 깔끔한 데이터 만들기
__05-1 깔끔한 데이터란?
__05-2 열 이름이 값일 때 : 하나의 열만 남기기, 여러 개의 열 남기기
__05-3 열 이름에 변수가 여러 개일 때 : 열 이름이 여러 가지 뜻일 때, 열 이름 분할하고 새로운 열로 할당하기, 한 번에 분할하고 합치기
__05-4 변수가 행과 열 모두에 있을 때

06 apply() 메서드로 함수 적용하기
__06-1 간단한 함수 만들기
__06-2 apply() 메서드 사용하기 : 시리즈에 함수 적용하기, 데이터프레임에 함수 적용하기
__06-3 람다 함수 사용하기
__06-4 벡터화된 함수 사용하기 : 넘파이와 넘바로 벡터화하기
07 데이터 결합하고 분해하기
__07-1 데이터 묶어 분석하기
__07-2 데이터 연결하기 : 데이터프레임 살펴보기, 행 연결하기, 열 연결하기, 인덱스나 열 이름이 다른 데이터 연결하기
__07-3 분할된 데이터 연결하기
__07-4 여러 데이터셋 병합하기
__07-5 데이터 정규화하기

08 그룹으로 묶어 연산하기
__08-1 데이터 집계하기 : groupby() 메서드와 함께 사용하는 집계 메서드, agg() 메서드와 groupby() 메서드 조합하기, 여러 개의 집계 함수 한 번에 사용하기
__08-2 데이터 변환하기 : 표준점수 계산하기, 평균값으로 결측값 채우기
__08-3 원하는 데이터 걸러 내기
__08-4 그룹 객체 활용하기 : 그룹 객체란?
__08-5 다중 인덱스 다루기

09 결측값 알아보기
__09-1 결측값이란?
__09-2 결측값은 왜 생길까? : 데이터를 불러올 때 생기는 결측값, 데이터를 연결할 때 생기는 결측값, 직접 입력한 결측값, 인덱스를 다시 설정할 때 생기는 결측값
__09-3 결측값 다루기 : 결측값 처리하기, 결측값이 있는 데이터 계산하기
__09-4 판다스 내장 NA 결측값 살펴보기

10 자료형 더 알아보기
__10-1 자료형 살펴보기
__10-2 자료형 변환하기
__10-3 범주형 데이터 알아보기 : 범주형 데이터 다루기

11 문자열 처리하기
__11-1 문자열 다루기 : 인덱스로 문자열 추출하기, 슬라이싱 구문으로 마지막 문자 추출하기
__11-2 자주 사용하는 문자열 메서드
__11-3 문자열 메서드 더 알아보기
__11-4 문자열 포매팅 알아보기
__11-5 정규식으로 문자열 처리에 날개 달기 : 정규식이란?, compile() 함수
__11-6 regex 라이브러리 활용하기

12 시계열 데이터 알아보기
__12-1 datetime 객체 활용하기
__12-2 datetime으로 변환하기
__12-3 시계열 데이터 불러오기
__12-4 시간 정보 추출하기
__12-5 시간 간격 계산하기
__12-6 datetime 객체의 메서드 활용하기
__12-7 주식 데이터 다루기
__12-8 시간별 데이터 추출하기
__12-9 시간 범위 다루기 : 시간 범위의 주기 설정하기
__12-10 열 방향으로 값 옮기기
__12-11 시간 주기 변경하기
__12-12 시간대 다루기
__12-13 시계열 데이터 다루는 방법

 
 
 
http://aladin.kr/p/LQzFA

 

Do it! 데이터 분석을 위한 판다스 입문

《Do it! 데이터 분석을 위한 판다스》가 파이썬 3.11.X 버전과 판다스 2.X 버전에 맞춰 개정하였다. 기존 판보다 100쪽 이상 증보되어 더 자세하고 친절하다. 파이썬 기초를 뗐다면 이 책으로 판다스

www.aladin.co.kr

 

 
참고 : 이 책에서 예시로 주어진 코드들은 다음 git 레포지토리에 있습니다.

https://github.com/easysIT/doit_pandas

 

GitHub - easysIT/doit_pandas

Contribute to easysIT/doit_pandas development by creating an account on GitHub.

github.com

 

* 본 서평은 이지스퍼블리싱 서평단 체험을 통해 도서를 제공 받은 뒤 작성된 것입니다.

반응형