brunch

You can make anything
by writing

C.S.Lewis

by 데이터드리븐리포트 Oct 02. 2024

파이썬 vs R? 뭐부터 배워야 되나요? 엑셀은요?

 지금도 엑셀 잘 쓰고 있는데 굳이 코딩 배워야 하나요?


웬만큼 일 좀 한다는 평판을 가진 직장인 일잘러들은 이미 Excel에 도가 텄습니다. 


Vlookup, 피벗테이블, IF문, F4 절대참조, Countif 


이 5개가 무엇인지 안다면 당신은 이미 ‘일잘러’의 자격요건에 당당히 포함될 수 있습니다. 이런 ‘일잘러’들에게 Python을 사용할 의향이 있냐고 물어보면 대부분 이렇게 반문합니다.


“엑셀로 다 할 수 있는데 굳이 코드를 새로 배울 필요가 있나요? 지금도 충분히 문제가 없는데요”

“제 업무에서 사용하는 데이터가 항상 빅데이터는 아니고요. 대부분 잘 돌아갑니다. 지금 엑셀도 충분히 잘 쓰고, 익숙하니 이대로 사용할게요. 파이썬 코드 작성하고 원하는 결괏값 찾는 시간이 더 오래 걸릴 것 같은데요”


정확한 지적입니다. Python은 절대 여러분에게 사용을 강요하지 않습니다. 

앞으로도 엑셀은 문제없이 사용될 것입니다. 


실제로 파이썬 기반 데이터 과학 플랫폼 ‘아나콘다(Anaconda)’ 의 CEO 피터 왕(Peter Wang)은 한 인터뷰에서 “엑셀은 호모 사피엔스 역사상 가장 성공적인 프로그래밍 시스템이며, ‘머글(Muggle)’도 이 도구를 사용할 수 있기 때문이다. 데이터를 입력하고, 질문하며, 모델링도 한다.”라고 말했습니다. 여기서 ‘머글(Muggle)’이란 J.K. 롤링의 소설 해리포터에서 처음 나온 말로, 마법을 쓸 수 있는 능력을 가지지 않은 ‘일반인’을 말합니다. 즉, 엑셀은 대부분의 사람들인 ‘일반인'에게 생산적인 프로그램으로 사용되고 있습니다.


Excel vs Python, R 


Python이 낫냐, 엑셀이 낫냐에 대한 논쟁을 함에 있어서 가장 중요하면서도 먼저 말씀드릴 내용은, 엑셀로 데이터 분석을 충분히 할 수 있는 상황(데이터 크기, 분석도구 등)이라면 본인에게 가장 편한 것이 가장 좋다고 생각합니다. 하지만, 점점 사회가 디지털화되고, 다양한 데이터들을 연계해서 분석하게 되면서 데이터의 크기가 커질 뿐만 아니라 그에 따른 다양한 분석도구들에 대한 니즈를 느낀 경험이 있다면, 바로 그 지점에서 왜 python을 쓰는지에 대한 이유를 찾을 수 있을 것입니다.  


무엇보다, 다른 사람들과 차별화를 위해 당신이 지금 이 글을 읽고 있다면,  ‘지금 잘 쓰고, 익숙한 것’에 만족해선 안됩니다. 엑셀의 뛰어난 기능에도 불구하고 연구자뿐 아니라 현업 실무자들에게 파이썬과 R이 주목받는 이유는 아래와 같습니다.  


1) 처리속도  

첫 번째는 처리속도의 명백한 차이입니다. 우리는 데이터 기반 설득을 외치고 있으므로 이런 것도 데이터로 검증할 필요가 있습니다. Excel과 Python의 데이터 처리속도 차이를 한번 비교해 보겠습니다. 보통 우리가 다루는 데이터의 경우는 사람이 체감할 정도의 차이를 느끼지 못하기 때문에, 파일용량이 100mb 정도 되는 엑셀 파일을 대상으로 하겠습니다. 사실 그 정도는 우리가 흔히 말하는 빅데이터의 축에도 들어가지 못하지만, 예를 들어서 한번 해보겠습니다. 우선, 엑셀에서 돌리면 이런 화면을 심심치 않게 볼 수 있을 겁니다. 컴퓨터 상태가 좋거나 메모리 상황이 좋아서 읽어졌다 하더라도, 아마 굉장히 속도가 느리고 filter 같은 기본적인 기능만 사용하더라도 소위 ‘뻑'나는 경우가 빈번할 겁니다. 여기서는 이 파일을 읽는 속도만 비교해 보겠습니다. 

.

