데이터 과학에서 R과 Python은 어떻게 서로를 보완합니까?


54

많은 튜토리얼이나 매뉴얼에서 서술은 R과 파이썬이 분석 프로세스의 보완 구성 요소로 공존한다는 것을 암시하는 것으로 보입니다. 그러나 훈련받지 않은 눈에는 두 언어가 똑같은 일을하는 것처럼 보입니다.

내 질문은 두 언어에 대한 전문화 된 틈새가 있는지 아니면 하나를 사용할 것인지 개인적으로 선호하는 것입니까?


2
이것은 실제로 해당 스레드의 복제본처럼 보이지 않습니다. 이것은 파이썬을 사용하여 통계를 수행하는 방법이 아니라 파이썬이 R을 보완하는 방법에 관한 것입니다 (분명히 R은 통계 분석을 수행하는 데 사용됩니다).
gung-Monica Monica 복원

4
당신이 10 년 전에 통계 학자라면 R. 코드를 프로덕션 환경에 배치하거나 재사용하려는 경우 Python.
djechlin


3
이 q.의 인기로 인해 & 플래그를 통한 요청에 대한 응답으로 다시 열었지만 CW로 만들었습니다.
Scortchi-Monica Monica 복원

1
대부분의 대답은 잊어 버리는 경향이 파이썬 언어와 GNU-R 구현 을 비교한다는 것 입니다. R에는 다른 구현도 있습니다 ( Intel MKL, FastR , pqR 등으로 컴파일 된 Java, Microsoft R Open으로 작성된 Renjin 참조 ). 이들은 훨씬 보수적 인 구현 인 GNU-R의 일부 문제를 해결하려고 시도합니다. 또한 R에는 공식적인 정의가 없음을 기억하십시오.
Firebug

답변:


45

그들은 보완 적입니다. 모두 사실입니다 같은 일을, 아직 대부분의 언어라고 할 수있다. 각각의 장단점이 있습니다. 일반적인 전망은 파이썬이 텍스트 분석뿐만 아니라 데이터 수집 및 준비에 가장 적합하다는 것 같습니다. R은 가장 먼저 통계 언어이므로 데이터 분석에 가장 적합한 것으로 간주됩니다.

R 은 여러분이 생각할 수있는 모든 패키지를 갖추고 있지만 기본 카이-제곱에서 요인 분석 및 위험 모델에 이르기까지 통계 분석은 쉽고 강력합니다. 통계에서 가장 큰 이름 중 일부는 R 패키지를 생성하며 모든 요구에 도움이되는 활발한 커뮤니티가 있습니다. ggplot2데이터 시각화 (그래프 등)의 표준입니다. R은 벡터화 된 언어이며 데이터를 효율적으로 반복하도록 만들어졌습니다. 또한 모든 데이터를 RAM에 저장합니다. 양날의 검입니다. 소규모의 데이터 세트에서는 까다 롭지 만 (일부는 나에게 논쟁의 여지가 있지만) 빅 데이터를 잘 처리 할 수는 없습니다 (패키지를 가지고 있지만) 와 같은 ff).

파이썬 은 R보다 배우기가 훨씬 쉽습니다. 특히 이전 프로그래밍 경험이있는 사람들에게는 더욱 그렇습니다. R은 ... 이상해. 파이썬은 데이터 검색에 뛰어나며 웹 스크랩에 사용할 언어입니다 (놀랍게도 beautifulsoup). 파이썬은 문자열 파싱 및 텍스트 조작에있어 강점으로 알려져 있습니다. pandas데이터 조작, 병합, 변환 등을위한 훌륭한 라이브러리이며 빠릅니다 (아마도 R에서 영감을 얻음).

파이썬은 프로그래밍이 필요할 때 좋습니다. 범용 언어이므로 놀라운 것은 아닙니다. 그러나 모든 확장 기능을 갖춘 R은 통계 전문가가 통계 전문가를 위해 작성했습니다. 따라서 많은 응용 프로그램에서 Python이 더 쉽고 빠르며 빠를 수 있지만 R은 통계 분석을위한 플랫폼입니다.


