Pull to refresh

R и Python — достойные соперники?

Reading time 7 min
Views 75K
Original author: Martijn Theuwissen


Всем доброй пятницы, дорогие читатели!

В истории компьютерной редакции издательства «Питер» найдется немного столь успешных книг, как "Программируем на Python" Майкла Доусона и не больше таких противоречивых тем, как изумительный язык R, прочно закрепившийся в числе бестселлерных тем «Амазона». В настоящее время мы договариваемся с правообладателями о новой замечательной книге по Python, но в то же время хотели проверить общественное мнение о R — целесообразно ли издавать новые книги об этом элитарном языке для гуру большой статистики, либо Python легко его одолеет, не то что Аполлона?

Добро пожаловать под кат!


Языки Python и R спорят за звание «наилучшего» инструмента для работы с данными, и у обоих соперников есть свои достоинства и недостатки. Выбор того или иного языка зависит от конкретной ситуации, издержек на обучение, а также от того, какие еще распространенные инструменты требуются для решения задачи

Студенты часто интересуются, каким языком – R и/или Python лучше пользоваться при решении повседневных задач, связанных с анализом данных. Я обычно предлагаю интерактивные руководства по R, но уточняю, что в каждом конкретном случае выбор зависит от типа поставленной задачи, данные по которой требуется проанализировать.

Python и R — популярные языки программирования для работы со статистикой. В то время, как язык R разрабатывался с прицелом именно на потребности статистиков (вспомните только, какими мощными возможностями визуализации данных обладает R!), Python славен своим понятным синтаксисом.

В этой статье будут рассмотрены важнейшие отличия между языками R и Python, а также рассказано, какое место они оба занимают в мире изучения данных и статистики. Если вы предпочитаете инфографику, посмотрите разработку ”Data Science Wars: R vs Python”.

Знакомство с R

Росс Айхэка и Роберт Джентлмэн создали свободный язык R в 1995 году как свободную реализацию языка программирования S. Они стремились разработать язык, который обеспечивал бы более качественный и понятный подход к анализу данных, статистике и графическим моделям. На первых порах R использовался преимущественно в академической и научно-исследовательской среде, но сравнительно недавно стал проникать и в мир больших корпораций. Поэтому R — один из наиболее бурно развивающихся статистических языков, используемых в корпоративной практике.

Одно из основных достоинств R — огромное сообщество разработчиков, занимающихся поддержкой языка в почтовых рассылках, службе пользовательской документации и в очень активной группе на Stack Overflow. Также существует CRAN, гигантский репозиторий рекомендованных пакетов R, в разработке которых могут участвовать все желающие. Эти пакеты представляют собой коллекцию функций и данных R, они обеспечивают мгновенный доступ к новейшим приемам и функционалу, избавляя программиста от необходимости все изобретать самостоятельно.

Наконец, если вы – опытный разработчик, то вам, вероятно, не составит труда быстро освоить R. Начинающему программисту, возможно, придется туго, поскольку кривая обучения R очень крутая. К счастью, в настоящее время существует множество отличных учебных ресурсов по R.

Знакомство с Python

Язык Python был создан Гвидо ван Россумом в 1991 году. В этом языке делается акцент на производительности и удобочитаемости кода. Среди программистов, желающих погрузиться в анализ данных и пользоваться статистическими приемами, немало активных пользователей Python, применяющих этот язык именно в статистической сфере. Чем активнее вы углубляетесь в среду технарей, тем больше вам, по всей вероятности, будет нравиться Python. Этот гибкий язык отлично подходит для всего новаторского. Учитывая его простоту и удобочитаемость, кривая обучения для этого языка сравнительно пологая.

Как и в R, в Python есть пакеты. PyPi — это список пакетов Python, в нем содержатся библиотеки, дополнять которые может любой пользователь. Как и R, Python обладает большим сообществом разработчиков, но оно несколько неоднородное, поскольку Python — универсальный язык. Тем не менее, именно наука о данных стремительно занимает все более внушительные позиции во вселенной Python: ожидания растут, одно за другим появляются новые приложения по работе с данными.

R и Python: Общие показатели

В Сети можно встретить массу количественных сравнений распространенности и популярности R и Python. Хотя такие показатели и позволяют уверенно сориентироваться в том, как эти два языка развиваются в общем контексте информатики, сравнить их напрямую нелегко. Основная причина заключается в том, что сфера использования R ограничена наукой о данных. Python, в свою очередь, будучи универсальным языком, широко применятся во многих сферах, например, в веб-разработке. Поэтому рейтинги зачастую искажаются в пользу Python, тогда как зарплаты оказываются существенно выше у специалистов по R.



Когда и как использовать R?

R обычно применяется в тех случаях, когда для анализа данных требуются выделенные вычислительные мощности или отдельные сервера. R отлично подходит для исследовательской работы, удобен практически при любом варианте анализа данных, поскольку в языке R существует масса пакетов и готовые тесты, обеспечивающие нужный инструментарий для быстрого старта. R даже может быть элементом решения в области больших данных.
Приступая к работе с R, целесообразно для начала установить замечательную IDE RStudio. Затем рекомендую ознакомиться со следующими популярными пакетами:

  • dplyr, plyr и data.table, упрощающие манипуляции с пакетами,
  • stringr для работы со строками,
  • zoo для работы с регулярными и иррегулярными временными последовательностями,
  • ggvis, lattice и ggplot2 для визуализации данных и
  • caret для машинного обучения


Когда и как использовать Python?

