갑자기..?
나는 Python을 정말 좋아한다!
내가 왜 Python을 좋아하는지는 그 역사가 3년 전부터 시작하며, 사실 그 이유가 인터넷 검색 조금만 하면 나오는 내용들과 크게 다르지 않다. 그러므로 이 부분은 스킵하고, 왜 Python을 좋아한다고 말하는 사람이 "Python 하지 마세요!"라는 제목의 글을 쓰는 것일까.
미리보기 설명 텍스트에 적혀있듯, 본문은 데이터 처리와 분석에 관한 관점에서 접근한다. 그리고 "데이터 분석을 공부하려는 비전공생"을 대상으로 하는 글이다.
작금의 세태
다들 아실 거다. 몇 년 전부터 아직까지도, 데이터가 어쩌고 파이썬이 어쩌고 하는 단기 특강은 회사와 대학에서 자주 열리고 있다. 온라인 강의 판매 업체의 광고는 지겨울 정도다.
2년 전에 특허 관련 교육을 하시는 어느 선생님께서 데이터 분석이나 머신러닝 관련 단기 커리큘럼을 함께 만들어보자고 하셨다. 나는 특허 분석을 Python 코드로 어떻게 쉽게 구현하는지에 대해서는 자료를 작성할 수 있었지만, 이를 1박2일, 2박3일 과정에 담는 건 어렵다고 말했다. 아무리 타이트하게 진행해도 문법만 꼬박 하루가 걸릴 것이었다. 어떻게 줄이고 줄여서 우겨 넣는 건 분명히 가능하다. 그러나 그것이 교육적으로 실효성이 있을지에 대해서는 큰 의문이 생길 수밖에 없었다.
본인은 값이 싼 인력이다보니 비슷한 시기에 비슷한 요청들을 받았었는데, 아무리 생각해도 꼰대같은 마인드의 나로서는 어렵다는 말밖에 할 수 없었다(내 의사와 별개로 교육은 진행되었을 것이다).
왜 다들 Python을 공부하고 있는가?
(전공자 얘기는 빼고) 한 단어로 요약할 수 있다. "데이터".
이해 안되게 뒷북을 치고 있는 IT붐, 그리고 인공지능/빅데이터라는 두 키워드는 많은 사람들에게 코딩을 공부하지 않으면 안될 것 같은 분위기를 조성하고 있다.
회사에서 업무를 보든, 대학에서 레포트를 쓰든, 사람들이 데이터 처리 및 분석 능력을 가지고 그런 일들을 진행한다면 그렇지 않았을 때보다 좋은 결과가 나올 것이다(아마두).
기관의 선행 조사가 없는 통계 자료를 구하기 위해 직접 데이터를 수집, 처리, 분석할 줄 아는 직원은 더 우대를 받을 것이다.
그러다보니 관련 업계에 종사하던 사람들로부터 Python, R과 같이 배우기 쉽고 유용한 도구들을 배우는 것이다.
하지만 많은 사람들이 수단에 과몰입해 고생을 하고 있다.
Python을 잘 하면 어떤 소스로부터도 데이터를 수집할 수 있고, 원하는 형태로 조작하고, 원하는 형태로 시각화할 수 있다. 그러나 이러한 수준으로 Python을 다루려면 생각보다 많은 시간과 노력이 요구된다.
그리고 꾸준히 사용해주지 않으면 원할 때 Python을 써봤자 (구글링하느라) 빠르게 결과가 나오지 못할 수도 있다.
그러면 Python 공부의 가치가 매우 작아질 거라 생각한다. 이력서에 "이러이러한 실습을 해보았다"는 말 정도의 가치만 남을 수도 있다.
나는 학교 컴퓨터 동아리 회장으로 지난 한 학기를 보냈는데, 회원 100여명 중 절반 혹은 그 이상이 흔히 말하는 문과 계열 전공이었으며, 그 대부분은 Python과 데이터 분석을 배우기를 원하셨다. 당연하게도 공부하기 힘들어하는 모습을 보이는 경우가 꽤 있었다.(결국 학기가 끝나고 남는 사람은 소수였다.) 그리고 그 중 어떤 분과 대화해보니 "사실 Python 스터디가 아니라 엑셀 스터디가 있었으면 그것을 했을 것"이라는 말에 많은 생각이 들었다.
내 고등학교 동창들도 다들 Python을 한 번씩 공부하는데, 솔직히 왜 그렇게 공부하려는지 잘 모르겠다. 단정짓는 건 안좋지만 그들이 졸업할 때 다 까먹을 것 같다는 생각이 든다.
목적만 생각하자
Python을 할 줄 아는 건 중요한 게 전혀 아니다. Python을 그렇게 하고도 백엔드 서버나 데스크탑 앱 개발, 머신러닝 등 응용은 하나도 못하는 전공생을 본 적도 있다. 가장 궁극적인 목적은 인사이트 도출이다.
- 어떤 현상이 일어나고 있는가?
- 이 현상은 왜 일어나는가?
- 그리고 앞으로 어떤 현상이 일어날까?
- 우리는 어떻게 대응해야 할까?
데이터에 기반해서 위와 같은 인사이트 도출을 위해 그 다음으로 우리는 데이터 처리 및 분석 능력을 보유하기를 원한다.
데이터 분석 능력은 경험과 공부에 의해 생기는 것이고, 처리 능력에 대해서 이야기하자. 데이터 처리 능력을 보유했다는 것은 데이터 처리 도구를 다루는 능력을 갖는 것과 같고, 많은 사람들이 그 도구로 Python을 채택했다.
그러므로 만약에 Python보다 더 좋은 도구가 있다면 도구만 대체해도 되지 않을까? Python을 쓰지 않고서도 더 쉽게 데이터 분석을 할 수 있다면 그리 하는 게 합리적 선택 아닐까?
솔직히 기초적인 차트는 엑셀에서도 할 수 있다. 그런 차트를 원하는 사람은 Python 공부에 큰 시간을 들이지 말고 엑셀을 공부하자. Python 공부는 생각보다 기회비용이 좀 있다.
대부분의 사람들은 엑셀로 하기 어려운 데이터 분석을 원할 것이다. 그런 사람들에게 나는 노코드(No-Code) 데이터 분석 툴을 추천한다. 대표적으로 KNIME이 있다. 그냥 검색하라. 다양한 프로덕트가 존재한다. 그리고 단기 특강 커리큘럼에 포함되는 웬만한 내용들은 노코드 분석 툴로 다 구현할 수 있다.
예시로 몇 개를 보여드리겠다.
위 그림은 "solid*state*bettery"라는 검색어로 키프리스에서 미국 특허를 검색하여 수합한 20만건의 제목과 요약 텍스트 정보를 TF-IDF Vectorize하는 과정을 KNIME으로 구현한 것이다.
키프리스에서는 100건 혹은 3000건 혹은 5000건 단위로 CSV파일을 다운받을 수 있다. 그러니 20만건의 데이터를 한 번에 분석하기 위해서는 CSV파일을 합칠 필요가 있었는데, 이 역시도 KNIME으로 구현할 수 있었다(특정 디렉토리의 파일들을 iterative하게 로드하여 concat할 수 있다).
KNIME에는 우리가 SQL이나 Pandas에서 할 법한 Data Manipulation Method들이 모듈 블록으로 담겨 있으며, 이를 조합하면 사실상 거의 모든 조작이 가능하다! (광고 아님)
왼쪽 아래에서 모듈을 검색하고 드래그해서 오른쪽으로 옮겨 화살표로 이으면, File Reader에서 읽은 데이터가 파이프라인을 타고 결과를 리턴한다.
이렇게 생긴 테이블을 GroupBy 모듈에 넣어보자. Cluster와 Q라는 컬럼에 대해 Grouping하고 ID 컬럼에 대해 Aggregation 옵션을 Count로 지정해주면 모든 Cluster와 Q 조합에 대해 행의 개수를 카운트해준다.
참고로 KNIME은 크롤링도 가능하며, 기본적인 딥러닝도 가능하다. MLP는 물론이고 BERT모델 모듈도 있다!(다시 말하지만 광고 아니다..) 눈치 챘겠지만 클러스터링도 가능하다. 반복 및 조건 분기도 되고, 플러그인도 다양해서 있을 건 웬만해서 다 있다.
KNIME으로 꽤 많은 작업을 해봤으며, 그 세세한 작업들은 내가 Python으로 해봤던 것이랑 큰 차이가 없었다. 코드로 하는 것과 마우스로 하는 것의 차이였을 뿐이다.
초심자가 이를 배우는 과정을 관찰해보았는데, 결국 핵심 능력은 데이터 조작에 대한 이해였다. 어떤 연산을 취하면 테이블이 어떻게 변하는지를 이해하는 것이 중요했다. 이 부분만 득도하면 원하는 형태의 모든 차트를 쉽게 작성할 수 있었다. Python 문법을 처음부터 가르치는 것보다 적은 노력과 시간이 요구되었고, (데이터 처리라는 좁은 관점에서) 그 보상의 수준은 비슷하다.
Python을 힘들게 공부하던 사람에게 KNIME을 가르쳐주니 왜 자기한테 이걸 먼저 추천하지 않고 Python 공부를 시켰냐고 원망을 했다...
결론
당연하게도 모두가 Python과 같은 언어를 능숙하게 다루면 정말 좋을 것이다. 언어를 다룰 줄 알게 되고, 프로덕트를 만들 수 있는 프레임워크를 맛보기만 하면 세상을 바라보는 눈이 달라질 것이다.
그러나 솔직히 어려운 일 아닌가. 모두가 코딩을 맛보기만 하거나, 공부하다 지쳐 때려칠 바에는 코딩을 하지 않고 코딩으로 할 수 있는 일을 더 쉽게 하게 해주는 서비스를 쓰자는 거다.
시티즌 데이터사이언티스트라는 말이 있다. 데이터 수집, 처리, 분석 과정에 대한 이해와, Deep한 툴을 다루는 능력이 없더라도 간단한 분석은 직접 할 줄만 알면 그것만으로도 우리의 소기 목적은 달성한 것이다.
그러나 개발에 관심이 있다거나, 데이터 분야로 좀더 심화된 공부를 하고 싶거나, 더 자율적인 로직을 통해 처리 및 분석을 하고 싶다거나, 데이터 분야의 직무를 갖고자 하는 사람이라면 Python을 공부하는 것이 맞다고 생각한다. 이 글은 언제까지나 데이터 분석을 본인 전공 및 직무에 보조적으로 사용하고자 하는 비전공자들에 대해서 쓴 글임을 알아주셨으면 한다.
내가 KNIME으로 만들었던 간단한 차트 몇 개를 덧붙이고 글을 마친다.
'개발 > 데이터 분석' 카테고리의 다른 글
게임의 이탈 원인 분석하기 - RF 활용 (0) | 2022.07.09 |
---|