От "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.

Соглашения для преобразования объектов Python в объекты R

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.

  • Базовая диаграмма
https://rpy2.github.io/doc/latest/html/graphics.html#plot

  • Гистограмма
https://rpy2.github.io/doc/latest/html/graphics.html#geometry

Ресурсы

Не помешает ознакомиться с ресурсами для углубленного изучения 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:

Заключение

И R, и Python – надёжные языки, и одного из них на самом деле достаточно для выполнения задачи анализа данных. Тем не менее, у них есть свои плюсы и минусы, и если использовать сильные стороны каждого, получится выполнять работу гораздо лучше. Так или иначе, знание обоих даёт больше гибкости и увеличивает наши шансы работать в различных средах.

Источник

Другие статьи по теме:

А вы приверженец R или Python? Или все-таки хотели бы поработать с двумя языками сразу?

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

admin
11 декабря 2018

ООП на Python: концепции, принципы и примеры реализации

Программирование на Python допускает различные методологии, но в его основе...
admin
14 июля 2017

Пишем свою нейросеть: пошаговое руководство

Отличный гайд про нейросеть от теории к практике. Вы узнаете из каких элеме...