Python пригодится в случаях, когда задачи, связанные с анализом данных, вплетаются в работу веб-приложений, или если статистический код требуется инкорпорировать в рабочую базу данных. Python, будучи полнофункциональным языком программирования, отлично подходит для реализации алгоритмов с их последующим практическим использованием. Еще недавно пакеты для анализа данных на Python находились в зачаточном состоянии, что представляло определенную проблему, но в последние годы ситуация значительно улучшилась. Обязательно установите NumPy /SciPy (научные вычисления) и pandas (манипуляции с данными), чтобы приспособить Python для анализа данных. Кроме того, обратите внимание на библиотеку matplotlib для создания графики и scikit-learn для машинного обучения.

В отличие от R, для Python не существует ярко выраженной “выигрышной” IDE. Желательно ознакомиться со Spyder, IPython Notebook и Rodeo и выбрать ту, которая лучше всего вам подходит.

R и Python: доли в сегменте науки о данных

Если рассмотреть недавние опросы, связанные с популярностью различных языков, используемых при анализе данных, то зачастую R выглядит явным лидером. Если конкретно сравнить позиции Python и R в этом сообществе, то вырисовывается схожая картина.



Несмотря на вышеприведенную инфографику, есть основания полагать, что все больше специалистов переходят с R на Python. Более того, растет доля тех программистов, которые владеют обоими языками и по мере необходимости используют то один, то другой. Именно такую тактику я рекомендую моим студентам.

Если вы планируете делать карьеру в науке о данных, то вам потребуется освоить оба языка. Тенденции на рынке труда свидетельствуют растущий спрос на оба навыка, а зарплаты в этом сегменте существенно выше средних.

R: Плюсы и минусы

Плюс: Картинка бывает информативнее тысячи слов
Если данные визуализировать, то они зачастую становятся выразительнее и понятнее, чем голые числа. Язык R просто создан для визуализаций. Обязательно ознакомьтесь с пакетами для визуализации ggplot2, ggvis, googleVis и rCharts.

Плюс: экосистема R
R обладает богатой экосистемой ультрасовременных пакетов и располагает активным сообществом. Пакеты доступны в репозиториях CRAN, BioConductor и Github. Все пакеты R можно просмотреть по адресу Rdocumentation.

Плюс: R – лингва-франка науки о данных
Язык R разрабатывался статистиками для статистиков. Они могут обмениваться идеями и концепциями при помощи кода и пакетов R, кроме того, для погружения в эту тему им не обязательно обладать базовыми знаниями по информатике. Кроме того, язык все шире распространяется в неакадемической среде.

Плюс/минус: R — медленный язык
R создавался, чтобы облегчить работу статистикам, а не вашему компьютеру. R может казаться медленным из-за некачественно написанного кода, однако существует множество пакетов, повышающих производительность R: pqR, renjin и FastR, Riposte и многие другие.

Минус: R сложен в изучении
Кривая обучения языку R нетривиальна, особенно если вы беретесь за статистический анализ, опираясь на графический интерфейс. Даже поиск пакетов может занять много времени, если вам это в новинку.

Python: плюсы и минусы

Плюс: IPython Notebook
Инструмент IPython Notebook облегчает работу с Python и данными. Не составит труда использовать такой блокнот вместе с коллегами, причем им даже не придется ничего устанавливать. В таком случае резко снижаются издержки, связанные с организацией кода, файлами вывода и заметок. Вы сможете уделить больше времени полезной работе.

Плюс: универсальный язык
Python – универсальный язык, простой и интуитивно-понятный. Кривая обучения у него сравнительно пологая, на этом языке вы сможете быстрее писать программы. Короче говоря, на код тратится мало времени, а на разные интересности – много!

Более того, в Python встроен фреймворк для тестирования, входной барьер у которого очень низок. Фреймворк обеспечивает хорошее тестовое покрытие. Таким образом, ваш код будет надежен и удобен для многократного использования.

Плюс: многоцелевой язык
Python объединяет людей, начинавших карьеру в разных сферах. Поскольку это простой и распространенный язык, не только понятный многим программистам, но и легкий для специалистов по статистике, на нем можно написать такой инструмент, в котором будут интегрированы все этапы вашего рабочего процесса.

Плюс/Минус: Визуализации
Возможность визуализации – важный критерий при подборе софта для анализа данных. Хотя в Python и есть приятные библиотеки для визуализации, например, Seaborn, Bokeh и Pygal, выбор может быть излишне велик. Более того, по сравнению с R, визуализация на Python устроена гораздо сложнее, а ее результаты порой не слишком наглядны.

Минус: Python играет на чужом поле
Python — конкурент R. Но в нем нет альтернатив для сотен важнейших пакетов R. Пусть Python и успешно догоняет, неясно, будут ли люди ради него отказываться от R?

А победителя...

Определяете вы! Как специалист по данным, вы должны сами подобрать себе язык для работы. Постарайтесь ответить на следующие вопросы:

  1. Какие проблемы вам требуется решать?
  2. Во что вам обойдется изучение нового языка?
  3. Какие инструменты активно используются в вашей профессиональной сфере?
  4. Какие альтернативы существуют для этих инструментов?


Удачи!
Only registered users can participate in poll. Log in, please.
R против Python
62.68% Нужна книга по Python, в которой будет рассмотрены современные специализированные пакеты и инструменты 267
49.53% Нужна книга по R (желательно ссылка в комментарии) 211
27.7% Лучше допечатайте Python Доусона! 118
426 users voted. 189 users abstained.
Tags:
Hubs:
+12
Comments 15
Comments Comments 15

Articles

Information

Website
piter.com
Registered
Founded
Employees
201–500 employees
Location
Россия