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

http://www.kdnuggets.com/2015/05/r-vs-python-data-science.html
  • Перевод


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

В истории компьютерной редакции издательства «Питер» найдется немного столь успешных книг, как "Программируем на 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. Какие альтернативы существуют для этих инструментов?


Удачи!

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

R против Python

Издательский дом «Питер»

238,00

Компания

Поделиться публикацией

Похожие публикации

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

    Мне кажется в Питоне поиск и установка пакетов занимает еще больше времени. Пытался поставить все необходимые ML пакеты, не выдержал, снес обычный Питон и установил дистрибутив от Анаконды. Хотя возможно всему виной моя криворукость.
    В R установка пакетов это одна строка (иногда пара строк). Гуглится практически все по запросу "задача r package"

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

    Голосовать не могу — я за книгу по Питону в ML (по R книг и так много).
    Спасибо за статью.
      0
      Есть сборка pythonxy где почти все что нужно из коробки, но под питон 2.7. Впрочем можно теже пакеты руками поставить в третий (если заработают, конечно).
        0
        Спасибо, попробую. Все, что использую, вроде, up-to-date в стандартном пакете, кроме OpenCV, но она как раз просто инсталится.
        +1
        Мне тоже R оказалось выучить проще. Особенно если учесть, что естественные в R операции над весторами в Python сделаны в библиотеке, которую тоже надо изучить.
        Читать код на Python мне сложнее, чем хорошо написанный код на R — осмысленные куски кода часто не помещаются на экране, много переменных и время жизни их достаточно велико.
        И синтаксис Python не слишком удобен для интерактивной работы (хотя это компенсируется наличием iPython — аналогичные инструменты есть и для R, но там я мог обходиться стандартным REPLом).
        0
        Обратите внимание на книги по Django (фреймворк для Python). Русскоязычных актуальных книг нет в принципе.
          +1
          У Django отменная документация, большая часть которой переведена на русский язык. В книгах по этому фреймворку нет особой необходимости
            0
            Самоучитель и документация — это все же разные вещи.
            Просто хотел обратить внимание издательства на этот сегмент.
            Вдруг посчитают нужным восполнить недостачу самоучителей. Ладно, не будем фдудить, чтобы нас «минусовать» не начали.
              0
              Есть же туториал от создателей Django
          +5
          Сразу скажу, что в данном холиваре я нахожусь на стороне гордых useR'ов, т.к. считаю, что анализ данных (а не программирование) целесообразно изучать и выполнять в языке, который изначально для этих целей создавался, т.е. в R.

          Поэтому если вашей задачей является развитие направления обучающей литературы по теме Data Science (а не по программированию), то целесообразнее издавать книги по R. Тем более, если вы сами считаете, что R сложен в изучении (с чем я, кстати, не согласен). Я навскидку знаю только 2 книги по R на русском языке (одна из них переводная), что опять же свидетельствует в пользу издания книг по данному языку.

          Вот список достойных, на мой взгляд, книг:
          Learning R
          R in a Nutshell
          R Graphics Cookbook
          R Cookbook.
          Practical Data Science with R
            0
            Спасибо, все постараемся рассмотреть
              0
              Не за что. Все эти книги у меня есть и уже изрядно «замусолены» (даже в PDF), поэтому радею тут я не ради себя =). Я учил/читал их примерно в той последовательности, в которой расположил тут и если бы нужно было выбрать для издания только одну, я бы склонился к R in Nutshell, потому что именно на ней чаще всего заканчивались мои базовые вопросы по работе с языком. Дальше — только StackOverflow.
            +1
            Поэтому рейтинги зачастую искажаются в пользу Python, тогда как зарплаты оказываются существенно выше у специалистов по R.

            Вот тут не много не так. R-программисты это в основном специалисты по данным, а питон-программисты в большинстве своём веб-разработчики, тестировщики, etc. Уверен что зарплата специалиста по данным одинаковая на обоих языках.
              0
              UPD: Не заметил «for high paying skills and experience» на картинке.
              +2
              А почему в списке IDE для Python не указана замечательная PyCharm?
                0
                На нее наложили санцкии :) (сарказм, если что)

              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

              Самое читаемое