13
둘 다 아는 사람으로서 나는 이것에 동의합니다. 많은 문체 론적 논증이있을 수 있지만, 가장 큰 차이점은 실제로 인과적인 통계 모델을 실행할 시간이되면 파이썬이 개발되지 않았다는 것입니다. statsmodels의 패키지는 당신에게 몇 가지 기본을 얻을 수 있지만, R, STATA 또는 SAS 접근하지 않습니다. 주목할만한 예외 중 하나는 머신 러닝 스타일 분석인데, 파이썬의 scikitlearn이 잘 일치합니다. 다른 모든 것에는 파이썬이 적어도 R과 같고 종종 우수하다는 좋은 주장을 할 수 있다고 생각합니다. 둘 다 배우는 것이 결코 시간을 잘못 사용하는 것은 아닙니다.
Jeff

2
나는 이것의 대부분에 동의하지만 더 많은 문제를 강조 할 것입니다-R은 큰 데이터 세트에는 좋지 않으며 스파 스 데이터 세트 (대부분의 라이브러리는 지원하지 않습니다)를 잘 처리하지 않습니다 (많은 기계 학습을 수행하는 것입니다) 예를 들어, 요인 / 범주 변수의 카디널리티가 1000 대에있을 수있는 '단어 모음'유형 모델.
seanv507

10
주석 스레드에서 인수를 시작하지 말고 data.tableR 의 패키지는 특히 대규모 데이터 세트에 대한 효율적인 작업을 위해 고안되었으며 분산 처리에 정밀하게 연결됩니다.
밝은 별

3
데이터 검색 및 문자열 구문 분석에서 Python이 R보다 낫다고 생각하면 전체적으로 R을 잘못 사용하고 있습니다. 을 위해 동일은 보유 "R는 대용량 데이터 세트에 대한 좋지 않아 아주 잘 (대부분의 라이브러리를 지원하지 않습니다) 스파 스 데이터 세트를 처리하지 않습니다" .
gented

3
Trevor의 부스트 추가 data.table; rvestbeautifulsoup
MichaelChirico

21

두 언어를 모두 사용하는 사람으로서 데이터 과학 / 통계 / 데이터 분석 등을 위해 두 언어가 사용되는 요점에 닿는 답을 공식화하려고합니다.

데이터 분석의 워크 플로는 일반적으로 다음 단계로 구성됩니다.

  1. 일종의 소스 (SQL / noSQL 데이터베이스 또는 .csv 파일)에서 데이터를 가져옵니다.
  2. 작업을 수행하고 그에 대해 생각할 수 있도록 적절하고 합리적인 형식 (데이터 프레임)으로 데이터를 구문 분석합니다.
  3. 데이터에 일부 기능 적용 (그룹화, 삭제, 병합, 이름 바꾸기)
  4. 데이터에 일종의 모델 적용 (회귀, 클러스터링, 신경망 또는 기타 다소 복잡한 이론).
  5. 더 많은 또는 적은 기술 청중에게 결과를 배포 / 제시합니다.

데이터를 가져 오는 중

