많은 튜토리얼이나 매뉴얼에서 서술은 R과 파이썬이 분석 프로세스의 보완 구성 요소로 공존한다는 것을 암시하는 것으로 보입니다. 그러나 훈련받지 않은 눈에는 두 언어가 똑같은 일을하는 것처럼 보입니다.
내 질문은 두 언어에 대한 전문화 된 틈새가 있는지 아니면 하나를 사용할 것인지 개인적으로 선호하는 것입니까?
많은 튜토리얼이나 매뉴얼에서 서술은 R과 파이썬이 분석 프로세스의 보완 구성 요소로 공존한다는 것을 암시하는 것으로 보입니다. 그러나 훈련받지 않은 눈에는 두 언어가 똑같은 일을하는 것처럼 보입니다.
내 질문은 두 언어에 대한 전문화 된 틈새가 있는지 아니면 하나를 사용할 것인지 개인적으로 선호하는 것입니까?
답변:
그들은 보완 적입니다. 모두 사실입니다 수 같은 일을, 아직 대부분의 언어라고 할 수있다. 각각의 장단점이 있습니다. 일반적인 전망은 파이썬이 텍스트 분석뿐만 아니라 데이터 수집 및 준비에 가장 적합하다는 것 같습니다. R은 가장 먼저 통계 언어이므로 데이터 분석에 가장 적합한 것으로 간주됩니다.
R 은 여러분이 생각할 수있는 모든 패키지를 갖추고 있지만 기본 카이-제곱에서 요인 분석 및 위험 모델에 이르기까지 통계 분석은 쉽고 강력합니다. 통계에서 가장 큰 이름 중 일부는 R 패키지를 생성하며 모든 요구에 도움이되는 활발한 커뮤니티가 있습니다. ggplot2
데이터 시각화 (그래프 등)의 표준입니다. R은 벡터화 된 언어이며 데이터를 효율적으로 반복하도록 만들어졌습니다. 또한 모든 데이터를 RAM에 저장합니다. 양날의 검입니다. 소규모의 데이터 세트에서는 까다 롭지 만 (일부는 나에게 논쟁의 여지가 있지만) 빅 데이터를 잘 처리 할 수는 없습니다 (패키지를 가지고 있지만) 와 같은 ff
).
파이썬 은 R보다 배우기가 훨씬 쉽습니다. 특히 이전 프로그래밍 경험이있는 사람들에게는 더욱 그렇습니다. R은 ... 이상해. 파이썬은 데이터 검색에 뛰어나며 웹 스크랩에 사용할 언어입니다 (놀랍게도 beautifulsoup
). 파이썬은 문자열 파싱 및 텍스트 조작에있어 강점으로 알려져 있습니다. pandas
데이터 조작, 병합, 변환 등을위한 훌륭한 라이브러리이며 빠릅니다 (아마도 R에서 영감을 얻음).
파이썬은 프로그래밍이 필요할 때 좋습니다. 범용 언어이므로 놀라운 것은 아닙니다. 그러나 모든 확장 기능을 갖춘 R은 통계 전문가가 통계 전문가를 위해 작성했습니다. 따라서 많은 응용 프로그램에서 Python이 더 쉽고 빠르며 빠를 수 있지만 R은 통계 분석을위한 플랫폼입니다.
data.table
R 의 패키지는 특히 대규모 데이터 세트에 대한 효율적인 작업을 위해 고안되었으며 분산 처리에 정밀하게 연결됩니다.
data.table
; rvest
beautifulsoup
두 언어를 모두 사용하는 사람으로서 데이터 과학 / 통계 / 데이터 분석 등을 위해 두 언어가 사용되는 요점에 닿는 답을 공식화하려고합니다.
데이터 분석의 워크 플로는 일반적으로 다음 단계로 구성됩니다.
시간의 99 %가 데이터를 가져 오는 과정은 SQL 또는 임팔라 데이터베이스의 일종을 조회까지 제공 : 모두 파이썬 과 R은 동일하게 (시간에 일을 특정 클라이언트 또는 라이브러리가 RImpala
, RmySQL
R과 MySQLdb
파이썬 추가하지 않아도 부드럽게 작동합니다). 외부 .csv 파일을 읽을 때 Rdata.table
패키지는 사용자 지정 구문 분석 옵션을 사용하여 크고 복잡한 .csv 파일을 빠르게 읽을 수있는 기능 을 제공 하며 결과를 열 이름과 행 번호가있는 데이터 프레임으로 직접 변환합니다.fread
단일 항목, 행 또는 열에 쉽게 액세스 할 수 있도록 일종의 테이블에 데이터를 저장하려고합니다.
R의 패키지는 data.table
데이터를 레이블 이름을 변경, 삭제 및 액세스 할 수있는 매우 저렴한 방법을 제공합니다. 표준 구문은 다음과 같이 SQL과 매우 유사 dt[i, j, fun_by]
합니다 dt[where_condition, select_column, grouped_by (or the like)]
. 사용자 정의 사용자 정의 함수를 j
절과 절 에 넣을 수 있으므로 데이터를 자유롭게 조작하고 그룹 또는 하위 집합에 복잡하거나 멋진 함수를 적용 할 수 있습니다 (i 번째 행, k 번째 전체 열의 표준 편차가 무엇인지, 마지막 열을 기준으로 그룹화 한 경우에만 (i-1) 번째 행의 (k-2) 번째 요소에 합산하십시오. 벤치 마크 와 SO에 대한 다른 놀라운 질문을 살펴보십시오.. 열과 행의 정렬, 삭제 및 이름 변경은 필요한 apply, sapply, lapply, ifelse
작업을 수행 하며 표준 벡터화 R 방법 은 각 요소를 반복하지 않고 열과 데이터 프레임에서 벡터화 연산을 수행합니다 (R에서 루프를 사용할 때마다 잘못하고 있습니다).
파이썬 의 반격 무기는 pandas
라이브러리입니다. 마지막으로 pd.DataFrame
데이터를 데이터 프레임, 즉 데이터 프레임 (일부 numpy array, numpy list, numpy matrix
또는 기타가 아닌)으로 처리 하는 구조 (표준 파이썬에는 어떤 이유로 든 아직 알려지지 않은 )가 있습니다. 그룹화, 이름 변경, 정렬 등과 같은 작업을 쉽게 수행 할 수 있으며 여기서 사용자는 Python apply
또는을 사용하여 그룹화 된 데이터 집합 또는 프레임의 하위 집합에 사용자 지정 함수를 적용 할 수 있습니다 lambda
. 나는 개인적으로 문법 df[df.iloc(...)]
을 싫어하여 작품에 접근하지만, 그것은 개인적인 취향이며 전혀 문제가되지 않습니다. 그룹화 작업에 대한 벤치 마크는 여전히 R보다 약간 나쁘지만 data.table
컴파일을 위해 0.02 초를 절약하지 않으면 성능에 큰 차이가 없습니다.
문자열을 처리 하는 R 방법은 stringr
텍스트 조작, 아나그램, 정규식, 후행 공백 또는 이와 유사한 것을 쉽게 허용 하는 패키지를 사용하는 것입니다. 또한 JSON 사전의 압축을 풀고 해당 요소의 목록을 해제하는 JSON 라이브러리와 함께 사용할 수 있으므로 열 이름과 요소가 UTFF 이외의 문자 또는 공백없이 최종 데이터 프레임을 갖습니다. 거기에.
Python 's Pandas .str.
는 정규 표현식으로 플레이하거나 트레일 링하거나 경쟁 업체와 마찬가지로 훌륭하게 작동하므로 취향에 큰 차이가 없습니다.
제 생각에 두 언어의 차이점이 발생합니다.
아르 자형오늘날에는 사용자가 1 ~ 2 줄의 코드로 원하는 것을 수행 할 수있는 탁월한 라이브러리 세트가 있습니다. 표준 함수 또는 다항 회귀 분석은 단일 라이너에서 수행되며 해당 신뢰 구간과 p- 값 분포와 함께 계수를 쉽게 읽을 수있는 출력을 생성합니다. 클러스터링과 마찬가지로 임의 포리스트 모델과 마찬가지로 덴도 그램, 주성분 분석, 단일 값 분해, 로지스틱 적합 등이 있습니다. 위의 각각에 대한 출력에는 계수 및 매개 변수의 색상 및 거품과 함께 방금 수행 한 작업의 시각화를 생성하는 특정 플로팅 클래스가 제공됩니다. 가설 검정, 통계 검정, Shapiro,
파이썬 은 SciPy
and scikit-learn
. 대부분의 표준 분석 및 모델도 사용할 수 있지만 코딩하는 데 약간 길고 이해하기가 쉽지 않습니다 (제 생각에는). 더 복잡한 기계는 누락되었지만 일부는 기존 라이브러리의 일부 조합으로 추적 될 수 있습니다. R이 아닌 Python에서 선호하는 한 가지는 bi-gram, tri-gram 및 높은 차수의 bag-of-word 텍스트 분석입니다.
두 언어 모두 R ggplot2
과 그에 상응하는 Python과 같은 아름다운 플로팅 도구를 가지고 있습니다 . 경쟁이 많지는 않지만, 안전하고 건전한 작업을 수행하지만 , 결과를 제시 하는 경우 다른 도구를 사용해야 할 수도 있습니다. 멋진 화려한 디자인 도구가 있으며 Python이나 R도 놀랍지 않습니다. 화려한 빨강과 녹색의 드래그 앤 드롭으로 관객. R은 최근에 shiny app
기본적으로 대화 형 출력 을 생성 할 수 있는 기능 에 대한 많은 개선 사항을 발표 했습니다 . 나는 그것을 배우고 싶지 않았지만, 그것이 있고 사람들이 그것을 잘 사용한다는 것을 알고 있습니다.
부수적으로 두 언어의 주요 차이점은 파이썬 이 컴퓨터 과학, 이식성, 배포 등에 의해 만들어지는 범용 프로그래밍 언어라는 점이라는 점을 강조하고 싶습니다 . 그것이하는 일이 굉장하며 배우기가 간단합니다. 파이썬을 좋아하지 않는 사람은 없습니다. 그러나 프로그래밍을하는 것은 프로그래밍 언어입니다.
아르 자형반면에 수학자, 물리학 자, 통계 학자 및 데이터 과학자들에 의해 발명되었다. 그 배경에서 온다면 통계와 수학에 사용 된 개념을 완벽하게 반영하고 재현하기 때문에 모든 것이 완벽하게 이해됩니다. 그러나 대신 컴퓨터 과학 배경에서 왔으며 R에서 Java 또는 C를 시뮬레이트하려는 경우 실망 할 것입니다. 표준 의미에서 "객체"를 갖지 않습니다 (잘, 일반적으로 생각하는 것은 아니지만 ...), 표준 의미로 클래스를 가지고 있지 않습니다 (잘, 일반적으로 그렇지는 않습니다) "포인터"또는 다른 모든 컴퓨터 과학 구조를 가지고 있지는 않지만 필요합니다. 마지막이지만 최소한은 아닙니다. Rstudio를 사용하는 경우 문서와 패키지를 작성하고 읽을 수 있습니다. 거기에는 크고 열정적 인 커뮤니티가 있으며, 첫 번째 항목은 해당 코드가있는 문제에 대한 해결책으로 다른 사람을 리디렉션하는 Google의 "R에서 임의 삽입 문제를 수행하는 방법"에 문자 그대로 5 초가 걸립니다. , 곧.
대부분의 산업 회사에는 Python 코드를 쉽게 통합 할 수있는 Python (또는 Python 친화적 환경)으로 구축 된 인프라가 있습니다 import myAnalysis
. 그러나 최신 기술이나 서버 또는 플랫폼은 아무런 문제없이 백그라운드 R 코드를 쉽게 실행할 수 있습니다.
파이썬은 일반적인 프로그래밍 언어이므로 데이터 분석 외에도 많은 다른 작업을 수행하는 데 좋습니다. 예를 들어, 프로덕션 서버에서 모델 실행을 자동화하려면 python이 정말 좋습니다. 다른 예에는 하드웨어 / 센서에 연결하여 데이터를 읽고, 데이터베이스 (JSON과 같은 관계형 또는 비 구조적 데이터)와 상호 작용, 데이터 구문 분석, 네트워크 프로그래밍 (TCP / IP), 그래픽 사용자 인터페이스, 셸과 상호 작용 등이 있습니다. 왜 데이터 과학자가 예측 모델과 관련이없는 이러한 많은 종류의 작업을 원할까요? 사람들은 다른 정의를 가지고 있다고 생각 합니다. 데이터 과학자 란 무엇입니까?일부 조직에서는 데이터를 구문 분석하고 대시 보드를 사용하여 설명 분석을 수행하는 것이 비즈니스에 적합하고 예측 모델을 수행하기에 충분히 성숙하지 않습니다. 반면에, 많은 소규모 회사에서 사람들은 데이터 과학자들이 많은 소프트웨어 엔지니어링을 수행 할 것으로 기대할 수 있습니다. 파이썬을 아는 것은 다른 소프트웨어 엔지니어와 독립하게 만듭니다.)
R에는 파이썬이나 MATLAB보다 훨씬 나은 통계 패키지가 많이 있습니다. R을 사용하면 구현 세부 수준 대신 모델 수준에서 실제로 생각할 수 있습니다. 이것은 통계 모델을 개발할 때 큰 이점입니다. 예를 들어, 많은 사람들이 파이썬에서 신경망을 수동으로 구현하고 있습니다. 이러한 작업을 수행하면 신경망이 작동하는 이유를 이해하는 데 도움이되지 않고 다른 사람의 작업을 복제하여 작동하는지 확인하기 위해 레시피를 따르십시오. R에서 작업하는 경우 구현 세부 정보 대신 모델 뒤의 수학에 쉽게 집중할 수 있습니다.
많은 경우 사람들이 함께 사용합니다. 파이썬에서는 빌딩 소프트웨어를 작성하기 쉽고 R에서는 빌딩 모델을 사용하는 것이 좋습니다. 종이가 아닌 프로덕션 환경에서 모델을 제공하려면 둘 다 필요할 수 있습니다. 회사에 소프트웨어 엔지니어가 많으면 R이 더 필요할 수 있습니다. 회사에 연구원이 많으면 더 많은 Python이 필요할 수 있습니다.
scikit-learn
어때요? scikit-learn.org/stable
모든 줄무늬를 가진 프로그래머들은 언어 선택이 얼마나 문화적 인지를 과소 평가합니다 . Node.js와 같은 웹 개발자 과학자들은 파이썬을 좋아합니다. Javascript의 유동성과 Java의 강성을 모두 처리 할 수있는 폴리 글 로트 소프트웨어 엔지니어로서, 이러한 언어가 서로의 작업에 나쁜 본질적인 이유가 아니라 엄청난 양의 패키지, 문서, 커뮤니티, 서적, 등을 둘러싼.
본질적인 이유로 하나의 임의의 언어가 다른 언어보다 낫습니다.이 답변에 대한 다음 의견을 참조하십시오.
필자의 개인적 예측은 파이썬이 미래의 길이라고 생각합니다. R은 R이 할 수있는 모든 것을 할 수 있기 때문에 R이 할 수있는 모든 것을 할 수 있습니다. R이 할 수있는 모든 것을 할 수 있고 훨씬 더 나은 소프트웨어 엔지니어링 언어입니다. 소프트웨어 엔지니어링은 다음을 다루는 학문입니다.
게다가 솔직히 파이썬은 배우기가 더 쉽습니다.
과학자들과 통계 학자들은 그들이 독립적이고 지체되지 않은 직업이 아니라 훌륭한 소프트웨어 엔지니어링 실무에 대한 이해 관계자라는 것을 알게 될 것입니다. 저의 의견이지만 학문적 취성의 취성을 입증하는 논문이 이것을 뒷받침 할 것입니다.
이 답변은 모두 제 의견입니다. 그러나 당신은 매우 의견이 많은 질문을했으며, 지금까지는 잘 받아 들여 졌기 때문에, 당신은 소박하고 합리적으로 정보를 얻은 (나는 희망합니다!) 의견을받을 자격이 있다고 느꼈습니다. 전반적으로 R에 대한 Python에 대한 심각한 논쟁이 있으며 현실 자체가 당파 일 수있을 때 비 당파적인 답변을 게시하려고 시도하지 않을 것입니다.
저는 R 사용자이지만 파이썬이 미래라고 생각합니다 (구문이라고 생각하지 않습니다)
파이썬의 미래 파이썬
의 장점은 다른 사람들이 이미 더 광범위한 지원과 프로그래머에게 더 논리적 인 구문을 언급했듯이 이점입니다.
또한 분석 결과를 생산 시스템으로 변환 할 수있는 기능이 훨씬 간단합니다.
어쩌면 파이썬이 범용이기 때문에 R이 아니고 생산 된 R 파이프 라인을 볼 때 눈썹을 올리기도합니다.
그러나 고급 응용 프로그램의 경우에도 Python은 빠르게 따라 잡고 있으며 (Scikit-learn, PyBrain, Tensorflow 등) R은 여전히 통계적 방법을 구현하는 방법에 대한 학계의 언어입니다. 고급 전문 라이브러리의 출현.
그러나 R은 나쁘지 않습니다.
많은 사람들이 "R은 나쁜 구문을 가지고 있습니다"악 대차를 뛰어 넘고 싶어합니다.
R의 구문을 좋은 것으로 제안하고 싶습니다!
할당 함수, 게으른 평가, 비표준 평가 및 공식은 R을 사용할 때 큰 이점
입니다. 요약에서 참조 된 변수 이름을 이스케이프 처리하는 것에 대해 걱정할 필요가 없거나 시간 또는 시간에 대한 모델 논리를 구성하는 방법에 대해 걱정할 필요가 없습니다. 로 이름을 names()
찾은 다음을 추가하여 새 이름을 지정하십시오 <- c("A", "B", "C")
.
사람들이 R의 이상한 구문에 대해 불평 할 때 데이터 과학 도구가 아니라 프로그래밍 언어로 간주합니다.
누군가 R에서 왔고 dplyr를 좋아함에 따라 팬더의 구문이 약간 어색하다는 것을 알았습니다.
예, 좀 더 유연하지만 대부분의 작업에서는 아이디어를 표현하지 않고 Python의 파서를 만족시키기 위해 R보다 간단한 명령을 수행하는 데 더 많은 키 입력을 사용합니다.
요약
물론 물론 두 가지를 모두 아는 것이 현명하며, 파이썬이 R을 선택하는 동안 R의 도메인 특정 디자인 선택은 임시 작업을 위해 더 단순 해집니다. R의 큰 단점은 도메인을 떠나기가 어렵다는 것입니다. 지속 가능한 방식으로 결과를 구현하려고 시도하면 기본적으로 수행해야합니다.
프로그래밍 언어가 아닌 통계 도구로 R을 살펴보면 정말 좋습니다. Stata 나 SPSS보다 훨씬 융통성이 있지만 가능한 모든 것을 할 수 있습니다. 나는 대학에서 Stata를 배웠고 R은 통계 도구에 대한 관점을 이미 가지고 있었고 다른 사람들이 가질 수있는 순수한 프로그래밍 언어 경험이 아니기 때문에 쉽게 볼 수있었습니다.
프로그래머 인 사람들이 R을 배우고 이해하려고 할 때 R에 대한 좌절감이 시작된다고 생각합니다. 그러나 통계적 배경을 통해 R에 오는 사람들에게는 훌륭한 도구입니다.
파이썬은 이미 훌륭한 프로그래머라면 훌륭합니다. 그러나 저는 대학 밖에서 프로그래밍과 통계를 처음 접했을 때 R이 훨씬 나은 선택이었습니다. 그것은 당신의 기술과 관심에 더 잘 맞는 것을 선호합니다.
파이썬은 과학 이외의 분야에서 널리 채택되어 있으므로 모든 이점을 활용할 수 있습니다. "An Angry Guide to R"에서 지적한 바와 같이, R은 커뮤니티에 의해 개발되었으며 소프트웨어 개발자는 처음으로 주문해야했습니다.
오늘 R에는 두 가지 주요 장점이 있습니다. 일부는 일부 영역에서 고도로 전문화 된 패키지와 최첨단의 재현 가능한 연구 패키지 편 직기입니다.
파이썬은 다른 모든 것에 더 적합한 것으로 보입니다.
이 스레드의 거의 모든 것과 마찬가지로 이것은 물론 의견입니다. 이 스레드가 여전히 살아 있다는 사실에 놀랐습니다.
다른 답변에서 설명했듯이 Python은 훌륭한 범용 프로그래밍 언어이지만 R은 프로그래밍 언어로서 심각한 결함이 있지만 더 많은 데이터 분석 라이브러리 세트가 있습니다. 최근 몇 년 동안 Python은 scikit-learn과 같은 성숙한 데이터 분석 라이브러리의 개발로 R을 따라 잡았습니다. 반면 R은 고정되지 않습니다. 실제로, 나는 거의 모든 것에 Python (실제로 Hy )을 사용하고 Quantile regression (Python의 statsmodels에서 구현이 중단 된 것처럼)과 같은 비교적 난해한 메소드에 대해서만 R로 바꿉니다. 파이썬에서 R을 호출하는 방법에는 여러 가지가 있습니다. PypeR은 Windows 서버와 같은 적대적인 환경에서 작동하기에 충분히 간단합니다.
편집 : 나는 이것에 대해 더 논쟁하고 싶은 사람은이 답변에 대해 언급하는 대신 연결된 에세이의 저자와 이야기하도록 권장합니다.