Python и R: что выбрать для Data Science в 2018?

0
6115

Сравниваем языки программирования Python и R для практического применения в Data Science и трудоустройства в этой области в 2018 году.

Python и R

У новичков в Data Science часто возникает вопрос о том, какой язык программирования выбрать основным – специфичный, созданный специально для обработки данных R, или популярный и в других сферах универсальный Python. Оба языка поддерживаются open-source лицензиями (в отличие от коммерческих инструментов SAS и SPSS или проприетарного MATLAB) и традиционно рассматриваются как наиболее востребованные. Стремительное развитие Data Science приводит к быстрой смене позиций фаворитов. В этой статье мы проанализируем тенденции в противостоянии Python и R на начало 2018-го года.

Анализ поисковых запросов Google Trends и данных Kaggle

Как язык программирования общего назначения Python, очевидно, более востребован чем R, и по версии Stack Overflow входит в пятерку наиболее популярных языков программирования. Поэтому сравнивать сами по себе Python и R некорректно – нужно рассматривать их относительно науки о данных. Анализируя статистику Google Trends с января 2012-го года по январь 2018-го по запросам о применении Python и R в Data Science, видно, что в течение последних двух лет интерес к Python стал преобладать и на начало 2018-го года число запросов в два раза превосходит аналогичные обращения, связанные с R.

Сравнение трендов Python и R в области Data Science с 2012 по 2015 годы

При рассмотрении Python и R в том же интервале времени в случае машинного обучения перевес Python еще более очевиден.

Сравнение трендов Python и R в области машинного обучения

По статистике главного двигателя Data Science сообщества kaggle.com вторая половина 2016-го года действительно стала переломной в соревновании Python и R.

Анализ рынка вакансий относительно Python и R в области Data Science

На январь 2018-го года поиск на площадке вакансий indeed.com по всему миру обнаруживает следующие результаты:

  • «Data Scientist» дает 3636 вакансий
  • «Data Scientist» Python дает 2625 вакансий
  • «Data Scientist» R дает 2309 вакансий
  • «Data Scientist» Python R дает 2048 вакансий
  • «Data Scientist» -Python -R дает 750 вакансий

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

Indeed Data Scientist Trends

Преимущества и недостатки Python и R

Рассмотрим преимущества и недостатки Python и R, отмеченные использующими их аналитиками данных.

Преимущества R

  • Язык создавался специально для анализа данных: запись конструкций языка понятна многим специалистам в области.
  • Многие функции, необходимые для анализа данных, являются встроенными функциями языка. Проверка статистических гипотез зачастую занимает лишь несколько строк кода.
  • Установка IDE (RStudio) и необходимых пакетов обработки данных предельно упрощена.
  • Удобный репозиторий пакетов и обилие готовых тестов практически под все методы Data Science и машинного обучения.
  • Эффективная работа с векторами и матрицами.
  • Несколько качественных пакетов для визуализации данных для различных задач (ggplot2, lattice,  ggvis, googleVis, rCharts и т.д.).

Недостатки R

  • Низкая производительность. Однако в системе присутствуют пакеты, позволяющие повысить скорость работы (pqR, renjin, FastR, Riposte и т. д.). При работе с большими массивами данных рекомендуется использовать библиотеки data.table and dplyr.
  • Специфичность в сравнении со стандартными языками программирования, так как язык узкоспециализированный (например, индексация векторов начинается вместо нуля с единицы).
  • Так как большая часть кода на R написана людьми, не знакомыми с программированием, читабельность некоторых программ оставляет желать лучшего. Кроме того, не все пользователи следуют рекомендациям по оформлению программного кода.
  • R прекрасный инструмент для статистики и соответствующих stand-alone приложений, но буксует в тех областях, где традиционно применяются языки общего назначения.
  • Имеется возможность выполнить один и тот же функционал разными способами. Синтаксис для решения некоторых задач не совсем очевиден.
  • В силу большого количества библиотек, документация некоторых менее популярных из них нельзя считать полной.

Преимущества Python

  • Универсальный многоцелевой язык: можно осуществить не только обработку данных, но также их поиск и использование результата обработки в веб-приложении.
  • Python является одним из тех языков, которые отлично подходят на роль первого языка программирования. В случае потери интереса к Data Science приобретенные навыки пригодятся в других прикладных областях — как при использовании самого Python, так и при освоении родственных языков.

Недостатки Python

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

Можно ли совмещать преимущества обоих языков?

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

  • rPython – запуск кода Python из R;
  • RPy2 – запуск кода из R в программах Python 2.x и 3.x версий.

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

Заключение

Оба языка появились в 90-е годы, и уже успели нарастить мощные экосистемы пользователей. Как пример, у обоих сообществ множество активных членов на Stack Overflow (Python, R). Если вначале R использовался только в академической среде, то с ростом интереса к Data Science он пришел и в коммерческие области применения. Однако за последние годы Python обзавелся множеством инструментов для анализа данных, сумевших обеспечить необходимую конкуренцию. Так как во многих образовательных учреждениях Python занимает крепкие позиции первого языка для обучения программированию, вход многих новичков в Data Science со стороны этого языка становится проще, чем дополнительное изучение основ R. Возможность использования Python для быстрого встраивания анализа данных в веб-приложения делает Python еще более интересным для изучения.

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

Другие материалы по теме: