"데이터 과학자의 마음을 잡기 위한" 파이썬과 R의 경쟁 분석
이 작업이 자신에게 떨어져, 지금부터 거대한 디지털 잡동사니통을 뒤지고 뒤져 유용한 뭔가를 찾아 상사에게 보고해야 한다. 어떻게 할까? 개발자라면 선택지는 R과 파이썬(Python), 두 가지다.
데이터 크런칭을 위한 솔루션은 많고 이들은 비즈니스 인텔리전스나 데이터 시각화라는 그럴듯한 이름으로 포장된다. 어떤 솔루션이 원하는 기능을 한다면 해당 솔루션을 선택하면 된다. 그러나 솔루션이 해주지 않는, 다른 작업을 하려면 결국 코드를 직접 쓰는 수밖에 없다. 데이터가 깨끗하게 준비되어 있다면 포괄적인 서비스 툴을 사용하면 되지만, 이런 툴은 모든 부분이 완벽하지 않을 경우 문제를 일으키거나 삼킨 데이터를 제대로 소화하지 못하는 문제가 있다.
파이썬과 R의 차이는 대부분 사고방식 측면에 있다. 하나는 유닉스 스크립터들이 개발해 통계학자, 빅데이터 전문가와 소셜 과학자들 사이에서 자리잡은 포괄적인 서비스 언어다. 다른 하나는 통계학자, 빅데이터 전문가와 소셜 과학자들이 설계하고 만든 데이터 분석용 툴이다.
사용하는 계층은 거의 똑같지만 접근 방식은 전혀 다르다. 하나는 유용한 라이브러리가 많은 범용 툴이고 다른 하나는 빅데이터 분석 전용으로 만들어졌다. 무엇을 선택해야 할까? 이런 결정을 하기 위해 두 언어를 비교해 보자.
파이썬을 사용하면 전처리가 쉽다
데이터 분석의 50%는 분석에 앞서 데이터를 정리하는 일이라는 말이 있다. 심지어 그 비중이 99%라는 사람도 있다. 정확한 수치야 어떻든 필요할 때 임의적 작업을 수행할 수 있는 포괄적인 서비스 언어로 데이터를 정리하는 편이 더 좋다.
파이썬은 포괄적인 서비스 명령형 언어이므로 사용해본 적이 없는 개발자에게도 구조와 접근 방법은 친숙하게 느껴질 것이다. 손쉽게 새 함수와 새 계층을 추가해서 데이터를 분해하고 정리할 수 있다. 로컬 저장, 웹 서비스 접근 또는 컴퓨터 프로그램이 일상적으로 수행하는 기타 임의적 요소가 필요하다면 별 어려움 없이 해당 요소를 포함할 수 있다. 파이썬은 언어다.
R을 사용하면 어떤 것으로도 전처리할 수 있다
물론 파이썬을 사용하면 전처리(preprocessing)가 쉽지만 R도 데이터를 정리하기 위한 용도로 사용할 수 있다. 어느 언어라도 무방하다. 사실 많은 경우 데이터 순화 루틴과 분석 루틴을 혼합하는 것은 구조적으로 부적절하므로 분리하는 편이 나은데, 어차피 둘을 분리한다면 그냥 좋아하는 언어를 사용하지 않을 이유가 없다. 파이썬일 수도 있고 자바, C, 어셈블리 코드도 괜찮다. 데이터베이스 내에서 또는 다른 스토리지 계층 내에서 데이터를 전처리할 수도 있다. R은 가리지 않는다.
파이썬에는 수많은 라이브러리가 있다
파이썬은 인기가 높다. 일반적인 리포지토리의 통계 수치에서도 명확히 드러난다. 파이썬 패키지 인덱스(PyPi)의 패키지 수는 이 기사를 쓰는 현재 10만 2,199개이며, 이 기사를 읽을 때쯤이면 그 수는 더 늘어나 있을 것이 거의 확실하다.
이 숫자조차 빙산의 일각에 불과하다. 깃허브부터 소셜 과학 웹사이트까지, 코드는 도처에 있다. PyPi를 제외해도 좋은 파이썬 코드는 풍부하고 거의 모두가 오픈 소스이므로 받아서 사용하면 삶이 한결 더 수월해진다.
R에는 수많은 통계 분석용 라이브러리가 있다
R 역시 패키지가 있다. 종합 R 아카이브 네트워크(CRAN)의 패키지 수는 이 기사를 쓰는 현재 10만 33개이며 파이썬과 마찬가지로 계속 늘어나는 중이다. 이러한 모든 패키지의 목적은 하나, 데이터의 통계 분석이다.
예를 들어 파일 시스템 검사나 서버 유지보수를 위한 패키지가 아니다. 그런 작업은 R의 소관이 아니다. 제대로 작동하지 않는 경우도 가끔 있지만(모든 오픈소스 리포지토리의 공통점) 대부분의 코드는 통계학자들이 작성하고 검토한 코드다.
파이썬은 계속 발전 중
프랑스에서 "르위켄(le weekend)"이라고 말하면 잘 통한다. 살아있는 언어란 그런 것이다. 파이썬은 프랑스어와 마찬가지로 계속 발전하고 더 나아지는 중이다. 버전 2.3에서 3.0으로 건너뛰면서 예전 코드가 작동하지 않게 됐지만, 많은 파이썬 애호가들은 변화에 그 정도의 가치는 있다고 말한다. 비록 과거의 코드를 단절시킨다 해도 살아있는 코드는 계속 발전한다.
살아있는 언어는 곧 사람들이 사용하고 개선하고 싶어한다. 이는 더 많은 오픈 소스 코드와 더 많은 솔루션으로 연결된다. 페이스북의 정치적 밈(meme)이 우리가 민주주의를 위해 치러야 할 대가라면, 표준의 변경과 코드의 단절은 인기있고 발전하는, 살아있는 언어를 사용할 때 감수해야 할 비용이다.
R은 순수함을 유지한다
R이 변화하지 않다고 말하는 것은 불공정하다. 사실 R은 대규모 코드 베이스를 더 정화하기 위해 구문 유효 범위(lexical scoping)를 적용한 S의 변형이다. 그럼에도 많은 경우 R 인터프리터에서 S를 실행할 수 있다. 파이썬 프로그래머처럼 코드 베이스가 2.3이냐 3.0이냐를 항상 따져야 할 정도의 중대한 패러다임 변화는 없다.
시간이 지날수록 더 익숙해지고 문제 발생의 가능성은 더 줄어들 뿐이다. R 역시 살아있으므로 보장할 수는 없지만 변화의 보폭이 크거나 급진적이지는 않다.
파이썬은 다른 언어가 할 수 있는 작업을 다 한다
파이썬은 프로그래머가 원하는 모든 작업을 할 수 있도록 프로그래머가 설계한 범용 언어다. 이 말이 곧 튜링 완전(Turing-complete)과 같은 의미는 아니다. 게임 오브 라이프(Game of Life)는 튜링 완전하지만 이걸로 피보나치 수열을 계산하는 함수를 쓸 사람은 아마 없을 것이다. 어떤 작업을 수행해야 한다면 일반적으로 선택할 수 있는 옵션은 풍부하다.
그러나 파이썬은 그 작업을 쉽게 하도록 고안된 언어다. 파이썬은 다량의 코드로 채워진 실제 프로젝트를 위해 고안됐다. 프로젝트를 시작하는 시점, 소소한 세부 사항들을 정리하기 위한 코드 몇 줄을 써야 할 때는 그 유용성이 드러나지 않을 수 있다. 그러나 나중에 이 몇 줄이 몇 천 줄이 되고 전체 덩어리가 스파게티 코드가 되면 파이썬의 이러한 특성이 빛을 발한다. 파이썬은 규모가 큰 프로젝트에 적합하도록 만들어졌고 언젠가는 여러분에게도 파이썬의 기능이 필요할 날이 있을 것이다.
R은 통계를 잘 한다
R은 통계 분석을 위해 만들어진 언어다. 지금 해야 할 일이 무엇인가? 통계 분석이라면 다른 건 볼 필요도 없다. 그 작업에 딱 맞는 툴을 선택하라. 렌치도 망치 대용으로 쓸 수는 있지만 망치가 필요한 일에는 망치를 쓰는 게 좋다.
파이썬에는 명령줄이 있다
마우스로 가리키고 클릭하면서 자란 아이들은 보통 처음에는 명령줄에 적응을 잘 못하지만 결국 좋은 키보드와 조화를 이룬 명령줄의 힘과 표현력을 깨닫게 된다. 명령줄이라는 언어의 조합은 정말 놀랍다. 십여 개의 메뉴 페이지를 거치며 마우스로 클릭해서 할 일을 명령줄에서는 효과적인 문자열 하나로 할 수 있다.
파이썬은 이 세계에 속한다. 파이썬은 명령줄을 위해 태어났고 명령줄에서 힘을 발휘한다. 모양새는 터무니없이 뒤쳐져 보일 수 있지만 효율적이고 강력하다.
그건 R도 하고, R스튜디오도 있다
명령줄 안에서 이것저것 많이 쌓아 올리긴 했어도 R 역시 일종의 명령줄을 중심으로 만들어진 언어다. 그러나 많은 사람들은 모든 요소를 집어넣어 잘 포장한 두 가지 환경, R스튜디오(RStudio) 또는 R 커맨더(R commander) 내에서 작업한다. 명령줄도 있지만 데이터 편집기, 디버깅 지원, 그래픽을 위한 창도 있다. 파이썬 세계도 최근 이클립스, 비주얼 스튜디오 등의 기존 IDE를 통해 R의 이런 부분을 따라잡으려 노력하는 중이다.
파이썬에는 웹이 있다
유닉스 웹 서버와 함께 진화한 스크립팅 언어, 파이썬 개발을 위한 웹사이트가 등장한다는 것은 어찌 보면 자연스러운 현상이다. 우선 로데오(Rodeo)와 주피터(Jupyter)가 있고, 앞으로 더 생길 것이다.
인터프리터로 포트 80을 링크하기는 쉬우므로 파이썬은 웹에서 아주 잘 작동한다. 물론 스칼라, 줄리아, 꼭 원한다면 R과 같은 다른 언어에서도 주피터를 사용할 수 있지만 어느 언어가 가장 유리한 지는 Jupyter라는 철자만 봐도 알 수 있다.
R은 라텍스와 잘 통한다
R을 사용해 데이터를 분석하는 사람들은 많은 경우 라텍스(LaTex)를 사용해 그 데이터에서 발견한 신호를 보고하기 위한 문건을 작성한다. 데이터 분석과 문서 레이아웃을 결합하는 아주 효과적인 시스템, 스위브(Sweave)가 나온 것도 어찌 보면 자연스러운 일이다.
데이터를 분석하고 그래프를 만들기 위한 R 명령이 결과를 보고하는 텍스트와 혼합된다. 모두 한 곳에 있으므로 손상이나 캐시 문제 발생 위험이 최소화된다. 버튼 하나만 누르면 소프트웨어가 데이터를 다시 분석하고 결과를 최종 문서에 넣어준다.
둘 다 사용한다면 어떨까
두 가지의 장점을 모두 사용하면 되지 않겠는가? 실제로 많은 데이터 과학자들이 그렇게 하고 있다. 데이터 집계의 첫 단계는 파이썬으로 실행 가능하다. 그 다음 R에 내장된, 충분한 테스트와 최적화를 거친 통계 분석 루틴을 이 데이터에 적용한다.
R을 일종의 파이썬 라이브러리로 사용하거나, 파이썬을 R을 위한 전처리 라이브러리로 사용하는 개념이다. 특정 계층에 가장 잘 맞는 언어를 선택해서 케이크처럼 쌓아 올리면 된다. R이 케이크이고 파이썬이 그 위에 올리는 설탕 가루인가? 아니면 그 반대인가? 그건 각자가 선택하면 된다. editor@itworld.co.kr
함께 보면 좋은 콘텐츠
Sponsored
Surfshark
“유료 VPN, 분명한 가치 있다” VPN 선택 가이드
ⓒ Surfshark VPN(가상 사설 네트워크, Virtual Private Network)은 인터넷 사용자에게 개인 정보 보호와 보안을 제공하는 중요한 도구로 널리 인정받고 있다. VPN은 공공 와이파이 환경에서도 데이터를 안전하게 전송할 수 있고, 개인 정보를 보호하는 데 도움을 준다. VPN 서비스의 수요가 증가하는 것도 같은 이유에서다. 동시에 유료와 무료 중 어떤 VPN을 선택해야 할지 많은 관심을 가지고 살펴보는 사용자가 많다. 가장 먼저 사용자의 관심을 끄는 것은 별도의 예산 부담이 없는 무료 VPN이지만, 그만큼의 한계도 있다. 무료 VPN, 정말 괜찮을까? 무료 VPN 서비스는 편리하고 경제적 부담도 없지만 고려할 점이 아예 없는 것은 아니다. 보안 우려 대부분의 무료 VPN 서비스는 유료 서비스에 비해 보안 수준이 낮을 수 있다. 일부 무료 VPN은 사용자 데이터를 수집해 광고주나 서드파티 업체에 판매하는 경우도 있다. 이러한 상황에서 개인 정보가 유출될 우려가 있다. 속도와 대역폭 제한 무료 VPN 서비스는 종종 속도와 대역폭에 제한을 생긴다. 따라서 사용자는 느린 인터넷 속도를 경험할 수 있으며, 높은 대역폭이 필요한 작업을 수행하는 데 제약을 받을 수 있다. 서비스 제한 무료 VPN 서비스는 종종 서버 위치가 적거나 특정 서비스 또는 웹사이트에 액세스하지 못하는 경우가 생긴다. 또한 사용자 수가 늘어나 서버 부하가 증가하면 서비스의 안정성이 저하될 수 있다. 광고 및 추적 위험 일부 무료 VPN은 광고를 삽입하거나 사용자의 온라인 활동을 추적하여 광고주에게 판매할 수 있다. 이 경우 사용자가 광고를 보아야 하거나 개인 정보를 노출해야 할 수도 있다. 제한된 기능 무료 VPN은 유료 버전에 비해 기능이 제한될 수 있다. 예를 들어, 특정 프로토콜이나 고급 보안 기능을 지원하지 않는 경우가 그렇다. 유료 VPN의 필요성 최근 유행하는 로맨스 스캠은 인터넷 사기의 일종으로, 온라인 데이트나 소셜 미디어를 통해 가짜 프로필을 만들어 상대를 속이는 행위다. 이러한 상황에서 VPN은 사용자가 안전한 연결을 유지하고 사기 행위를 방지하는 데 도움이 된다. VPN을 통해 사용자는 상대방의 신원을 확인하고 의심스러운 활동을 감지할 수 있다. 서프샤크 VPN은 구독 요금제 가입 후 7일간의 무료 체험을 제공하고 있다. ⓒ Surfshark 그 외에도 유료 VPN만의 강점을 적극 이용해야 하는 이유는 다음 3가지로 요약할 수 있다. 보안 강화 해외 여행객이 증가함에 따라 공공 와이파이를 사용하는 경우가 늘어나고 있다. 그러나 공공 와이파이는 보안이 취약해 개인 정보를 노출할 위험이 있다. 따라서 VPN을 사용하여 데이터를 암호화하고 개인 정보를 보호하는 것이 중요하다. 서프샤크 VPN은 사용자의 개인 정보를 안전하게 유지하고 해킹을 방지하는 데 유용하다. 개인정보 보호 인터넷 사용자의 검색 기록과 콘텐츠 소비 패턴은 플랫폼에 의해 추적될 수 있다. VPN을 사용하면 사용자의 IP 주소와 로그를 숨길 수 있으며, 개인 정보를 보호할 수 있다. 또한 VPN은 사용자의 위치를 숨기고 인터넷 활동을 익명으로 유지하는 데 도움이 된다. 지역 제한 해제 해외 여행 중에도 한국에서 송금이 필요한 경우가 생길 수 있다. 그러나 IP가 해외 주소이므로 은행 앱에 접근하는 것이 제한될 수 있다. VPN을 사용하면 지역 제한을 해제해 해외에서도 한국 인터넷 서비스를 이용할 수 있다. 따라서 해외에서도 안전하고 편리하게 인터넷을 이용할 수 있다. 빠르고 안전한 유료 VPN, 서프샤크 VPN ⓒ Surfshark 뛰어난 보안 서프샤크 VPN은 강력한 암호화 기술을 사용하여 사용자의 인터넷 연결을 안전하게 보호한다. 이는 사용자의 개인 정보와 데이터를 보호하고 외부 공격으로부터 사용자를 보호하는 데 도움이 된다. 다양한 서버 위치 서프샤크 VPN은 전 세계 곳곳에 여러 서버가 위치하고 있어, 사용자가 지역 제한된 콘텐츠에 액세스할 수 있다. 해외에서도 로컬 콘텐츠에 손쉽게 접근할 수 있음은 물론이다. 속도와 대역폭 서프샤크 VPN은 빠른 속도와 무제한 대역폭을 제공하여 사용자가 원활한 인터넷 경험을 누릴 수 있도록 지원한다. 온라인 게임, 스트리밍, 다운로드 등 대역폭이 필요한 활동에 이상적이다. 다양한 플랫폼 지원 서프샤크 VPN은 다양한 플랫폼 및 디바이스에서 사용할 수 있다. 윈도우, 맥OS, iOS, 안드로이드 등 다양한 운영체제 및 디바이스에서 호환되어 사용자가 어디서나 안전한 인터넷을 즐길 수 있다. 디바이스 무제한 연결 서프샤크 VPN은 무제한 연결을 제공하여 사용자가 필요할 때 언제든지 디바이스의 갯수에 상관없이 VPN을 사용할 수 있다.