jehyun***
2022-10-16

이 책은 파이썬 데이터 분석을 위해 반드시 알아야 하는 판다스, 넘파이, 맷플롯립, 시본 등 파이썬 핵심 라이브러리를 사용해서 효과적으로 데이터를 분석하고 시각화하는 방법에 대해 다루고 있다. 파이썬 데이터 분석 입문자를 위해 일반적인 데이터 분석 과정으로 내용을 구성했으며 데이터 분석을 위한 중요한 핵심 함수와 처리 과정을 쉽고 간결하게 설명하고 있다. 마지막으로 넷플릭스 데이터셋으로 실무에 적용 가능한 데이터 전처리 및 시각화 과정을 실습해본다.
● 2017년, MNIST
- 2017년, 어쩌다가 우리 팀에 새로 생긴 인공지능 파트의 파트장이 되어 머신 러닝에 발을 디뎠다.
- 파트원들에게 물어가며, 윗 분들의 적절한 보호를 받아가며, 때로는 의도적으로 거친 물살에 던져지는 조각배의 선장.
- 낮에는 회의를 다니고 밤에는 만삭의 아내를 재우고 인터넷을 뒤지며 독학을 하던 날들이었다.
- C언어, Matlab, 파이썬을 배울 때의 첫 관문은 "Hello, World!"라는 문장을 출력하는 것이었는데 텐서플로는 좀 달랐다.
- 너무나 당연하지만 데이터를 입력해 학습을 시켜야 하니 작은 신경망을 꾸미고 데이터를 넣는 것이 첫 관문이었다.
- 존재는 알고 있었지만 굳이? 라는 생각에 외면해오던 pandas와의 첫 대면이었다.
● pandas vs numpy
- 2008년에 파이썬을 시작했으니 시기로 치면 제법 오래됐지만 pandas는 사용하지 않고 있었다.
- 파이썬에서 쓰는 엑셀 정도로 이야기를 듣기는 했지만 당시 내가 짜던 코드를 기준으로 numpy에서 모두 처리가 가능했기 때문에 아쉽지가 않던 것이 가장 큰 이유.
- 우리 파트의 똘똘한 선임이 pandas는 R을 어설프게 베낀 것이라고 해준 설명에 내 시선부터가 삐딱했고
- "pandas 없이 어떻게 코딩해요? 전 못할 것 같은데 ㅎ"라는 분도 있었으나 2차원 리스트 처리를 벗어나지 않던 당시의 내 사고 범위로는 "없어도 되는데? 저 분은 코딩을 너무 쉽게 배우기 시작하셨나"라는 생각마저 들었다.
- 결론적으로 나의 경험 부족에서 온 오판이었다. 데이터 분석을 일반 코딩 정도로 생각하고 있었던 게 문제였다.
- 데이터를 다양한 관점에서 돌려보며 취합과 인자간 연산을 여러 가지로 반복해야 하며, 특정 조건에 부합하는 것들만 추출을 해야 했다.
- 그리고 이런 일은 pandas 없이 매우 어려운 게 맞다.
- 수치해석 라이브러리 numpy만 써서도 가능은 하지만 굳이 스스로의 업무 난이도를 높이는 일일 뿐이다.
● pandas vs 엑셀
- pandas는 엑셀로 할 수 있는 일을 모두 할 수 있다.
- 일반 가정에서 가계부를 쓰는 것처럼 데이터를 읽고 부분합 등을 구하는 일부터
- 여러 엑셀 시트에서 서로 관계된 부분을 찾아 데이터를 치환하거나 합치는 일,
- 불러온 데이터에 특정 함수를 적용해 새로운 시각에서 데이터를 바라보는 일,
- 그리고 데이터를 그 자리에서 그림으로 표현하는 일까지 엑셀과 동일하게 가능하다.
- 엑셀과 구분되는 가장 큰 차이는 마우스 클릭이 아니라 키보드 입력을 사용한다는 점.
- 단순 업무를 매우 효과적으로 반복할 수 있다는 장점이 됨과 동시에 내가 내린 명령의 결과가 즉시 화면에 보이지 않는다는 단점이 된다.
- 주피터 노트북 환경이라면 코드 한 줄을 추가해 즉시 화면에 띄워볼 수 있지만 이 역시 엑셀보다 성가시다.
- .py 파일이라면 문제가 조금 더 심각해서 머리 속으로 상상하며 진행해야 한다.
- 데이터 분석이 노트북 환경에서 주로 진행이 되는 이유이자 여러 커뮤니티에서 초심자들이 "이거 어떻게 해요?"하는 질문 중 적잖은 비중을 차지한다.
● 엑셀 사용자가 pandas에 익숙해지려면 연습이 필요하다.
- 셀을 긁어 선택하던 방식을 명령어를 사용하는 거으로 바꾸는 것도 시행착오가 필요하고 - 인덱스가 비어있거나 중복된 경우가 낯설다
- 일부 열을 삭제하거나 새 열을 추가하는 과정이 클릭보다 덜 직관적이다.
- 데이터가 비어있는 결측값은 황당한 오류의 원인이 되기 때문에 채우는 방법도 배워야 하고
- 통계적인 방법으로 이상값을 찾아 처리하는 방법은 quantile이니 IQR이니 하는 개념부터 익혀야 한다.
- 여기에 문자열을 다루는 정규 표현식, 시간 데이터 형식인 datatime이 가세하면 일단 창을 닫고 쉬고 싶어진다.
- 구글링으로 하나 하나 해결하기에는 유달리 여러 문제가 동시에 날아온다.
- pandas의 알맹이는 numpy array이기 때문에 numpy에 대한 지식은 기본으로 깔고 가야 한다.
● pandas는 날을 잡고 한 번쯤 마스터할 필요가 있다.
- 하루 이틀, 길어야 며칠 집중하는 것을 마스터한다고 하기엔 어폐가 있지만 다른 일 없이 pandas만 붙잡고 쭉 나갈 필요가 있다.
- 인덱스 컨트롤, 일부 행이나 열 선택, 결측값과 이상값 처리 등을 띄엄띄엄 배우면 헷갈릴 여지가 많기 때문이다.
- pivot table, merge 등 테이블을 다루는 기술은 집중해서 기본기를 익숙하게 한 뒤에 필요할 때마다 하나씩, 그러나 확실하게 익히는 편이 좋다.
- 개인적으로 groupby와 pivot_table을 이상하게 많이 헷갈렸던 기억이 난다.
- apply는 한 번 제대로 익혀서 계속 잘 쓰고 있는데도 남의 코드를 보면 내가 모르는 신기한 기술이 종종 보인다.
- pandas에 갖춰진 편의 기능은 생각보다 많고 다양하다.
- 이런 기능의 존재를 아는 사람과 모르는 사람이 정리하는 데이터는 속도와 결과물의 질이 달라질 수밖에 없다.
● 파이썬 기본부터 pandas 기능까지
- 파이썬으로 데이터 분석을 업으로 삼겠다는 사람이라면 pandas 없이 살 수 없는 것이 정상이다.
- 바꿔 말하면, pandas를 잘 모르는 사람은 파이썬 기본 문법도 익숙하지 않을 확률이 높다.
- 수치해석 등에만 파이썬을 오래 쓰던 사람이 pandas에 손을 뻗었을 때 정도가 예외가 될 것이다.
- 이 책은 파이썬 설치부터 기본 문법을 거쳐 비로소 pandas에 인도한다.
- 파이썬에 익숙한 독자라면 건너뛰어도 되지만 그렇지 않다면 다행이라는 생각이 들 수도 있다.
- 데이터 분석에만 집중하는 강의들이 파이썬 기초 명령을 생략하는 경우가 있는데 초보자들에게는 너무나 어렵게 느껴지기 때문이다.
- UX 관련 전공자인 저자가 제목을 "어쩌다 데이터 분석"이라고 지은 이유는 본인처럼 어쩌다 데이터 분석의 길에 들어선 이들에게 길잡이가 되고 싶기 때문이었을 것이다.
- 저자의 의도가 충분히 전달되기를 바라며, 휴일 등을 이용해 집중해서 저자의 내공을 흡수하길 바란다.
- 시간을 끌면 더 헷갈리는 게 pandas다.