시간의 99 %가 데이터를 가져 오는 과정은 SQL 또는 임팔라 데이터베이스의 일종을 조회까지 제공 : 모두 파이썬R은 동일하게 (시간에 일을 특정 클라이언트 또는 라이브러리가 RImpala, RmySQLR과 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,

파이썬SciPyand 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 코드를 쉽게 실행할 수 있습니다.


8
+6, 상세하고 정확하며 균형 잡힌 답변입니다.
gung-Monica Monica 복원

여기에 +1 최고의 답변입니다. 재밌습니다. (직접 경로는 아니지만) Java에서 R에 왔으며 꽤 좋아했습니다. R에서 루프를 수행한다고해서 잘못하고 있다고 생각할 필요는 없습니다. 때로는 루프를 사용하여 우회하려고 머리를 긁는 것을 발견했지만 이전 행의 조건을 기반으로 데이터 세트에 새 변수 값을 작성하고 보조 데이터 세트에서 데이터를 가져 오는 등의 방법을 찾을 수 없었습니다.
Yuval Spiegler

통계적으로 컴퓨팅을 수행하는 방법을 아는 사람들이 신뢰할 수 있고 강력한 수치 수학 소프트웨어를 작성하거나 수치 분석을 알고있는 등의 사람들이이 R 패키지의 과다한 것만을 모두 쓴다면 R 패키지 중 일부는 매우 좋습니다. 유명한 저자가 작성한 일부 패키지조차도 매우 많은 수의 R 패키지가 전체 가비지이며 많은 사용자가 가비지를 받고 있다는 사실조차 모르고 있습니다. 오, 그것은 CRAN에 있으며, 적어도 정확하거나 신뢰할 수 있어야합니다 ... WRONG !!!!!
Mark L. Stone

"R은 오늘날 현재 사용자가 1 ~ 2 줄의 코드로 원하는 것을 수행 할 수있는 탁월한 라이브러리 세트를 보유하고 있습니다." 정답을 얻는 것이 사용자가 원하는 것 중 하나가 아니라면 100 %에 동의합니다.
Mark L. Stone

8
@ MarkL.Stone 유명한 사용자가 작성한 표준 패키지의 예를 제시하여 잘못된 결과를 낼 수 있습니까?
gented

15
  • 파이썬은 일반적인 프로그래밍 언어이므로 데이터 분석 외에도 많은 다른 작업을 수행하는 데 좋습니다. 예를 들어, 프로덕션 서버에서 모델 실행을 자동화하려면 python이 정말 좋습니다. 다른 예에는 하드웨어 / 센서에 연결하여 데이터를 읽고, 데이터베이스 (JSON과 같은 관계형 또는 비 구조적 데이터)와 상호 작용, 데이터 구문 분석, 네트워크 프로그래밍 (TCP / IP), 그래픽 사용자 인터페이스, 셸과 상호 작용 등이 있습니다. 왜 데이터 과학자가 예측 모델과 관련이없는 이러한 많은 종류의 작업을 원할까요? 사람들은 다른 정의를 가지고 있다고 생각 합니다. 데이터 과학자 란 무엇입니까?일부 조직에서는 데이터를 구문 분석하고 대시 보드를 사용하여 설명 분석을 수행하는 것이 비즈니스에 적합하고 예측 모델을 수행하기에 충분히 성숙하지 않습니다. 반면에, 많은 소규모 회사에서 사람들은 데이터 과학자들이 많은 소프트웨어 엔지니어링을 수행 할 것으로 기대할 수 있습니다. 파이썬을 아는 것은 다른 소프트웨어 엔지니어와 독립하게 만듭니다.)

  • R에는 파이썬이나 MATLAB보다 훨씬 나은 통계 패키지가 많이 있습니다. R을 사용하면 구현 세부 수준 대신 모델 수준에서 실제로 생각할 수 있습니다. 이것은 통계 모델을 개발할 때 큰 이점입니다. 예를 들어, 많은 사람들이 파이썬에서 신경망을 수동으로 구현하고 있습니다. 이러한 작업을 수행하면 신경망이 작동하는 이유를 이해하는 데 도움이되지 않고 다른 사람의 작업을 복제하여 작동하는지 확인하기 위해 레시피를 따르십시오. R에서 작업하는 경우 구현 세부 정보 대신 모델 뒤의 수학에 쉽게 집중할 수 있습니다.

많은 경우 사람들이 함께 사용합니다. 파이썬에서는 빌딩 소프트웨어를 작성하기 쉽고 R에서는 빌딩 모델을 사용하는 것이 좋습니다. 종이가 아닌 프로덕션 환경에서 모델을 제공하려면 둘 다 필요할 수 있습니다. 회사에 소프트웨어 엔지니어가 많으면 R이 더 필요할 수 있습니다. 회사에 연구원이 많으면 더 많은 Python이 필요할 수 있습니다.