예제를 위해 공공데이터 포털에서 데이터를 가져와 보겠습니다. (https://www.data.go.kr/data/15069309/fileData.do


데이터는 한국언론진흥재단에서 배포한 코로나 관련 분석자료입니다. 용량의 크기는 210MB 정도 되고 파일 형식은 *csv 파일이네요. 엑셀로 한번 읽어보겠습니다. 읽어보니 제 컴퓨터 기준으로 대략 10초 정도 나오고, 행은 80,549개가 되는군요. 끝 행까지 스크롤을 내리는 것만 해도 컴퓨터가 아주 힘들어하네요. 


*여기서 잠깐! 'csv'란?

 csv는 comma separated value의 약자입니다. comma separated라는 말은 말 그대로 콤마(comma(,)) 로 구분한 텍스트라는 뜻입니다. 엑셀에서도 실행가능할 뿐 아니라, 형식, 수식, 매크로 같은 기능을 포함하지 않기 때문에 엑셀 확장자 파일(xlsx, xls) 보다 훨씬 용량이 가볍고, 그런 이유로 특히 빅데이터를 읽을 때 즐겨 쓰는 형식입니다. 


이번에는 파이썬으로 읽어보겠습니다. 코드 내용보다는 결과를 보면 되겠습니다. 파이썬으로 읽었을 때는 4.8초 정도 걸리네요. 대략적인 비교지만 읽는 속도만 해도 50% 감소한 것을 볼 수 있습니다. 구체적인 편집 기능까지 계산하고, 중간중간 뻑나서 데이터 분석하던 기록들이 사라져서 다시 작업해야 하는 그런 번거로움까지 합친다면 이 시간은 결코 작은 수치가 아닐 것입니다. 물론 사용자의 컴퓨터 메모리와 자원에 따라 처리속도는 다르겠지만, 파이썬을 사용했을 때와 Excel을 사용했을 때 차이가 어느 정도 되는지는 피부로 확실히 느꼈을 것이라 생각합니다



예시를 보면 금방 이해가 될 텐데요. 아래 표를 보면 우리가 흔히 엑셀에서 보는 DataFrame 형태입니다. 

실제로 csv의 형태를 보면 아래와 같이 표시됩니다. 

csv의 정의처럼 comma(,)로 구분되어 있는 게 보이죠? 그리고 빈칸은 “  ” (큰따옴표) 안에 빈칸으로 구분하는 것을 알 수 있습니다.   


2) 다양한 분석방법  

거인의 어깨에 올라서서 더 넓은 세상을 바라보라'라는 아이작 뉴턴의 말이 있습니다. 파이썬을 조금만 배워보면 이미 나와 비슷한 고민을 한 사람들이 복잡한 코드들을 쉽게 정리해 둔 패키지(package)를 찾을 수 있고, 그것을 무료로 공유해 뒀습니다. 이것이 바로 거인의 어깨 위에 서서 세상을 바라보는 방식, 파이썬의 가장 아름다운 점 중 하나인 오픈소스 기반이라는 것입니다. 어릴 때 키가 작아서 세면대에서 거울을 보고 양치질을 못해 서러웠던 적이 있었습니다. 부모님들은 너무 편하게 거울을 보면서 하는데 나는 못해서 별것도 아닌 걸로 슬펐나 봅니다. 그럴 때 누군가 짜잔 하고 세면대 밑에 계단을 설치해 주면 드디어 나도 편하게 거울을 보면서 양치질을 할 수 있습니다. 바로 이 계단 같은 역할이 패키지의 역할이라고 생각하면 됩니다. 비슷한 말로 라이브러리(Library), 혹은 패키지(Package)라고도 합니다. 


이 Library 들을 이용하면 여러분이 그동안 하지 못했던 회귀분석, 머신러닝, 딥러닝에 코드 한 줄로 실행하게 되는 놀라운 마법이 일어납니다. 물론, 해석하는 것은 별도로 도움이 필요한 부분이지만, 우리처럼 코드를 처음 접하는 사람들에게는 정말 가뭄에 단비 같은 기능이 아닐 수가 없습니다. 

엑셀은 이런 기능이 있는가? 

네 물론 (적어도 회귀분석까지는) 있습니다. Visual Basic을 사용해도 되고요.

하지만, 세부적인 조정이라던지, 오류가 났을 때 해결방법 같은 것에 한계가 있는 점 등은 여전히 단점이라 할 수 있습니다.


그럼 이제 파이썬 써야 돼요? R 써야 돼요? 

