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

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

Проголосовало 218 человек. Воздержалось 108 человек.

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

Комментарии (15)


  1. Dreamastiy
    24.07.2015 11:53
    +3

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

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

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

    Голосовать не могу — я за книгу по Питону в ML (по R книг и так много).
    Спасибо за статью.


    1. vladkens
      24.07.2015 14:47

      Есть сборка pythonxy где почти все что нужно из коробки, но под питон 2.7. Впрочем можно теже пакеты руками поставить в третий (если заработают, конечно).


      1. Dreamastiy
        24.07.2015 15:30

        Спасибо, попробую. Все, что использую, вроде, up-to-date в стандартном пакете, кроме OpenCV, но она как раз просто инсталится.


    1. potan
      24.07.2015 17:02
      +1

      Мне тоже R оказалось выучить проще. Особенно если учесть, что естественные в R операции над весторами в Python сделаны в библиотеке, которую тоже надо изучить.
      Читать код на Python мне сложнее, чем хорошо написанный код на R — осмысленные куски кода часто не помещаются на экране, много переменных и время жизни их достаточно велико.
      И синтаксис Python не слишком удобен для интерактивной работы (хотя это компенсируется наличием iPython — аналогичные инструменты есть и для R, но там я мог обходиться стандартным REPLом).


  1. hisbvdis
    24.07.2015 12:55

    Обратите внимание на книги по Django (фреймворк для Python). Русскоязычных актуальных книг нет в принципе.


    1. Skycker
      24.07.2015 16:10
      +1

      У Django отменная документация, большая часть которой переведена на русский язык. В книгах по этому фреймворку нет особой необходимости


      1. hisbvdis
        24.07.2015 21:56

        Самоучитель и документация — это все же разные вещи.
        Просто хотел обратить внимание издательства на этот сегмент.
        Вдруг посчитают нужным восполнить недостачу самоучителей. Ладно, не будем фдудить, чтобы нас «минусовать» не начали.


        1. evocatus
          29.07.2015 00:20

          Есть же туториал от создателей Django


  1. Jarens
    24.07.2015 13:47
    +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


    1. ph_piter Автор
      24.07.2015 14:00

      Спасибо, все постараемся рассмотреть


      1. Jarens
        24.07.2015 14:04

        Не за что. Все эти книги у меня есть и уже изрядно «замусолены» (даже в PDF), поэтому радею тут я не ради себя =). Я учил/читал их примерно в той последовательности, в которой расположил тут и если бы нужно было выбрать для издания только одну, я бы склонился к R in Nutshell, потому что именно на ней чаще всего заканчивались мои базовые вопросы по работе с языком. Дальше — только StackOverflow.


  1. vladkens
    24.07.2015 14:51
    +1

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

    Вот тут не много не так. R-программисты это в основном специалисты по данным, а питон-программисты в большинстве своём веб-разработчики, тестировщики, etc. Уверен что зарплата специалиста по данным одинаковая на обоих языках.


    1. vladkens
      24.07.2015 14:56

      UPD: Не заметил «for high paying skills and experience» на картинке.


  1. RusSuckOFF
    25.07.2015 17:12
    +2

    А почему в списке IDE для Python не указана замечательная PyCharm?


    1. vermus
      28.07.2015 13:09

      На нее наложили санцкии :) (сарказм, если что)