2
멋진 대답은하지만 당신은 나에게 좋은 웃음을 주셨 는가 대신 'JSON'의 '제이슨'을 썼다
의 파

통계 나 "기계 학습"커뮤니티의 멤버는 아니지만 고급 패키지의 가용성은 커뮤니티마다 다릅니다. 나는 많은 새로운 최신 통계 기술이 R 코드와 함께 제공된다고 믿을 수 있습니다. 그러나 ( "고수준") 코드와 함께 제공되는 컴퓨터 비전 / 머신 러닝 / 신경망 논문을 보면 ... Matlab 또는 python 인 것 같습니다.
GeoMatt22

1
언어가 생각하는 방식에 어떤 영향을 미치는지에 대해 +1 R의 큰 장점은 통계학자가 통계학자를 위해 만들어 졌기 때문에 모델링 측면에서 사고를 장려하는 방법입니다. 공개 : 나는 R에 유창하지만 파이썬에서만 쓸모가 있습니다.
애쉬

음 ... scikit-learn어때요? scikit-learn.org/stable
군함

10

모든 줄무늬를 가진 프로그래머들은 언어 선택이 얼마나 문화적 인지를 과소 평가합니다 . Node.js와 같은 웹 개발자 과학자들은 파이썬을 좋아합니다. Javascript의 유동성과 Java의 강성을 모두 처리 할 수있는 폴리 글 로트 소프트웨어 엔지니어로서, 이러한 언어가 서로의 작업에 나쁜 본질적인 이유가 아니라 엄청난 양의 패키지, 문서, 커뮤니티, 서적, 등을 둘러싼.

본질적인 이유로 하나의 임의의 언어가 다른 언어보다 낫습니다.이 답변에 대한 다음 의견을 참조하십시오.

필자의 개인적 예측은 파이썬이 미래의 길이라고 생각합니다. R은 R이 할 수있는 모든 것을 할 수 있기 때문에 R이 할 수있는 모든 것을 할 수 있습니다. R이 할 수있는 모든 것을 할 수 있고 훨씬 더 나은 소프트웨어 엔지니어링 언어입니다. 소프트웨어 엔지니어링은 다음을 다루는 학문입니다.

  • 프로덕션에 적용 할 수있을 정도로 코드의 신뢰성을 신뢰합니다 (따라서 실시간으로 사용자에게 서비스를 제공하는 모든 머신 러닝 모델)
  • 코드가 수정 및 재사용되는 동안 코드가 계속 작동 할 수 있도록 보장 (예 : 단위 테스트 프레임 워크)
  • 최소 6 개월 만에 가독성, 타인 및 자신의 이익을위한 초점
  • 버전 관리, 이전 작업 버전으로의 백 아웃 및 여러 당사자의 동시 개발을 위해 코드 구성에 중점을 둡니다.
  • 더 나은 문서로 도구와 기술을 선호하고, 올바르게 사용하지 않으면 전혀 작동하지 않는 속성을 이상적으로 선호합니다 (이것은 Matlab과의 가장 큰 그립이었습니다-Google에 질문이 있으며 오히려 끔찍한 포럼을 읽어야합니다 답변 검색)

게다가 솔직히 파이썬은 배우기가 더 쉽습니다.

과학자들과 통계 학자들은 그들이 독립적이고 지체되지 않은 직업이 아니라 훌륭한 소프트웨어 엔지니어링 실무에 대한 이해 관계자라는 것을 알게 될 것입니다. 저의 의견이지만 학문적 취성의 취성을 입증하는 논문이 이것을 뒷받침 할 것입니다.

이 답변은 모두 제 의견입니다. 그러나 당신은 매우 의견이 많은 질문을했으며, 지금까지는 잘 받아 들여 졌기 때문에, 당신은 소박하고 합리적으로 정보를 얻은 (나는 희망합니다!) 의견을받을 자격이 있다고 느꼈습니다. 전반적으로 R에 대한 Python에 대한 심각한 논쟁이 있으며 현실 자체가 당파 일 수있을 때 비 당파적인 답변을 게시하려고 시도하지 않을 것입니다.