사실 파이썬이든, R이든 자신에게 익숙한 것을 사용하면 됩니다. 저는 개인적으로 석사과정 중 각각의 프로그래밍을 동시에 배워야 됐기 때문에 기능별로 다르게 접근하긴 했습니다. 예를 들어, 데이터 전처리, 머신러닝과 딥러닝에는 파이썬, 그리고 통계적인 프로그래밍을 짤 때는 R을 사용했습니다. 


1) 파이썬의 장점

- 머신러닝, 딥러닝 라이브러리와 웹과 연동하는 방식으로 고민한다면 파이썬을 추천합니다.

- 반복작업의 단순화, 자동화: 스크립트만 한번 짜놓으면 그다음에는 데이터만 넣어도 원하는 결괏값을 뽑을 수 있습니다. 예를 들어 매일 뉴스기사 중 특정단어가 들어간 것을 추출하고 싶다면, 해당 스크립트만 작성해 두면 매일 날짜를 자동으로 바뀌게 한 다음 출근했을 때 파일이 자동생성되도록 알고리즘을 짜둘 수 있습니다. 그리고 이런 단순(?) 작업들 뿐 아니라 여러분이 “이런 것들 자동화시키면 어떨까?”라고 떠오른 웬만한 것들은 이미 파이썬 라이브러리 혹은 Github에 다른 개발자들이 만들어두었습니다. (놀랍게도!)

* 그리고 전체적인 처리속도도 상대적으로 Python이 빠른 편입니다.

    재현성: 영어로는 Reproducibility(재현성)라고 합니다. Re(다시) + Produce(생산, 구현) + ability(능력), 즉 말 그대로 다시 구현할 수 있는 능력이란 뜻입니다. 내가 만든 엑셀자료 중에 시간이 한참 지난 후 다시 열어본 경험이 있을 것입니다. 대체 어떤 기준으로 데이터를 처리했으며, 당시에 급하게 처리한다고 열과 행의 이름도 입력이 안되어 있을 뿐 아니라, 어디서 데이터를 가져와 가공했는지도 기록이 안 돼 히스토리를 기억하려고 애쓴 기억이 다들 있을 것입니다. 비즈니스 분야뿐 아니라 학계에서는 재현성을 더욱 중요하게 생각합니다. 그 이유는 논문에 대한 결과에 대한 신뢰성을 검증할 때 또 다른 누군가가 그 논문에서 사용된 코드로 그대로 실행했을 때 똑같은 결과가 나와야 별도 조작이 없었구나 , 게재 가능하겠다는 확신을 줄 수 있기 때문입니다.    


2) R의 장점

 R 까기, R라뷰 등 R 이름으로 여러 책들이 시중에 나온 것들을 보셨을 겁니다. R을 사용하는 사람들이 농담처럼 많이 하는 말 중 하나가 ‘R의 가장 큰 장점은 통계학자가 만들었다는 것이고 R의 가장 큰 단점 역시 통계학자가 만들었다’입니다. 그래서 python 이냐 R이냐에 대한 논쟁은 결국 나의 분석목적이 무엇인가 질문으로 정리할 수 있습니다. 간단히 말해서, 통계적인 분석 (회귀분석, 가설검정, 모델링) 이 목적이라면 R, 머신러닝, 딥러닝이 목적이라면 Python을 추천할 수 있습니다. 그래서 academic 한 연구분야에서는 R을 많이 쓰고, 비즈니스 쪽에서는 예측이나 자동화를 목적으로 python을 쓰는 것 같습니다. 또한 속도를 따졌을 때도 Python이 R 보다 빠르다는 점도 있습니다. 


3) 사용 트렌드

실제로 5년간 사람들이 검색했던 프로그래밍 언어를 google trend에서 살펴보면, 2017년 python과 R이 비슷하게 시작을 했다가 python이 점점 치고 올라가는 모습을 보여줍니다. 반면, spss는 거의 바닥에서 밑도는 상황입니다. 아마 spss는 유료 구매라 python과 r에 비해서는 확실히 범용성이 떨어질 수밖에 없는 것 같습니다.


Python, R 트렌드(2024.10.2 기준)


(이러한 이유로 책 '데이터 드리븐 리포트'에서도 좀 더 범용적으로 사용되는 python으로 이야기를 드렸습니다. )


결국 정답은 어떤 목적으로 쓰는가에 따라 다르고, 써보면서 자신이 편한 프로그래밍 언어도 존재하는 것 같습니다. R로 하면 통계 분야에서 편한 방법도 분명히 있지만, 어떤 도구든 선택한 뒤 일관성 있게 하나로 쭉 데이터 분석 흐름을 따라가 보는 것이 코딩을 배우는 가장 효과적인 방법이라고 생각합니다. 

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari