В последние годы я наблюдал эволюцию использования обоих этих языков в мире аналитики данных. Вот мои мысли.

До сих пор я всегда избегал участия в драке тех, кто заинтересован в битве R против Python. Но недавно мой коллега по компьютерным данным Брайан Джулиус спросил мое мнение о дебатах между Python и R в своем посте на LinkedIn:



Пытался ответить в комментарии к посту, но текст получился слишком длинным 🙂 Поэтому решил вместо этого написать пост.

Мои мысли о Python и R

В последние годы я смог наблюдать эволюцию использования обоих этих языков в мире аналитики данных. Итак, я пришел к следующим личным выводам:

✔ Язык R намного проще для интерактивного анализа данных и исследования данных, особенно для аналитиков или тех, кто пришел из мира бизнес-аналитики, где господствует SQL. Преобразование данных с помощью R очень напоминает умственный процесс, выполняемый теми, кто использует SQL, с тем преимуществом, что они могут использовать специальные функции, которые упрощают сложные преобразования (например, сводные данные) или применяют статистические операции, полезные для анализа. .
Подход, используемый Python для преобразования данных, больше связан с опытом программиста. Необходимость обязательно прибегать к лямбда-выражениям, например, для довольно простых задач манипулирования данными, дезориентирует любого аналитика, привыкшего к подходу, основанному на множествах (это правильный способ мышления при работе с данными!) и заставляет нас понять, что те, кто разработал пакеты Python, необходимые для обработки данных, были в первую очередь разработчиками, а не аналитиками.

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

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

✔ Что касается профессиональных информационных панелей, наиболее широко используемые платформы эволюционировали и допускают использование обоих языков. Например, и Plotly Dash, и Shiny позволяют разрабатывать приложения данных корпоративного уровня на Python и R. Для тех, кто связан с миром платформы данных Microsoft, Power BI также позволяет использовать оба языка.

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

✔ С точки зрения инженерии данных явным победителем, безусловно, является Python. Во-первых, Python — один из немногих языков, поддерживаемых всеми API, которые позволяют взаимодействовать с сервисами данных всех основных облачных провайдеров (Azure, AWS, Google). Более того, необходимость интегрировать использование разнородных данных в производственную архитектуру в облаке подталкивает к использованию контейнеров Docker, которые облегчают жизнь тем, кому приходится все это проектировать. Одним из языков, используемых для взаимодействия с Docker, является Python (R среди них нет).

✔ Из-за того, что вся часть обработки данных обрабатывается на Python, часто бывает удобно разрабатывать модели машинного обучения всегда с использованием Python (вы также можете разрабатывать их на R). Таким образом, их легко запускать в производство с помощью специальных конвейеров, разработанных в Python. Это правда, что можно интегрировать определенные шаги в конвейеры Python, которые вызывают скрипты R, но часто иметь все на Python более удобно и обслуживается группой инженеров данных, имеющих опыт работы с Python.

✔ Платформы больших данных, в настоящее время в основном основанные на Spark, позволяют разрабатывать конвейеры преобразования данных или машинного обучения в PySpark, API Python, специально разработанном для Spark. Также возможно взаимодействовать со Spark через язык SparkR (R API для Spark). Проблема в том, что SparkR не всегда реализован на этих платформах «из коробки». Более того, SparkR не реализует интеграцию dplyr (основной пакет, используемый для преобразования данных в R) со Spark, вместо этого это делает sparklyr. Но вышеупомянутые платформы данных часто не поддерживают sparklyr изначально. Таким образом, PySpark, наряду с SparkSQL (SQL API для Spark), широко используется в качестве окончательного «языка больших данных».

✔ Python — необходимый выбор, когда вам нужно заняться проектами, требующими решений Deep Learning (компьютерное зрение, автоматическое распознавание разговорной речи, обработка естественного языка, распознавание звука с использованием фреймворков TensorFlow, Keras и PyTorch). Неявно мы заявляем, что весь мир искусственного интеллекта в значительной степени основан на Python.

Тем не менее, я пытаюсь ответить на вопрос, поставленный в заголовке статьи.

Выводы

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

Поэтому, хотя я сам более свободно владею R, чем Python,

Я настоятельно рекомендую тем, кто хочет заняться темами Data Analytics, посвятить себя в первую очередь изучению Python и тому, как лучше всего использовать наиболее важные пакеты для преобразования данных и машинного обучения (pandas, scikit-learn и т. д.).

Универсальность Python позволяет вам переключаться с одной должности на другую (например, с Data Scientist на Data Engineer или наоборот), если ваши интересы изменятся в течение вашей карьеры.

Это не умаляет того факта, что после того, как вы углубились в Python, изучение R и его пакетов экосистемы Tidyverse, безусловно, является плюсом, который окажется очень полезным во многих случаях. Вы не должны недооценивать то, что сообщество R велико и что многие решения были разработаны в R. Поэтому добавление знания этого языка в свой арсенал является выигрышным выбором. Также потому, что, вопреки тому, что некоторые могут подумать, Python и R больше не являются двумя разделенными мирами. Существуют двуязычные IDE, позволяющие разрабатывать на обоих языках. Одним из примеров является RStudio, как показано в этой статье:



Итак, если вы хотите, вы можете максимально использовать оба языка, разработав одно решение. Вы можете наслаждаться обоими языками! 🙂