줄리아가 자라면서 파이썬보다 더 나은 대안이 아닐까요?
kjetil b halvorsen

1
@kjetilbhalvorsen "성장할 때"는 "만약"일 뿐이며, 확립 된 언어를 대체하기가 매우 어렵고, 절대로 채택되지 않을 위험에 처해있는 프론티어 기술을 원하는지 여부는 기본적으로 개인적인 선택입니다. IMO, 파이썬은 이제 기세가 있습니다. 그래도 Julia에 익숙하지는 않지만 꽤 일반적인 의견입니다.
djechlin

1
첫 번째 글 머리를 제외하고는 파이썬이 다른 네 가지 점에서 본질적으로 우수하다는 것을 알 수 없습니다.
Firebug

4
"파이썬은 R이 할 수있는 모든 것을 할 수있다" 는 거짓이다. "전담 프로그래머가 R이 할 수있는 것 중 충분할 것" 은 세계 어느 곳에서나 가능할 것입니다.
gented

2
@djechlin 완전히 아닙니다. 신뢰성에 대한 귀하의 예는 "실시간으로 사용자에게 서비스를 제공하는 모든 기계 학습 모델"입니다. 파이썬은 R보다 훨씬 쉽게 배포를 지원하기 때문에이 점에서 더 좋습니다. 단위 테스트, 가독성, 구성 및 문서는 본질적인 특성이 아닙니다. 자체 테스트를 구현하고, 코드를 더 쉽게 읽고, 구성하고, R 문서를 이해하기 쉽습니다.
Firebug

8

저는 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의 큰 단점은 도메인을 떠나기가 어렵다는 것입니다. 지속 가능한 방식으로 결과를 구현하려고 시도하면 기본적으로 수행해야합니다.


4

프로그래밍 언어가 아닌 통계 도구로 R을 살펴보면 정말 좋습니다. Stata 나 SPSS보다 훨씬 융통성이 있지만 가능한 모든 것을 할 수 있습니다. 나는 대학에서 Stata를 배웠고 R은 통계 도구에 대한 관점을 이미 가지고 있었고 다른 사람들이 가질 수있는 순수한 프로그래밍 언어 경험이 아니기 때문에 쉽게 볼 수있었습니다.

프로그래머 인 사람들이 R을 배우고 이해하려고 할 때 R에 대한 좌절감이 시작된다고 생각합니다. 그러나 통계적 배경을 통해 R에 오는 사람들에게는 훌륭한 도구입니다.

파이썬은 이미 훌륭한 프로그래머라면 훌륭합니다. 그러나 저는 대학 밖에서 프로그래밍과 통계를 처음 접했을 때 R이 훨씬 나은 선택이었습니다. 그것은 당신의 기술과 관심에 더 잘 맞는 것을 선호합니다.


3

이전 답변 중 일부에 추가 :

내 경험상 R의 dplyr + tidyr, ggplot 및 Rmarkdown을 사용하여 원시 데이터에서 제시 가능한 결과로 얻는 것보다 쉬운 것은 없습니다. 파이썬은 많은 것을 제공하며 점점 더 많이 사용하고 있지만 Hadley의 패키지가 서로 묶이는 방식을 좋아합니다.


2

파이썬은 과학 이외의 분야에서 널리 채택되어 있으므로 모든 이점을 활용할 수 있습니다. "An Angry Guide to R"에서 지적한 바와 같이, R은 커뮤니티에 의해 개발되었으며 소프트웨어 개발자는 처음으로 주문해야했습니다.

오늘 R에는 두 가지 주요 장점이 있습니다. 일부는 일부 영역에서 고도로 전문화 된 패키지와 최첨단의 재현 가능한 연구 패키지 편 직기입니다.

