От ‘R против Python’ к ‘R и Python’

R and Python

Сосредоточьтесь на навыках, а не на инструментах


Для тех, кто разбирается в Data Science, R и Python — это первые два ЯП, которые приходят на ум. Оба являются отличными инструментами для разработки, однако их часто воспринимают как соперников. При вводе R vs Python в поисковом запросе Google выдает множество статей о преимуществах одного над другим.

Люди разделили область Data Science на лагеря согласно используемому ЯП, а история свидетельствует о том, что лагеря R camp и Python camp не могут жить в гармонии. Члены обоих лагерей искренне верят, что выбрали лучший ЯП в отличие от других. Таким образом, разногласия заключаются не в инструментах, а в людях, которые их используют.


Почему бы не использовать оба?

Немногие члены сообщества Data Science используют как Python, так и R. С другой стороны, многие разработчики, использующие один ЯП, мечтают получить доступ к возможностям его соперника. К примеру, пользователи R хотели бы использовать объектно-ориентированные возможности, как у Python и схожих языков, а некоторые пользователи Python мечтают о целом ряде статистических распределений, доступных в R.

На диаграмме выше отображены результаты исследования Red Monk во второй половине 2018 года. Результаты основаны на популярности языков на Stack Overflow и Github, и можно заметить, что R и Python оцениваются достаточно высоко. Следовательно, нет ни одной явной причины не использовать эти языки в одном проекте. Наша главная цель заключается в улучшении аналитики и получении лучших результатов, независимо от выбора ЯП.


Обзор R и Python

Рассмотрим особенности этих языков, а также их преимущества и недостатки.

Python

С момента релиза в 1991 году Python приобрел невероятную популярность и сегодня он широко используется в обработке данных. Причины такой популярности:

  • Объектно-ориентированный язык общего назначения
  • Большое количество расширений и невероятная поддержка сообщества
  • Простота в понимании и изучении
  • Благодаря таким пакетам, как pandas, numpy и scikit-learn, Python идеально подходит для разработки алгоритмов машинного обучения.

Однако в Python нет специализированных пакетов для статистических расчетов в отличие от R.

R

Первый релиз R состоялся в 1995 году, и с тех пор он стал одним из самых популярных инструментов в data science.

  • Содержит пакеты практически для любого статистического приложения. На данный момент в CRAN насчитывается более чем 10 тыс. пакетов.
  • Оснащен великолепными библиотеками для визуализации, такими как ggplot2.
  • Возможность автономного анализа.

Однако в производительности R отстает от других языков, а также вызывает засорение памяти при работе с большими наборами данных.


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

Можно ли использовать статистические способности R вместе с программными возможностями Python? Раз можно с легкостью внедрить код SQL как в сценарий R, так и в Python, то почему бы не смешать R и Python вместе?

Есть два подхода к использованию Python и R вместе в одном проекте.

R в Python

PypeR — легкий способ получения доступа к R из Python с помощью pipes. PypeR также включен в каталог пакетов Python, предоставляющий более удобный способ установки. PypeR особенно удобен при отсутствии необходимости регулярной передачи данных между Python и R. При запуске R через pipe программа Python становится более гибкой в управлении субпроцессами и памятью, а также с легкостью переносится между популярными платформами операционных систем, включая Windows, GNU Linux и Mac OS.

pyRserve использует Rserve в качестве RPC-соединения через шлюз. С помощью этого подключения переменные из Python можно установить в R, а функции R можно вызвать удаленно.

rpy2 запускает встроенный R в процесс Python. Он создает фреймворк для перевода объектов Python в объекты R, передачи их в функции R и конвертирования выходных данных R обратно в объекты Python. rpy2 используется все чаще, благодаря его активной разработке.

Одно из преимуществ этого подхода заключается в возможности использования пакетов R в Python таких, как ggplot2, tidyr, dplyr. Рассмотрим пример использования ggplot2 для отображения в Python.

  • Basic Plot
  • Geometry

Более подробную информацию можно найти в официальной документации rpy2.


Python в R

Запустить сценарий R в Python можно с помощью одного из следующих способов:

Этот пакет реализует интерфейс для Python через Jython. Он предназначен для того, чтобы другие пакеты могли внедрять код python вместе с R.

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

SnakeCharmR — это современная версия rPython, которая использует ‘jsonlite’ и обладает множеством преимуществ над rPython.

PythonInR значительно упрощает доступ к Python из R, предоставляя функции для взаимодействия с ним.

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

Пакет reticulate предоставляет следующие возможности:

  • Вызов Python из R множеством способов, включая R Markdown, поиск сценариев Python, импорт модулей Python, а также интерактивное использование Python в сессии R.
  • Перевод между объектами R и Python (например, между фреймами данных R и Pandas или между матрицами R и массивами NumPy).
  • Гибкое связывание с различными версиями Python, включая виртуальные окружения и окружения Conda.

Более подробную информацию с примерами и случаями использования можно посмотреть в документации.


Заключение

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


Специально для сайта ITWORLD.UZ. Новость взята с сайта NOP::Nuances of programming