От "R против Python" к "R и Python": два в одном
Привыкли противопоставлять R и Python? Узнайте, как объединить сильные стороны этих языков и использовать их оба в одном проекте.
R или Python? Отбрасываем эти вопросы и обращаем извечный конфликт в сплошные бонусы :)
Фокусируйтесь на навыках, а не на инструментах
Если вы занимаетесь наукой о данных, вам сразу придут в голову два языка программирования: R и Python. Однако вместо того, чтобы рассматривать эти языки как два варианта, чаще всего мы сравниваем их. R и Python – отличные инструменты сами по себе, но часто воспринимаются как конкуренты. Если ввести "R против Python" в Google, то сразу же получим 166 миллионов результатов с обсуждениями превосходства одного над другим.
Причина такого мировоззрения в том, что люди разделили область Data Science на два лагеря на основании языка программирования, который они используют. Одни в лагере R, другие в лагере Python. Как свидетельствует история, лагеря не способны жить в гармонии. Члены обоих лагерей горячо верят в превосходство собственного выбора над выбором конкурентов. Таким образом, в некотором смысле, расхождение связано не с инструментами, а с людьми, использующими эти инструменты.
Почему бы не использовать Оба?
В сообществе 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 отличным выбором для машинного обучения.
Однако, в отличие от R, в Python нет специализированных пакетов для статистических вычислений.
R
Первый выпуск языка программирования R произошёл в 1995 году, и с тех пор он стал одним из наиболее часто используемых инструментов для науки о данных в промышленности.
- Состоит из пакетов, которые удовлетворяют нужды практически любого статистического приложения, о котором только можно подумать.
- В настоящее время CRAN содержит более 10 тысяч пакетов.
- Поставляется с отличными библиотеками визуализации, такими как ggplot2.
- Возможность автономного анализа.
С точки зрения производительности язык R не самый быстрый и может иногда съедать много памяти при работе с большими наборами данных.
Используем лучшее из Обоих миров
Можем ли мы использовать одновременно статистическую мощность R и программирование на Python? Что же, если можно легко встроить код SQL в сценарий R или Python, почему бы не совместить R и Python вместе?
В принципе, чтобы использовать Python и R в одном проекте, применяются два подхода.
R в Python
PypeR предоставляет простой способ доступа к R из Python через pipe. Он также включен в каталог пакетов Python, что упрощает способ установки. Этот пакет в особенности полезен, когда нет необходимости в частых интерактивных передачах данных между Python и R. Благодаря выполнению R через пайп, программа Python приобретает гибкость в управлении подпроцессами и памятью, а также в переносимости между популярными операционными системами, включая Windows, GNU Linux и Mac OS.
pyRserve использует Rserve в качестве шлюза для RPC-соединения. Так переменные устанавливаются в R из Python, а также R-функции вызываются удалённо. В ряде случаев объекты R представляются как экземпляры реализованных на Python классов, а функции R выступают в качестве методов этих объектов.
- rpy2
rpy2 запускает R встроенным в процесс Python. Эта библиотека создаёт структуру, которая преобразовывает объекты Python в объекты R, передаёт их в функции R и преобразовывает выходные данные R обратно в объекты Python. rpy2 используется чаще из-за активного развития.
Одно из преимуществ использования R в Python в том, что можно легко использовать потрясающие пакеты языка R (ggplot2, tidyr, dplyr и другие) в языке Python. Смотрите, как легко использовать ggplot2 для отображения в Python.
- Базовая диаграмма
- Гистограмма
Ресурсы
Не помешает ознакомиться с ресурсами для углубленного изучения rpy2:
- Официальная документация rpy2
- RPy2: объединяем мощность R + Python для Data Science
- Доступ к R из Python с использованием RPy2
Python с R
Для запуска R-скриптов на Python используются такие альтернативы:
Пакет реализует интерфейс доступа к Python через Jython. Он предоставляет возможность другим пакетам встраивать код Python вместе с R.
rPython – ещё один пакет, который позволяет R вызывать Python. Он даёт возможность запускать код Python, выполнять вызовы функций, назначать и извлекать переменные, а также выполнять другие операции из R.
SnakeCharmR – современная переработанная версия rPython. Это ответвление «rPython», которое использует «jsonlite» и имеет много улучшений по сравнению с rPython.
PythonInR упрощает доступ к Python из R, предоставляя функции для взаимодействия с Python из R.
Пакет reticulate предоставляет полный набор инструментов для взаимодействия между Python и R. Он наиболее распространен, в большей степени из-за того, что активно разрабатывается Rstudio. Reticulate встраивает сеанс Python в сеанс R и обеспечивает плавную и высокопроизводительную функциональную совместимость. Пакет позволяет покрыть сеткой кода Python код R, что создаёт новый тип проекта, который сплетает два языка воедино.
Пакет reticulate делает возможными:
- Вызов Python из R различными способами, включая R Markdown, поиск сценариев Python, импорт модулей Python и интерактивное использование Python в сеансе R.
- Трансляцию между объектами R и Python (например, между структурами данных R и Pandas или между матрицами R и массивами NumPy).
- Гибкое связывание с различными версиями Python, включая виртуальные среды и среды Conda.
Ресурсы
Некоторые полезные ресурсы по использованию пакета reticulate:
- Документация понятная и содержит множество примеров и вариантов использования, которые помогут начать работу.
- https://longhowlam.wordpress.com/2017/04/10/test-driving-python-integration-in-r-using-the-reticulate-package/
- ЗМЕИ В ПАКЕТЕ: СОЧЕТАЕМ PYTHON И R С ПОМОЩЬЮ RETICULATE
Заключение
И R, и Python – надёжные языки, и одного из них на самом деле достаточно для выполнения задачи анализа данных. Тем не менее, у них есть свои плюсы и минусы, и если использовать сильные стороны каждого, получится выполнять работу гораздо лучше. Так или иначе, знание обоих даёт больше гибкости и увеличивает наши шансы работать в различных средах.
Другие статьи по теме:
- Как изучать Data Science в 2019: ответы на частые вопросы
- Python для Data Science: 8 понятий, которые важно помнить