R против Python: действительно ли это великая дискуссия в области науки о данных?

Предупреждение о спойлере: нет, это не так.

R vs. Python - один из самых громких заголовков в публикациях по науке о данных, который, как правило, привлекает пылкие комментарии от множества откровенных людей из того или иного лагеря. В отрасли мы все встречали более опытных специалистов по аналитике и бизнес-аналитике, которые «… не используют« открытый исходный код », например R или Python, потому чтовставьте сюда слабый аргумент ›… »и клянусь, что единственный способ практиковать аналитику - это большой управляемый корпоративный сервер от Microsoft, SAP, SAS и т. Д.

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

R, Python, Matlab, Julia, Scala, Java, C ++ и другие имеют огромное количество поклонников в науке о данных. Это не единственные языки, с помощью которых вы можете анализировать и визуализировать данные или создавать нейронную сеть, но они стали ведущими языками, потому что их можно использовать бесплатно. Если язык нельзя использовать бесплатно, его, вероятно, не будут использовать для обучения программированию.

Как показали Python и R, людям нравится придерживаться того языка, на котором их учили, и они будут наращивать то, чего не хватает, чтобы им не приходилось переключаться на что-то еще. Есть сетевой эффект, который случается и с языками, которые можно использовать бесплатно; сообщества пользователей собираются вокруг них и развивают язык. Благодаря все большему количеству контента на Github и появлению MOOC эти языки стали более доступными, чем когда-либо.

Давайте посмотрим на Python. Python был создан в 1995 году, и, хотя он всегда был популярен среди многих в научном сообществе, он действительно стал огромным хитом в мире данных после того, как появились такие пакеты, как pandas и numpy. из. Это было не так давно; numpy был опубликован в 2006 году, а pandas - в 2009 году. Это всегда был отличный язык (и первый язык, который я выучил), но теперь это один из двух наиболее востребованных языков для тех, кто нанимает специалистов по данным, аналитиков, архитекторов или машин. обучение инженеров.

Давайте на минутку сравним это с SAS. Он коммерчески доступен и постоянно развивается с 1976 года. Согласно недавнему опросу KD Nuggets, его пользовательская база была вдвое меньше, чем у Python. У него хорошее сообщество пользователей, и его поддерживает великая компания, но огромные темпы роста языков с открытым исходным кодом затмили его.

Мне очень приятно видеть R наверху, но я также знаю Python, SQL, SAS и немного Matlab. За исключением SQL (который является скорее дополнением, чем альтернативой этим другим языкам), я не понаслышке знаю, что каждый язык исключительно хорошо справляется со своими задачами, и все они имеют много общего. Например, независимо от того, какой язык вы используете, вы, вероятно, используете его для выполнения некоторой разновидности SQL для извлечения ваших данных и, возможно, для начального спора.

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

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

Почему? Ну, потому что у них обоих впереди очень долгая жизнь, и они намного больше похожи, чем вы думаете. Например, в Python, когда вы визуализируете данные, вы, вероятно, будете использовать ggplot2, Plotly, Highcharts или что-то подобное. В R, угадайте, что? Вы, вероятно, использовали бы те же самые пакеты, и API (синтаксис для их использования) работают почти одинаково как в R, так и в Python.

Многие из наиболее распространенных пакетов на обоих языках на самом деле являются API-интерфейсами для другого языка, отличного от Python или R. Plotly в R или Python, например, представляет собой фреймворк поверх фреймворка поверх другого фреймворка: R или Python поверх D3, поверх Javascript, SVG и HTML.

То же самое относится ко многим пакетам машинного обучения. Tensorflow - чрезвычайно популярный фреймворк Python для нейронных сетей. Однако вычисления Tensorflow на самом деле не выполняются в Python. Они происходят в C ++, а то, что вы делаете в Python, - это использование API для взаимодействия с C ++, языком низкого уровня, с Python, языком высокого уровня. Поднимитесь на уровень выше, и вы увидите еще один пакет под названием Keras, фреймворк для нейронных сетей, который упрощает построение и обучение нейронных сетей с помощью небольшой части кода. В качестве серверной части он использует либо Tensorflow, либо Theano (другой фреймворк).

И теперь, благодаря замечательной команде RStudio, и Tensorflow, и Keras также доступны в R. Игровое поле для машинного обучения остается неизменным.

R очень ориентирован на данные, и все в языке ориентировано на обработку данных и вычисления, поэтому базовая функциональность и все пакеты очень хорошо сочетаются. Чтобы помочь ему с такими вещами, как создание приложений для обработки данных и совместное использование интерактивных визуализаций и отчетов в реальном времени, у вас есть такие вещи, как RMarkdown, Shiny и несколько других инструментов R. Я очень рад появлению новой среды Dasher от Plotly.

Python особенно хорош в определенных вещах, таких как создание специализированных приложений, управляемых данными, потому что он также является сильным языком программирования общего назначения. Фактически, ряд популярных приложений, таких как Youtube и большая часть игр серии Civilization, были написаны на Python. Также существуют веб-серверы, такие как Django и Flask, написанные на Python. Вы можете использовать их для создания с нуля развертываемых веб-интерфейсов, которые запускают код Python на серверной части, если вы готовы к этому. Что касается готовых инструментов для обмена данными, у Python есть Jupyter и другие блокноты iPython, Dash, Bokeh Plots и другие инструменты.

Мое предложение начинающим специалистам по данным и аналитикам? Они оба являются отличным выбором и позволят вам сделать все, что нужно первоклассному эксперту по данным, так что просто выберите один. Затем, когда вы станете профессионалом, изучите хотя бы основы другого. Вы обнаружите, что перекрытия огромны.

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

Итак, выбирайте фаворита, но не впадайте в «лагерный» менталитет.