파이썬은 다른 모든 것에 더 적합한 것으로 보입니다.

이 스레드의 거의 모든 것과 마찬가지로 이것은 물론 의견입니다. 이 스레드가 여전히 살아 있다는 사실에 놀랐습니다.


2

다른 답변에서 설명했듯이 Python은 훌륭한 범용 프로그래밍 언어이지만 R은 프로그래밍 언어로서 심각한 결함이 있지만 더 많은 데이터 분석 라이브러리 세트가 있습니다. 최근 몇 년 동안 Python은 scikit-learn과 같은 성숙한 데이터 분석 라이브러리의 개발로 R을 따라 잡았습니다. 반면 R은 고정되지 않습니다. 실제로, 나는 거의 모든 것에 Python (실제로 Hy )을 사용하고 Quantile regression (Python의 statsmodels에서 구현이 중단 된 것처럼)과 같은 비교적 난해한 메소드에 대해서만 R로 바꿉니다. 파이썬에서 R을 호출하는 방법에는 여러 가지가 있습니다. PypeR은 Windows 서버와 같은 적대적인 환경에서 작동하기에 충분히 간단합니다.

편집 : 나는 이것에 대해 더 논쟁하고 싶은 사람은이 답변에 대해 언급하는 대신 연결된 에세이의 저자와 이야기하도록 권장합니다.


8
그 arrgh 가이드는 내가 R에 대해 읽은 가장 단서가없는 비판입니다.
Firebug

10
"문서가 엉망이다", 그것은 단서가 아니다. R의 장점은 프로그래머가 아닌 사람에게는 간단하고 방대한 문서입니다. "R의 이름조차 어리석기 때문에 유용한 방법으로 R을 구글로 검색하기가 정말 어렵습니다. 죄송합니다. R에 오신 것을 환영합니다!", 그것은 단서가 없습니다. 가장 모호한 패키지에 대한 문서를 찾는 데 아무런 문제가 없었습니다. "어리석게도 이름 (프레임)으로 할당하여 열 이름을 바꿉니다. 이것이 어떻게 그리고 왜 작동하는지 알고 있습니까? 저를 교육하십시오.", c'mmon, 그는 시도조차하지 않습니다.
Firebug

8
R이 C보다 Google에 어려워요? 구글은 똑똑하다. 프로그래밍 언어 R에 관심이 있다는 것을 알게됩니다. R은 다른 프로그래밍 언어의 배경을 가진 사람들에 의해 대부분 비난을받습니다. 죄송하지만 이러한 언어의 대안으로 개발되지 않았습니다. 통계 전문가를 위해 개발되었습니다. 결과적으로 일부 디자인 결정은 최적이 아니었지만 심각한 결함이 있다고 말하는 것은 약간 강력합니다. 모든 프로그래밍 언어에는 강점과 약점이 있습니다.
Roland

5
패키지를 만드는 것은 실제로 매우 쉽습니다. CRAN에서 시행하는 규칙 (올바로)을 준수하는 경우에만 복잡해집니다. 패키지를 만들면 패키지에서 선택적으로 가져올 수 있습니다. 벡터 재활용은 실제로 장점입니다. 하위 설정 목록과 벡터간에 불일치가 없습니다. 나머지 중 일부는 실제로 결함으로 간주 될 수 있습니다.
Roland

6
R은 명백히 사마귀, 변명 할 수없는 "와트"품종 (stringsAsFactors)을 가지고 있습니다. 그러나 다른 언어는 거리가 멀고 원격이 아닌 통계 라이브러리도 있습니다. 이 라이브러리를 만드는 데 필요한 프로그래밍은 대다수의 사람들이해야 할 것보다 더 심각합니다. 포괄적 인 진술로, "R은 진지한 언어가 아니다"는 단서가없고 절망적 인 교구주의, 문맹, 신 포도 사이에있다. 그리고 저는 이것을 R이 기본적으로 R의 라이브러리를 가진 파이썬이기를 바라는 사람이라고 말합니다.
Paul
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.