Сосредоточьтесь на навыках, а не на инструментах
Для тех, кто разбирается в 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 — эффективные ЯП, и даже одного из них достаточно для выполнения задач по анализу данных. Однако каждый из них обладает как плюсами, так и минусами. Поэтому при совмещении преимуществ каждого, можно получить наилучший результат.
Перевод статьи Parul Pandey: From ‘R vs Python’ to ‘R and Python’