Читайте нас в телеграм:

Верстальщик от бога

Самый большой канал по верстке в телеграм

Программист от бога

Божественный юмор о программистах

Тестировщик от бога

Божественный канал о тестировании

АйТи собес

Логический задачи с айтишных собеседований

Выбираем язык для обработки данных: R и Python

Эти языки — самые популярные в обработке данных, их анализе и представлении (все это объединяется в Data Science, DS, далее просто «обработка данных).

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

R и обработка данных

Язык R, состоянием на 2021, заметен и популярен в мире Data Science. В рейтинге TIOBE мая 2021, язык R на 13-м месте среди всех языков программирования (при этом Python — второй).

Язык был представлен публике в 1993 г, создатели — Росс Ихака (статистик и математик из Новой Зеландии), и некий джентльмен по имени Роберт Джентльмен (статистик из Канады). С того времени язык прошел весьма извилистый путь, но все-таки завоевал популярность за свою приспособленность к анализу данных, за удобство визуализации и отображения статистики.

В отличие от Python, R создавался именно как средство анализа крупных массивов данных. А также для написания приложений и решений, приспособленных к статистическому анализу и как оказалось в Десятых, дата-майнингу. Это более-менее полная экосистема для обработки статистических и научных данных, с обильным множеством пакетов и библиотек.

Python

Язык в мировом топе языков программирования, уже на равных соперничает с Java, после 20-летнего «полу-существования» — популярность выросла именно в последние годы. Представлен «причастной публике» примерно в то же время, что и R, в 1991 г. Согласно 20-му изданию книги «Developer Economics: State of the Developer Nation«, Python является самым применяемым языком в Big Data.

По данным, цитируемым порталом SlashData, рост объемов анализа и обработки огромных массивов данных привел к тому, что 70% программистов в сфере машинного обучения знают и применяют Python. Именно растущий спрос на обработку «больших данных» вдохнул второе дыхание в очень нишевый до того времени Python.

Естественно, применение Python не ограничивается этим. Его мульти-парадигмальность и гибкость подразумевает и широчайший, впечатляющий набор библиотек и инструментов для облегчения процесса разработки. В целом, как язык общего назначения (и плюс библиотеки), он очень подходит для всего — в этой индустрии.

Важные отличия между R и Python

Предназначение

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

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

А Python есть язык намного более общего предназначения, с заметным акцентом на удобство написания кода, обслуживания, и развертывания. Хотя Python требует больше скиллов программирования чем R, он реально легкий в изучении, из-за своего легко читаемого синтаксиса.

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

Сбор данных

Python более гибкий, чем R, когда нужно собрать какие-то данные (пресловутый «grab»). С одной стороны, Python поддерживает все форматы (начиная с самых распространенных CSV и JSON). Очень легко собрать данные через библиотеку Requests. Также можно легко импортировать SQL-таблицы в код.

А язык R импортирует из CSV, Excel и текстовых файлов. R не такой «прямолинейный» и простой как Python, когда нужно собрать данные из интернета, но можно посмотреть на пакет Rvest с какими-то базовыми функциями. Далее можно конвертировать файлы SPSS и Minitab в дата-фреймы R.

Визуализация данных

Как уже сказано, R имеет неплохие возможности визуализации. Он выводит статистический анализ в виде графиков, рисунков и графов. Если нужно еще более качественное отображение, можно посмотреть на ggplot2 — один из неплохих пакетов. Этим пакетом можно нарисовать практически любой граф, а кроме того можно менять части в нем с высокой степенью абстракции.

Python не так силен в визуализации как R. Но всегда можно включить в проект библиотеку Maplotlib, и рисовать интерактивные диаграммы (гистограммы, точковые и 3D-диаграммы и пр.)

Манипуляции с данными

Есть несколько библиотек для этого в R. Для сбора данных применяется специальный тип «integrated data frame type«, или dplyr (библиотека, часть пакета Tidyverse). Можно задействовать библиотеку tidyr (часть того же пакета). Обе библиотеки проверенные и надежные.

А в Python есть библиотека Pandas, с некоторыми функциями для обработки данных. Это популярный инструмент с открытым кодом, давно известный по своим возможностям анализа и структурирования.

Исследование данных

Pandas в Python — хороший инструмент исследования данных, фактически основной инструмент для этого. Pandas умеет фильтровать, сортировать и выводить данные. Есть возможности качественной статистической обработки, и дата-майнинга.

В R есть набор опций для исследования данных и дата-майнинга. Можно проводить базовый анализ (кластеринг и анализ вероятностных распределений), не прибегая к установке дополнительных пакетов. Есть готовые статистические тесты и формулы.

Моделирование

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

SciPy для научных вычислений
NumPy для цифрового моделирования
SciKit-learn для машинного обучения

Язык R полагается на внешние пакеты (тот же Tidyverse) для тонкой работы. При этом в базовый пакет R (Base-R) включены инструменты моделирования.

Что с редакторами

