|
파이썬을 독학하고 사용 범위 확장과 실력 레벨업을 위해 데이터분석을 다음 스텝으로 도전 중인데, Pandas 습득이 필요하다고 하여 입문서 몇 권을 찾아서 읽었다. 그 중 이 책이 가장 좋은 Panda 입문서라고 생각된다. 다른 모든 것은 차지하고서도 다른 책보다 좋은 이유는, 예제 코드를 보면 책의 저자가 Pandas 뿐만 아니라 파이썬 언어 자체에 대한 이해가 높고 개발 역량도 매우 좋다는 것을 알수 있다. 모든 개발 언어는 각자의 사상과 개발 스타일에 대한 guide를 가지고 있으며, 파이썬은 PEP 8을 따를 것을 권고하고 있다. Pandas도 결국은 파이썬으로 개발되었기 때문에 Pandas로 개발을 한다면 PEP 8을 따라야 한다. 지금까지 Pandas 입문서나 파이썬으로 데이터분석을 다루는 몇 권의 입문서를 봤었지만, PEP 8을 따른 예제가 있는 코드는 보지를 못했다. 다수의 저자들이 프로그램 경험이 별로없이 Scikit learn이나 Pandas 사용법만 읽혀서인지, 나름 베스트셀러라는 책의 예제 코드가 형편없는 경우도 꽤 자주 봤다. 그런데 이 책은 예제 자체가 PEP 8을 따르고 있고, 저자가 단일의 원칙하에 매우 효율성있는 코드를 예제로 만들어서 따라 배우는 즐거움이 있었다. 책 내용 자체도 친절한 선생이 바로 옆에서 설명을 해주는 것처럼 구성되어 있어서, 지금까지 읽은 IT 서적 중 재미있게 본 책 중 하나로 새롭게 추가될 것 같다. 물론 번역서이다보니 문장이 매끄럽지 못했던 부분도 있고 일부 오탈자도 있었지만, 책이 좋다보니 나도 조금이나마 기여를 하고 싶어, 열심히 오탈자와 잘못된 내용을 수정해서 한빛미디어 사이트에 "오탈자 등록하기'를 해 두었다. (https://www.hanbit.co.kr/store/books/look.php?p_code=B4172751734&tid=review) 오늘 서평을 작성하면서 이 책에 등록된 오탈자를 확인해 보니 전부 내가 작성한 것이어서 뿌듯한 보람도 느꼈다. 아직 두 챕터를 더 남았는데 계속 재미있게 읽을 수 있는 책이다. |
|
(해당 포스트에서 소개하고 있는 "판다스 인 액션" 책은 한빛 미디어로부터 제공받았음을 알려드립니다.)
내가 회사에서 하고 있는 일은 생활가전에 인공지능 기술을 넣는 방법에 대해 고민하는 것이다. 이에 대한 결과가 사용자 편의를 가지고 오던, 제어 효율성을 높여서 에너지를 절감할 수 있게 한다던지 이런 방향으로 연구하는 일을 주로 하고 있다. 그런데 가끔 내 직무가 무엇인가에 대해서 진지하게 고민할 때가 있다. 공식적인 직무는 Software Engineer이긴한데, 하는 일을 생각해보면 AI Engineer라고 해야되나 싶기도 하고, 그런데 일을 하다보면 뭔가 구현하는 것보다 현상에 대한 분석을 많이 하는 경우도 많아 Data Scientist라고 해야 할 것 같다는 생각이 든다.뭐 물론 이런 분석이나 기술 구현 모두 Software를 구현하면서 일을 하니까 포괄적인 직무는 Software Engineer라고 해야 되는게 맞는 것 같다. 그런데 생각보다 생활가전일을 하다보니 항상 접하게 되는게 생활가전에 부착되어 있는 센서에서 뽑히는 데이터를 가지고 하는 일들이 많다. 보통 이런 가전의 경우는 이런 내재된 dynamics를 모사할 수 있는 시뮬레이터같은게 없기 때문에 일반적으로는 어떤 동작을 취했을때 나오는 센서 데이터를 바탕으로 유추하는 방향으로 진행하는 편이 많다. 그래서 물론 인공지능 기술 개발도 중요한 일이긴 하지만, 이와 비교했을 때 센서 데이터를 "잘" 분석하는 것도 하나의 R&R인 측면도 있다. 그래서 인공지능기술개발을 할때는 Tensorflow, 뭔가 논문 예제를 다룰때는 PyTorch를 하다가도, 이 때 필요한 데이터의 전처리나 시각화 분석할 때는 NumPy나 Pandas를 많이 사용하곤 한다. 그 중에서도 pandas와 NumPy는 뭔가 기술이 아닌 분석의 성격이 있긴 하지만, 그래도 뭔가 현상을 이해하고 시각화하는데 필수적인 툴이라고 생각한다.
이번에 소개할 책은 이 Pandas에 대해서 디테일하게 소개한 책이다. 그런데 나만 그렇게 느끼는 것인지는 모르겠지만 pandas를 많이 써보다보면, 이 툴은 뭔가 코딩 테스트와 비슷한 느낌을 준다. 가령 내가 어떤 지원자에게 raw data 하나 던져주고, 이 data의 특정 조건에 해당하는 값들의 평균과 표준편차, 그리고 최빈값을 dataframe 형태로 뽑아보라고 문제를 낸다면, 그때부터 열심히 고민하게 될 것이다. 그 특정 조건에 맞는 값들은 어떻게 찾을 것이며, Index는 어떻게 잡고, group은 어떻게 지을 것인지에 대해서 방법을 찾고 구현을 할 수 있을 것이다. 혹은 data를 string화해서 정규표현식을 통해서 원하는 요소만 찾게도 해 볼 수 있는 것이고... 구현할 수 있는 방법은 정말 다양하고, 이런 기능들을 pandas에서 구현할 수 있다. 정말 데이터 분석에 필수적인 툴이라고 할 수 있다. 책은 크게 1부 기본기 다지기와 2부 응용하기 두 부로 나눠져 있으며, 1부에서는 pandas에서 활용되는 자료형과 기본적인 매커니즘에 대해서 소개되어 있다면, 2부에서는 실제 데이터셋을 예제로 하여, pandas에서 제공하는 api를 자유자제로 활용할 수 있는 방법에 대해서 소개한다. 나같은 경우는 pandas를 현업에서 자주 활용하기도 해서 1부보다는 2부 내용을 위주로 주로 살펴보았다. 나는 사실 pandas에서 제일 다루기 어려운 개념 중 하나가 MultiIndex와 GroupBy 개념인데, 이 책에서는 각각 7장과 9장에서 해당 내용을 설명하고 있고, 기본 개념에 대한 자세한 설명이 책에서 제공되고 있어서 좋았다. 특히 좋았던 부분은 각 장의 후반부마다 "코딩 챌린지"라는 이름으로 문제를 제공하고 이에 대한 풀이법을 이어서 설명하는데, 마치 강의 영상을 보는 것처럼 푸는 방법과 이에 대한 결과를 보여주는 전개방식이 실제 문제를 여기에 대입해서 이해하는 도움이 될 것이라고 생각한다. 개인적으로 외서 시리즈 중 좋아하는 형태의 하나가 Manning 출판사의 "In Action" 시리즈인데, 이 책도 독자가 접할 수 있는 실제 문제와 책의 전개 방향을 일치시키려는 노력에 있어 읽기에 좋지 않을까 하는 생각을 해본다. 기타 장 부분도 실제 접할 수 있을법한 예시를 바탕으로 다뤄진 내용도 좋았던 것 같다. 참고로 이 책의 부록은 pandas와 numpy에 대한 기본지식과 fake data 생성을 위한 faker 사용법, 그리고 정규표현식에 대한 내용이 포함되어 있는데, 분량이 무려 책의 1/5 정도이다. 기본지식이 부족하다고 느낄 수 있어도 부록에서 이를 커버할 만큼 방대한 분량들이 담겨져 있는 것이다.(한편으로는 너무 기초내용을 소개하는데 많은 분량이 들어간건 아닌가 싶기도 하고...) 나도 그렇긴 하지만 pandas는 뭔가 api를 암기하고 사용법을 빠삭하게 알기보다는 공식 문서에서 제공하는 것을 읽고, 제공되는 예시를 내 문제에 대입하는 방법을 많이 활용하는데, 어떻게 보면 이 책은 그런 공식 문서를 책으로 도출한 일종의 가이드 북이라고 보면 좋을 것 같다. 때문에 뭔가 데이터 분석을 위해서 머리를 싸맬 문제가 있다면 이 책의 관련 장을 일고 한번 읽어보는 것도 좋은 문제 해결 방법이 되지 않을까 싶다. 책의 예제 코드는 jupyter notebook형태로 제공되며, github은 아래와 같다.
|
[Pandas in Action (판다스 인 액션)] 보리스 패스캐버 지음 시진 옮김
본 책은 Python 라이브러리 중에 하나인 Pandas 에 대해 소개하고 예제를 통해 쉽게 접근할 수 있도록 해주는 책 입니다. Pandas 는 데이터 조작 및 분석을 위한 Python 프로그래밍 언어 용으로 개발된 소프트웨어 라이브러리 입니다. 무료로 이용 가능한 라이브러리 입니다. (New BSD 라이센스) Pandas 라는 이름은 한 개인에 대해 여러 기간동안 관찰 한다는 데이터 세트에 대한 계량 경제학 용어인 "패널 데이터"라는 요엉에서 파생되었으며, "Python 데이터 분석"이라는 문구 자체에서 가져온 것이라고 합니다.(위키백과 인용)
Chapter 1. 판다스 소개 에서도 Pandas 는 Python 프로그래밍 언어를 기반으로 구축된 데이터 분석용 라이브러리로 정렬, 필터링, 정리, 중복 제거, 집계, 피벗 등의 데이터 조작 작업을 위한 도구 모음으로 소개하고 있습니다. 본 책은 Python 프로그래밍을 해보았다면 좀 더 쉽게 학습할 수 있지만, Python 프로그래밍을 접하지 않았더라도 책 예제를 따라하다 보면 쉽게 학습할 수 있도록 구성되어 있습니다. ![]() 책에서는 스프레드시트 소프트웨어 또는 다른 데이터 분석 도구를 중급자 수준으로 다뤄본 경험이 있는 데이터 분석가를 대상으로 구성되어있다고 하지만 책을 공부하다 보면 실제 데이터 분석을 통해 어떤것을 알고자 하는가 까지는 아니더라도 이러한 형태로 데이터 분석이 가능 하고, 이런 데이터를 이용하면 어떠한 결과를 알 수 있구나 정도는 알 수 있으며, 데이터 분석이 이러한 것이구나 정도는 알 수 있습니다. 데이터 분석이 필요한 여러 분야에 적용 가능하기에 학습해볼 가치는 충분히 있습니다.
책 예제는 아래 경로에 있습니다. (책 12p) https://github.com/paskhaver/pandas-in-action
Pandas 공식 문서, https://pandas.pydata.org/docs/
책은 크게 두 개의 Part 와 부록으로 구성 되어 있습니다. Part 1 은, Chapter 1 ~ 5 까지 이며, Pandas 의 소개 및 기본 사용법 그리고 객체들에 대한 객체 (DataFrame, Series) 에 대해 학습할 수 있으며, Part 2 는, Chapter 6 ~ 14 까지 이며, Part1 에서 학습한 내용을 기반으로 하여 실제 데이터 분석을 해보면서 학습할 수 있습니다. 부록 Part 는, Appendix A ~ E 까지 이며, 시험을 위한 툴의 설치 및 환경 설정, Python 문법 기초, 넘파이 속성 과정, faker로 가짜 데이터 생성하기, 정규 표현식에 대해서 설명 하고 있습니다.
책에서는 Python 코딩 환경으로 Appendix A 에서 아나콘다 (Anaconda) 주피터 노트북을 이용하여 구성하고 있습니다. https://www.anaconda.com/products/distribution Appendix A 에서 설치 및 환경 설정에 대해 자세하게 설명하고 있습니다.
각 Chapter 시작시에, "이 장의 내용" 블럭을 두어 학습할 내용에 대해 설명하고 있으며, Chapter 마지막에 "핵심 요약" 블럭을 두어 학습한 내용 중 핵심 내용에 대해 정리 해줍니다. ![]()
![]()
책은 주로 예제 위주로 구성 되어 있습니다. ![]() 실제 코딩 하면서 학습 하여도 되지만, 예제에 대한 결과도 포함되어 있기에 설명 상에서의 예제 부분은 책 내용 만으로도 이해할 수 있습니다. 하지만, 실행 해보며 Python 및 Pandas 코딩에 익숙해 지기 위해 직접 예제들을 코딩 해보시길 추천 합니다.
각 Chapter 마다 코딩 챌린지라는 섹션을 두어 학습한 내용에 대해 문제를 풀면서 학습한 부분에 대해 이해하고 있는지 확인 할 수 있도록 제공하고 있습니다. ![]()
[결론] 데이터 과학, 데이터 분석 이라는 분야가 오래된 분야 이지만 최근 들어서 많이 이슈화 되고 있는 것 같습니다. 이미 데이터 분석 분야에 일하고 계신 분들은 Pandas 라이브러리에 대해서 많이 접했을 수 있지만 그 외 분야에 계신 분들은 생소한 라이브러리 일 것입니다. 실제, 데이터 분석 이라는 분야 자체도 생소할 수 있는데, 본 책을 통하여 데이터 분석이 어떠한 것이고 어떠한 부분들이 있는지 그리고 Pandas 라이브러리를 이용한 데이터 분석 방법에 대해 맛 보기에 좋은 책인 것 같습니다. |
|
판다스 라이브러리는 데이터 분석가, AI 엔지니어, 마케터 등 직군을 불문하고 사랑받는 파이썬 라이브러리입니다. 하지만 판다스만을 중점적으로 다루는 책은 많지 않습니다. 파이썬 입문, 머신러닝 입문, 딥러닝 입문 등 여느 입문 책 사이에 조금씩 활용되지만, '판다스'라는 키워드를 yes24에 검색하면 이 책을 포함해 단 4권만이 판다스에 대해서만 다루고 있습니다.
저 또한 처음에는, 굳이 라이브러리 하나에 대해서 시간을 들여서 공부해야 할까? 모르는게 나오면 구글에 검색하면 되지 않을까? 라는 의구심이 들었습니다. 하지만 컴퓨터 사이언스와 마찬가지로 유통기한이 긴 지식들은 깊게 쌓아두면 좋을 것 같다. 라는 생각하에 이 책을 선택하게 되었습니다.
![]()
이코노미스트는 2017년 의견서에 '세상에서 가장 가치있는 자원은 더이상 석유가 아니라 데이터이다.' 라고 언급하였습니다. 데이터는 근거이며, 근거는 상호 연결된 세계에서 점점 더 복잡해지는 문제를 해결하는 기업, 정부, 기관과 개인에게 매우 중요합니다.
이러한 데이터 작업을 위한 도구의 기술 생태계는 지난 10년 동안 엄청나게 성장했습니다. 판다스의 경쟁 도구로는 엑셀, 구글 스프레드시트, R, SAS 등이 있지만, 판다스가 특별한 이유는 바로 처리 능력과 사용자 생산성 사이의 균형이 좋기 때문입니다. C와 같은 저급 프로그래밍 언어를 사용하여 많은 계산량을 처리하기 때문에 판다스는 밀리초 내에 백만 행의 데이터셋을 효율적으로 변환할 수 있으며, 동시에 간단하고 직관적인 명령 집합을 제공합니다.
![]()
1부의 5개의 장에서는 판다스 라이브러리로 무엇을 할 수 있는지 직관적으로 확인하고, 판다스의 핵심 메커니즘이자 두 가지 기본 자료구조인 1차원 Series와 2차원 DataFrame에 대해서 소개하고 있습니다. 1부만 다 보더라도 판다스의 토대를 마련할 수 있습니다.
2부에서는 포춘 1000대 기업부터 노벨상 수상자까지 다양한 주제의 실제 데이터셋에서 MultiIndex, 그룹화, 조인, 시각화 등 판다스의 고급 기능들을 활용하여 문제를 해결하는 방법들을 소개하고 있습니다.
더불어 부록에서도 꽤나 흥미있는 내용을 다루고 있었습니다. 바로 faker라는 라이브러리입니다. [이름, 전화번호, 주소, 이메일] 등의 리스트를 생성할 수 있고, 임의의 숫자 데이터를 생성하는 넘파이와 함께 사용하면 모든 크기, 형태 유형의 데이터셋을 빠르게 생성할 수 있습니다. 이외에도 파이썬의 속성 과정, 정규 표현식 등을 다루고 있습니다.
각 챕터별로 코딩 챌린지를 통해 단원에서 배운 내용들을 복습할 수 있고, 해답도 바로 뒤에 나와있어 출판사의 홈페이지에서 해답을 다운로드 하는 등의 불편함이 없었습니다.
판다스는 유일하기 때문에 어쩔 수 없이 선택해야 하는 도구가 아니라 데이터 랭글링, 병합, 통계 계산 등 대부분의 데이터 분석 문제를 해결하는 강력하고 인기와 가치가 있는 솔루션입니다. 엑셀 또한 여전히 데이터를 빠르고 쉽게 처리하는 훌륭한 도구이며, SQL은 기능의 범위가 더 크고 데이터 관리를 중심으로 합니다.
판다스는 다른 현대 기술과 함께 사용할 수 있는 강력한 선택지이기 때문에, 주어진 상황에 따라 자신에게 맞는 적절한 도구를 선택하고 문제를 해결할 수 있었으면 좋겠습니다.
판다스를 깊이 있게 공부하고 싶으신 분들에게 추천하는 책입니다.
"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |
|
빅데이터, 데이터 사이언스, AI 등등 데이터를 처리 가공해야 하는 분야가 각광받는 시대다. 파이썬은 그런 목적에 부합하는 프로그래밍 언어이다. 그리고 그 중에서도 많이 쓰이는 라이브러리는 판다스와 넘파이이다. 이 책은 판다스를 다루고 있다. 대상 독자는 이미 파이썬을 다루어 본 적이 있거나, 파이썬으로 데이터 분석에 대해 알고싶은 개발자이거나, 다른 데이터 분석 도구를 다루어 본적 있는 사람이다. 책의 내용은 크게 기본과 응용이라 할 수 있다. 챕터 1에서 5장까지는 판다스를 다루는 방법(기본)이다. 앞선 다섯개의 챕터를 바탕으로 챕터 6부터 14까지는 응용이라 볼 수 있다. 이후의 부록 A에서는 설치와 환경설정, B에서는 파이썬의 속성과정, C에서는 판다스와 함께 많이 쓰이는 라이브러리 넘파이 속성과정이 수록되어있다. 이 책에서 판다스 라이브러리를 통해 데이터를 처리, 가공, 분석하는 기술들을 연습해 실무에 적용하거나 사용한다면 많은 도움이 될 것이다. "한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다." |