Редактор кода, то есть оболочка с функциями удобного писания, тестирования и отладки кода, плюс автозавершение, плюс подсветка и прочие приятные фичи — так мы понимаем IDE в 2021.

Для Python есть специально заточенные IDE-редакторы, самые популярные, это конечно PyCharm, далее Jupiter и Spider.

С R можно работать также в Jupiter’е, однако самый популярный у разработчиков редактор — RStudio. В нем можно работать как в веб-версии RStudio Server (то есть, в браузере, удаленно), так и в обычной, десктопной версии.

Искусственный интелект и машинное обучение

Оба языка поддерживают библиотеки машинного обучения, те же PyTorch и TensorFlow. Эти библиотеки применяются в написании так называемых deep-learning-моделей, со специальным фокусом на нейросетях.

Большая часть «фич» и библиотек того, что называем искусственным интеллектом, всегда писались на Python, и только потом при необходимости адаптировались под R. Сейчас оба языка полностью совместимы с TensorFlow и Keras (это третья популярная библиотека для AI). В сентябре прошлого года Torch наконец приспособили для R, в пакет входят: torch, torchvision, torchaudio, и другие расширения.

Коротко

ЯзыкRPython
Предназначен дляСтатистический анализ и визуализация данныхЯзык общего назначения с прицелом на легкость написания и развертывания
Сбор данныхИмпорт файлов из SCV, Excel и текстовых файлов; для базового сбора веб-данных — пакет Rvest; можно конвертировать файлы SPSS и Minitab.Поддерживает все возможные форматы данных; удобно собирать веб-данные библиотекой Requests; можно импортировать SQL-таблицы в код на Python.
ВизуализацияВизуализирует статистический анализ на диаграммах, графах и графиках. Для более продвинутых «ученых нужд» есть ggplots2.Есть библиотека Maplotlib.
Обработка данныхЕсть библиотеки dplyr и tidyr.Есть обширная библиотека Pandas.
Исследование данныхВ R доступен анализ данных (кластеринг и анализ распределения вероятностей) без подключения внешних пакетов.Pandas — главная библиотека для анализа данных. Удобно фильтровать, сортировать и отображать данные. Таким образом, эффективная статистика и дата-майнинг на дата-сетах.
МоделированиеДля моделирования сложных систем подключаются внешние пакеты (тот же Tidyverse).Несколько удобных библиотек: SciKit-learn, SciPy, NumPy.
IDE-редакторыЧаще всего пишут в RStudio.Есть несколько удобных IDE: Jupiter, Spyder, и лучший — PyCharm.
Искусственный интеллектВ этой сфере не применяется так широко как Python, но поддерживает TensorFlow, Torch и Keras.Основной язык для анализа данных из интернета и для машинного обучения.

Итак, что учить?

Благодаря простому синтаксису, Python является весьма удобным, легко усваиваемым языком. Он выигрывает в простоте и читабельности, «кривая обучения» не очень крутая. При своей простоте, это весьма мощный язык. В целом, очень подходит для новичков.

Язык R более легкий для тех, у кого вообще нет навыков программирования. R позволяет делать анализ данных «на месте»; однако, все может быть неудобно, если нужны более «продвинутые анализы». R широко используется аналитиками и учеными (биологи, физики, инженеры, менеджеры), которым нужно быстро, на лету проанализировать данные, или сделать наглядные иллюстрации своих экспериментов.

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

Итоги

R имеет преимущество в обработке собранной статистики, дает множество функций анализа данных. Это язык для продвинутой аналитики в Data Science и некоторых смежных сферах (биология, менеджмент, физика). Программирование на R почти не требует специальных навыков в ИТ, что делает R удобным для ученых. Второй плюс — преимущество в визуализации.

Преимущество Python в Data Science — удобство написания и развертывания. Python превосходен в анализе массивов данных, собранных в интернете. Python лучше подходит для машинного обучения, а особенно для так называемых Data Science Pipelines, работающих в бизнесе.

Читайте также

Обсуждение

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь

читайте нас в телеграм

Верстальщик от бога

Самый большой канал по верстке в телеграм

Программист от бога

Божественный юмор о программистах

Тестировщик от бога

Божественный канал о тестировании

АйТи собес

Логические задачи на собеседованиях в IT

Фронтендер от бога

Божественный канал о тестировании

Mobile Dev Lib

Популярное

10 опенсорсных инструментов в помощь разработчику

Так как людей в ИТ все еще не хватает, и не только в США, нагрузка на одного разработчика остается большой. Невозможные дедлайны, задачи по продуктивности не учитывающие наличие лишь 24 часов в сутках, и при этом они хотят, чтобы ни одного бага. Что поможет разработчику в этой потогонке? Опыт говорит, что помогут хорошие инструменты.

Как войти в Java в 2021 году

Советы преподавателя как войти в Java в 2021 году. Что почитать по Java, как найти галеру, книжки по Java, competitive programming

Выбираем между React и Angular

Разбираемся, что лучше использовать в современной фронтенд-разработке.