что выбрать для Data Science начинающему специалисту?
Python и R давно стали стандартом для Data Science. Суть их противостояния в том, что оба языка прекрасно подходят для работы со статистикой. В то время как Python характеризуется понятным синтаксисом и большим количеством библиотек, язык R разрабатывался целенаправленно для специалистов по статистике, а посему оснащён качественной визуализацией данных. Особняком стоит SQL — потому что, если данные уже лежат в таблицах, то это скорее везение, чем повод для расстройств, — и Scala — в основном благодаря тому, что на ней написан популярнейший фреймворк распределённой обработки данных Spark.
Чтобы провести первичный анализ данных и принять решение о дальнейшей судьбе фичи, достаточно средств одного только SQL и командной строки, ведь data science — это, в первую очередь, не про библиотеки с броскими названиями, а про подход. Тем не менее, такой минимализм имеет свой предел (а новичка вообще может отпугнуть), и в какой-то момент всё же придётся обратиться к более продвинутым инструментам исследования.
В этой статье мы вместе со SkillFactory разобрали для вас преимущества и недостатки R и Python в качестве первых языков в карьере data scientist’а. Разработчикам, желающим добавить строчку с полезным навыком в резюме, тоже будет интересно.
Python
Совершенно незаметно подкралось тридцатилетие Python. За свою уже немалую историю Python несколько раз перерождался, теряя обратную совместимость, но всегда оставался популярен как среди разработчиков в общем, так, в частности, и среди data scientist’ов. На это есть несколько причин.
Преимущества Python в Data Science
- Простой, но выразительный синтаксис. Знание английского языка на уровне первых классов школы — это уже победа, потому что азы Python можно считать освоенными. Дальше будет не сильно сложнее. Если же вы уже знакомы, например, с Java, то вы будете приятно удивлены тем, как легко сказать миру «привет».
- Богатый выбор библиотек. И речь не только о библиотеках алгоритмов машинного обучения — на Python разрабатывают облачные хранилища, стриминговые сервисы, и даже игры (хоть в них иногда и приходится обыгрывать тормоза как фичу, а не баг).
- Высокая культура документации. Сам Python прекрасно документирован, и обычно библиотеки на нём продолжают эту традицию.
***
При всём своём великолепии, Python не лишён и минусов. Его часто (и иногда заслуженно) называют медленным, ему всё ещё не хватает удобных средств ORM, а написание действительного крупного проекта на нём — довольно тяжёлый труд, требующий хорошей дисциплины. Но как и с любым другим инструментом, важно просто знать, как им пользоваться. Кстати об инструментах.
Python-инструменты для data scientist
Как уже упоминалось ранее, Python примечателен своим обширным набором библиотек и инструментов. Говоря о data science, нужно в первую очередь упомянуть следующие:
- Pandas — библиотека для манипулирования данными с огромными возможностями. Позволяет очень быстро провести исследование новых данных, протестировать гипотезы, получить отчёт. Одно из главных преимуществ Python.
- Scikit-learn — большая библиотека алгоритмов машинного обучения и обработки данных. Немалую часть соревнований на Kaggle выиграли пользуясь только ей в паре с Pandas.
- Keras и PyTorch — библиотеки, используемые для обучения глубоких нейронных сетей. Подходят для задач, связанных с изображениями, аудио и видео файлами.
- IPython Notebook — рассказывая о Python нельзя не упомянуть о нём. Стандартная среда разработки не совсем подходит data scientist’у в процессе исследования данных. Есть потребность в таком формате, который позволил бы, например, запустить затратный алгоритм, а когда он завершится — поиграть немного с результатами, исследовать их и построить графики. Здесь на помощь и приходит формат ноутбука. Это графический интерфейс, который открывается в обычном браузере и представляет из себя последовательность ячеек, где можно писать и исполнять код, используя при этом общую память для хранения данных.
Кстати, именно Python — основный язык курса «Профессия Data Scientist» от SkillFactory. При этом знать его не обязательно: вы освоите его в процессе обучения на примере реальных задач.
R
В 2020 году язык R остаётся одним из самых популярных для Data Science и статистики, стабильно завоёвывая всё большую долю просмотров в соответствующих разделах StackOverflow. При этом, со значительным перевесом лидируют вопросы академического характера: в первую очередь, R — это язык с богатым набором библиотек по машинному обучению и статистике, что особенно важно в исследовательских целях.
Преимущества R в Data Science
- Богатая ML экосистема, огромное количество библиотек статистических методов. Как уже было замечено ранее, R особенно популярен в академической среде, что и приводит к тому, что часто новые методы впервые имплементируются именно на нём.
- Достаточно удобная проприетарная среда разработки RStudio, с которой будет легко разобраться, если у вас был опыт в MATLAB.
- Необычный синтаксис, заточенный под нужды статистики. Опытный программист со знанием другого языка может испытать трудности акклиматизации, зато пользователи с математическим бэкграундом легко воспримут логику языка.
- Нативная поддержка векторных вычислений. Крутой бонус, который означает, что на R можно программировать достаточно быстрые реализации математических методов, использующих векторные и матричные вычисления.
R-инструменты для data scientist
Поговорим об упомянутых библиотечных богатствах R. Вот некоторые из базовых, но мощных библиотек, вооружившись которыми можно провести обширный рисерч или занять хорошие места в Kaggle:
- Dplyr — «грамматика манипуляций с данными», библиотека с функциональностью, аналогичной Pandas.
- Ggplot2 и Esquisse — мощные библиотеки для рисования графиков.
- Shiny — полезнейшая библиотека для создания веб приложений с интерактивной визуализаций исследований.
- Caret, randomForest, Mlr и т. д. — десятки библиотек с методами машинного обучения. Один из них точно сработает.
Python vs. R в Data Science: что лучше?
Оба языка обладают своими достоинствами и недостатками. Подойти может любой из них, всё зависит от ваших задач.
- Программировали ли вы уже на других языках? Если да, то, возможно вам потребуется некоторое время, чтобы привыкнуть к R. Python гораздо более привычен, за исключением некоторых нюансов.
- Планируете ли вы работать в научной области, или склоняетесь к тому, чтобы быть ближе к практике? Python больше приближен к продакшену и чаще применяется в коммерческих проектах. В то же время, в академических кругах большей популярностью пользуется R.
- Хотите ли вы прокачать кругозор в методах машинного обучения? Или вам достаточно будет ознакомиться с несколькими наиболее популярными методами и больше времени посвятить, например, алгоритмам обработки больших данных? В первом случае вам однозначно нужен R, во втором — больше возможностей вы найдёте в Python.
- Хотите ли вы заниматься внедрением своих разработок, и программировать что-либо кроме предикторов? Если да, то Python вам подойдёт лучше, но скорее всего понадобится и что-то ещё (например Java, Scala или C++).
Если вы пока не знаете ни Python, ни R, но при этом хотите работать в IT, начать вам может помочь курс «Профессия Data Scientist» от SkillFactory. Там вы сможете за 2 года стать middle Data scientist с нуля. Курс ориентирован на практические задачи и его можно совмещать с работой или учёбой.
P.S. По промокоду Tproger2020 до 15.10 действует скидка 50%
От “R против Python” к “R и Python”: два в одном
Привыкли противопоставлять R и Python? Узнайте, как объединить сильные стороны этих языков и использовать их оба в одном проекте.
R или Python? Отбрасываем эти вопросы и обращаем извечный конфликт в сплошные бонусы 🙂
Фокусируйтесь на навыках, а не на инструментах
Если вы занимаетесь наукой о данных, вам сразу придут в голову два языка программирования:
Причина такого мировоззрения в том, что люди разделили область Data Science на два лагеря на основании языка программирования, который они используют. Одни в лагере R, другие в лагере Python. Как свидетельствует история, лагеря не способны жить в гармонии. Члены обоих лагерей горячо верят в превосходство собственного выбора над выбором конкурентов. Таким образом, в некотором смысле, расхождение связано не с инструментами, а с людьми, использующими эти инструменты.
В сообществе Data Science есть люди, которые используют Python и R, но процент таких невелик. С другой же стороны, часто приверженцы только одного языка программирования хотели бы использовать некоторые особенности противоположной стороны.
Например, пользователи R иногда жаждут объектно-ориентированных возможностей, встроенный в язык Python. Аналогично, некоторые пользователи Python мечтают о широком спектре статистических распределений, доступных в языке R.
На приведенном выше рисунке показаны результаты опроса от Red Monk за третий квартал 2018 года. Эти результаты основаны на популярности языков на Stack Overflow, а также на Github. Видно, что рейтинг и 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 в объекты RpyRserve использует Rserve в качестве шлюза для RPC-соединения. Так переменные устанавливаются в R из Python, а также R-функции вызываются удалённо. В ряде случаев объекты R представляются как экземпляры реализованных на Python классов, а функции R выступают в качестве методов этих объектов.
rpy2 запускает R встроенным в процесс Python. Эта библиотека создаёт структуру, которая преобразовывает объекты Python в объекты R, передаёт их в функции R и преобразовывает выходные данные R обратно в объекты Python. rpy2 используется чаще из-за активного развития.
Одно из преимуществ использования R в Python в том, что можно легко использовать потрясающие пакеты языка R (ggplot2, tidyr, dplyr и другие) в языке Python. Смотрите, как легко использовать ggplot2 для отображения в 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:
И R, и Python – надёжные языки, и одного из них на самом деле достаточно для выполнения задачи анализа данных. Тем не менее, у них есть свои плюсы и минусы, и если использовать сильные стороны каждого, получится выполнять работу гораздо лучше. Так или иначе, знание обоих даёт больше гибкости и увеличивает наши шансы работать в различных средах.
Источник
Другие статьи по теме:
А вы приверженец R или Python? Или все-таки хотели бы поработать с двумя языками сразу?
Python vs. R – выбор лучшего языка программирования для науки о данных
Дата публикации Jun 14, 2019
@jonathanrados unsplash.comПосле нескольких лет программирования на Python и R, я все еще борюсь с этим. Какой язык лучше всего использовать для Data Science?Мне нравится думать о себе как о технологе со степенью статистики, который увлекается наукой о данных. Но даже я не могу уклониться от простых в использовании аспектов R. Очарование языка программирования R осталось со мной, даже когда я рискнул в Pandas, Numpy и Scipy. Честно говоря, мощные пакеты Python для машинного обучения меня поражают.Это буквально универсальный магазин.В то же время, буквально у меня уходит меньше 30 минут на простой статистический анализ в R для изучения моего набора данных. Пакеты машинного обучения и глубокого обучения в настоящее время становятся нормой и в R.
Некоторое время, как любой энтузиаст данных, я начал тестировать оба языка программирования бок о бок для повседневных задач науки о данных. Использование их в больших и малых наборах данных действительно изменило мой взгляд на каждый язык программирования.
Прежде чем мы углубимся в языки программирования, я хочу, чтобы вы поняли, что Data Scientist или Data Analyst или Data Enthusiastнена самом деле разрабатывать программное обеспечение.
Он или она может проинформировать процесс разработки программного обеспечения и помочь разработчикам программного обеспечения с логикой данных, которая необходима внутри программного обеспечения, но он или она фактически не разрабатывает программное обеспечение.
Существует реальная разница между программированием для разработки программного обеспечения и программированием для анализа данных.
Разработка программного обеспечениятребует обширного дизайна кода дляпростота и эффективность, Объектно-ориентированные языки, как правило, пригодны для разработки программного обеспечения просто потому, что по мере роста системы код становится более масштабируемым.
Программирование данныхтребует умения делать все необходимое для анализа данных. Под всем, я имею в виду использование междисциплинарного набора знаний практически из всех слоев общества, чтобы выяснить истинную природу этих данных.Код используется для решения уравнения в виде набора данных.
Язык функционального программирования – это язык, который:
- рассматривает вычисления как оценку математических функций
- избегает изменения состояния и изменчивости данных
- программирование выполняется с помощью выражений или объявлений
- функциональный код идемпотентен, или возвращаемое значение функции зависит только от ее результата
Функциональное программирование хорошо, когда у вас есть фиксированный набор вещей. По мере развития вашего кода вы добавляете новые операции над существующими вещами.
Напротив, в объектно-ориентированном программировании данные могут иметь как изменяемые, так и неизменные состояния. Программирование осуществляется с помощью утверждений и выражений. Глобальные состояния программирования могут влиять на итоговое значение функции.
ООП хорошо, когда у вас есть фиксированный набор операций над вещами. По мере развития вашего кода вы добавляете новые вещи.
Целью Data Science часто является решение проблемы. Он часто носит функциональный характер. Сами модели по сути являются уравнениями, в которых возвращаемые значения должны быть одинаковыми. Даже при глубоком обучении сами данные не меняются. Новые значения добавляются. Но данные остаются прежними. Неизменное состояние необходимо для согласованности выходных данных в модели. Функциональное программирование – это объединение функций в одну простую структуру данных. Этот дизайн позволяет легко реализовать параллелизм. В любом проекте машинного обучения или глубокого обучения параллелизм необходим при работе с большими наборами данных.
питонэто интерпретируемый язык программирования общего назначения высокого уровня. Вы можете сделать некоторыефункциональное программирование на Python, Но Python не является функциональным языком программирования. Он не соответствует техническим характеристикам «чистоты» в контексте функционального языка программирования. Python предлагает гораздо больше вариантов использования ОО. Python – это действительно хороший язык для объектно-ориентированного программирования. Вы обнаружите, что, поскольку Python является универсальным, он часто будет использоваться при разработке программного обеспечения. Несмотря на то, что это не строго функциональный язык программирования, он имеет надежные пакеты для Data Science.
рэто прежде всего функциональный язык программирования. Он содержит много инструментов для создания и манипулирования функциями. Вы можете делать с функциями все что угодно, как с векторами. Анонимные функции дают вам возможность использовать функции без указания имени. Это делает возможным объединение функций, которые полезны в машинном обучении и глубоком обучении. Почти все объекты R неизменяемы. R среды, однако, являются изменчивыми. R имеет надежные библиотеки визуализации, такие как ggplot2, plot, lattice и т. Д. Статистики используют R для визуализации данных Часто быстрая визуализация данных может дать представление о данных, что приводит к дальнейшему статистическому анализу.
В реальном мире часто трудно выбрать R или Python для всех ваших усилий в области Data Science.
В конце концов, цель языка программирования состоит в том, чтобы позволить самый простой и самый эффективный код, который будет использоваться для работы под рукой.
Лично для проектов Data Science я использовал R и Python в сочетании с другими языками для различных этапов процесса Data Science.
80% мировых данных – это неструктурированные данные. Такие данные, как текст, видео и изображения, являются неструктурированными данными. Python имеет множество пакетов, таких какNLTK,scikit-изображение,PyPiдля обработки естественного языка, обработки изображений и анализа голоса. Осмысление неструктурированных данных часто означает, что данные должны быть преобразованы в структурированные данные. Python очень полезен для этого преобразования.
С большими наборами данных Python непревзойден в очистке данных.Вы можете использовать такие пакеты, как Pandas, NumPy для простой очистки больших массивов данных. , Часто я буду также использоватьPerl однострочныедля конкретных целей очистки данных.
Сочетание этих двух часто дает «чистые данные» за короткий промежуток времени. Таким образом, большинство моих усилий в области Data Science может быть сосредоточено на анализе.
После того, как вы структурировали данные или полуструктурированные данные, стало намного проще проводить исследование данных в R. Я могу написать чистый код для множества статистических анализов, чтобы узнать мои данные. Пакеты визуализации также легко использовать для визуализации данных, чтобы помочь с моим анализом: ANOVA, многовариантные корреляции и регрессии, факторный анализ и геостатистика.Логистическая регрессияа такжеАнализ временных рядовоба просты в реализации в R с легкой визуализацией. Выбор функции легко сделать с помощью R, используякаретный пакета такжеfastcaretпакет. Выбор модели легко осуществить. Модели машинного обучения, такие как LDA, CART, kNN, SVM и RF, легко реализуются в R. Каждый алгоритм имеет свои пакеты в R. Обучение набора данных и перекрестной проверки занимает всего несколько строк кода. Даже глубокое обучениеБиблиотека Keras в RсТензорный потокТеперь сделайте это проще в R.
Исследование и моделирование данных не ограничивается R. В Python есть такие пакеты, какNumPy,Matplotlibа такжеПандыэто может помочь с процессом исследования данных. Seaborn используется для визуализации почти так же, как ggplot2 в R.SciPyпредоставляет все необходимое для традиционного статистического анализа.SciKit-Learnобеспечивает реализацию алгоритма машинного обучения, перекрестную проверку и многое другое.Используя Keras, TensorFlow и PyTorch, глубокое изучение на Python также не намного проще.Машинное обучение и глубокое обучение часто означают, что вы работаете с большими наборами данных, которые находятся в облаке. Скорее всего, инфраструктурный аспект проекта Data Science приведет любого Data Scientist к AWS, Azure и Google Cloud. Это будет означать, что Python будет языком по умолчанию для использования в таком крупномасштабном проекте Data Science
В заключение, работа с реальными данными представляет сложные проблемы. Эти проблемы часто не могут быть решены с помощью одного языка программирования или другого. Понимание природы R и Python может помочь любому программисту, ученому или аналитику данных выбрать лучший язык программирования для поставленной задачи. Гибридный характер задач в Data Science означает, что всегда будет борьба между Python и R.
Это хорошая вещь. Конкурирующая природа этих двух языков может помочь нам создать самый простой и эффективный код для наших целей.
об авторе
Джун Ву – автор контента для технологий, искусственного интеллекта, науки о данных, психологии и воспитания детей. Она имеет опыт программирования и статистики. В свободное время она пишет стихи и блоги наее сайт,
Подпишитесь на мою еженедельную рассылку, чтобы оставаться на связи
Оригинальная статья
От ‘R против Python’ к ‘R и Python’
Сосредоточьтесь на навыках, а не на инструментах
Для тех, кто разбирается в Data Science, R и Python — это первые два ЯП, которые приходят на ум. Оба являются отличными инструментами для разработки, однако их часто воспринимают как соперников. При вводе R vs Python
в поисковом запросе Google выдает множество статей о преимуществах одного над другим.
Люди разделили область Data Science на лагеря согласно используемому ЯП, а история свидетельствует о том, что лагеря R camp и Python camp не могут жить в гармонии. Члены обоих лагерей искренне верят, что выбрали лучший ЯП в отличие от других. Таким образом, разногласия заключаются не в инструментах, а в людях, которые их используют.
Почему бы не использовать оба?
Немногие члены сообщества 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 идеально подходит для разработки алгоритмов машинного обучения.
Однако в Python нет специализированных пакетов для статистических расчетов в отличие от R.
R
Первый релиз R состоялся в 1995 году, и с тех пор он стал одним из самых популярных инструментов в data science.
- Содержит пакеты практически для любого статистического приложения. На данный момент в CRAN насчитывается более чем 10 тыс. пакетов.
- Оснащен великолепными библиотеками для визуализации, такими как ggplot2.
- Возможность автономного анализа.
Однако в производительности R отстает от других языков, а также вызывает засорение памяти при работе с большими наборами данных.
Использование преимуществ обоих языков
Можно ли использовать статистические способности R вместе с программными возможностями Python? Раз можно с легкостью внедрить код SQL как в сценарий R, так и в Python, то почему бы не смешать R и Python вместе?
Есть два подхода к использованию Python и R вместе в одном проекте.
R в Python
PypeR — легкий способ получения доступа к R из Python с помощью pipes. PypeR также включен в каталог пакетов Python, предоставляющий более удобный способ установки. PypeR особенно удобен при отсутствии необходимости регулярной передачи данных между Python и R. При запуске R через pipe программа Python становится более гибкой в управлении субпроцессами и памятью, а также с легкостью переносится между популярными платформами операционных систем, включая Windows, GNU Linux и Mac OS.
pyRserve использует Rserve в качестве RPC-соединения через шлюз. С помощью этого подключения переменные из Python можно установить в R, а функции R можно вызвать удаленно.
rpy2 запускает встроенный R в процесс Python. Он создает фреймворк для перевода объектов Python в объекты R, передачи их в функции R и конвертирования выходных данных R обратно в объекты Python. rpy2 используется все чаще, благодаря его активной разработке.
Одно из преимуществ этого подхода заключается в возможности использования пакетов R в Python таких, как ggplot2, tidyr, dplyr. Рассмотрим пример использования ggplot2 для отображения в Python.
Более подробную информацию можно найти в официальной документации rpy2.
Python в R
Запустить сценарий R в Python можно с помощью одного из следующих способов:
Этот пакет реализует интерфейс для Python через Jython. Он предназначен для того, чтобы другие пакеты могли внедрять код python вместе с R.
rPython также предназначен для вызова Python в R. С его помощью можно запускать код Python, выполнять вызовы функций, назначать и получать переменные из R.
SnakeCharmR — это современная версия rPython, которая использует ‘jsonlite’ и обладает множеством преимуществ над rPython.
PythonInR значительно упрощает доступ к Python из R, предоставляя функции для взаимодействия с ним.
Пакет reticulate предоставляет широкий набор инструментов для взаимодействия Python и R, который широко используется благодаря активной разработке Rstudio. Reticulate внедряет сессию Python в сессию R, предоставляя бесперебойное высокопроизводительное взаимодействие. С помощью пакета можно подключить (reticulate) кодPython в R, создав новый проект, объединяющий возможности двух языков.
Пакет reticulate предоставляет следующие возможности:
- Вызов Python из R множеством способов, включая R Markdown, поиск сценариев Python, импорт модулей Python, а также интерактивное использование Python в сессии R.
- Перевод между объектами R и Python (например, между фреймами данных R и Pandas или между матрицами R и массивами NumPy).
- Гибкое связывание с различными версиями Python, включая виртуальные окружения и окружения Conda.
Более подробную информацию с примерами и случаями использования можно посмотреть в документации.
Заключение
R и Python — эффективные ЯП, и даже одного из них достаточно для выполнения задач по анализу данных. Однако каждый из них обладает как плюсами, так и минусами. Поэтому при совмещении преимуществ каждого, можно получить наилучший результат.
Перевод статьи Parul Pandey: From ‘R vs Python’ to ‘R and Python’
R, Python, JavaScript или… Excel? Что учить интернет-маркетологу для профессионального роста
Анастасия Скороходова, автор блога CoMagic
Мир ускоряется, технологии развиваются, конкуренция возрастает. Чтобы оставаться востребованными на рынке труда, интернет-маркетологи активно осваивают языки программирования. Мы задали экспертам вопрос: какой язык для изучения выбрать интернет-маркетологу? Или вполне можно обойтись старым добрым Excel?
На смену I-специалистам (узконаправленным, высококвалифицированным только в одной области) растет спрос на так называемых T-shaped-специалистов, которые глубоко разбираются в одной сфере и поверхностно в смежных. Так, автор текстов учится создавать визуалы для своих статей в Photoshop, специалист по контексту осваивает азы SEO, SMM и Programmatic, а маркетолог — языки программирования.
Валентин Домбровский, сооснователь курсов Learn Python
— Валентин, зачем современному маркетологу учиться программировать?Для этого могут быть разные причины:
-
Это может быть просто интересно и полезно для саморазвития. В этом плане изучение программирования можно сравнить с любым другим хобби, когда ты можешь сделать что-то своими руками и получить от этого удовольствие.
-
Ты можешь начать писать простейшие скрипты для решения определённых рутинных задач. Что важно, ты начнёшь видеть возможности для автоматизации в своей повседневной деятельности — произойдёт небольшой «разворот мозга» в сторону того, как можно увеличить эффективность работы в том или ином направлении.
-
Ты получишь возможность разговаривать с разработчиками «на одном языке» и как минимум реалистично оценивать сроки решения тех или иных задач по разработке.
-
Ну и может быть, программирование так понравится и «затянет», что в какой-то момент придёт решение сменить область деятельности или запустить свой стартап. Кстати, сфера маркетинговых технологий в плане стартапов очень перспективна.
— Какой язык в этом случае советуете освоить?
Я являюсь адептом Python и рекомендую для начала изучать именно его. Говорят, что Python is the second best language for everything, это означает, что, возможно, для какой-то конкретной задачи найдётся язык программирования, который подходит лучше, однако в целом Python достаточно универсален, чтобы его можно было использовать для всего.
Тем более для целей аналитики или создания приложений в сфере machine learning Python действительно подходит лучше всего. Ну и наконец, язык этот достаточно простой и многими признаётся как лучший первый язык программирования для начинающих.
Алексей Селезнев, руководитель отдела аналитики агентства Netpeak и автор онлайн-курса «Язык R для интернет-маркетинга»
Сегодня знание языка программирования не является обязательным требованием к маркетологу, но даёт большое преимущество и прибавку к стоимости на рынке труда. В связи с тем что все стремятся к автоматизации всего, в ближайшем будущем программирование станет обязательным навыком для интернет-маркетологов. В моей практике уже был случай, когда веб-аналитика вытеснил язык R.
Выбор языков программирования, направленных на работу с данными, достаточно велик, но наиболее популярными являются R и Python. В интернете можно найти множество дискуссий на тему, какой из них лучше, но в большинстве случаев все эти споры бессмысленны. Примерно так же, как споры о том, какой цвет красивее — синий или зелёный. Я могу сказать следующее: лучше хорошо знать один из языков программирования, чем несколько, но поверхностно.
Мы в Netpeak активно используем язык R для автоматизации сбора данных из всевозможных рекламных и аналитических систем и дальнейшего их использования при рассылке различных информационных дайджестов и визуализации данных в BI-системах. Но вариантов применения программирования в интернет-маркетинге достаточно много: от быстрого разведочного анализа и визуализации данных до больших маркетинговых исследований и внедрения алгоритмов машинного обучения.
Сергей Томашевский, маркетолог, основатель и директор рекламного агентства «Бирс»
— Надо ли маркетологу сегодня учиться программировать?
Нет, не надо.
— Спасибо, Сергей. Вопросов больше нет. 🙂
Я считаю, что программирование — это отдельная профессия, никак не связанная с маркетингом. Маркетолог должен хорошо разбираться в новых инструментах аналитики и прочее, а чтобы работать с данными быстрее и эффективнее, достаточно уверенного владения Excel и Power BI.
Иван Самохин, директор веб-студии полного цикла Pear Advert
Учиться программировать по-настоящему маркетологу нужно тогда, когда он задумался о смене профессии. 🙂 Но если говорить серьезно, ему достаточно будет владеть разметкой HTML, знать Python и PHP.
Зачастую у маркетологов появляются задачи, связанные с анализом данных или получением информации, в этом случае огромным плюсом и своего рода ускорителем будет выполнение рутинных задач с помощью простых языков программирования. Еще одна причина — необходимость внесения экстренных правок на сайтах. Чтобы не ждать, пока освободится штатный программист, маркетолог может самостоятельно исправить, убрать или добавить необходимые элементы.
Самый оптимальный язык для программирования — Python. Он был разработан для студентов и имеет элементарный синтаксис, поэтому его легко запомнить, он интуитивно понятен даже для неспециалиста. Основными преимуществами являются его простота, быстрое и несложное обучение, огромное количество готовых библиотек, довольно высокая скорость выполнения операций.
Одна операция в Python и Java
Курсалин Виктор, аналитик kt.team
По моему опыту, программирование больше помогает в области анализа маркетинговых данных для поиска закономерностей или сложных артефактов.
Второе применение — это парсинг цен и других важных показателей у конкурентов. Возможно, парсинг групп и аудиторий в ВК и т.д.
Какие языки можно рассмотреть:
Python — для анализа данных, построения отчетов и парсинга.
JavaScript — для отправки данных в аналитические системы.
Преимущество JS: упрощает понимание логики работы с данными и помогает настраивать более сложный стриминг событий. Преимущества Python: обработка больших данных, устранение семплирования данных (бесплатные аналитические системы имеют квоты на объем данных, при их превышении они обрезают отчет. К примеру, у вас 1 000 000 пользователей, а бесплатный инструмент Google для экономии строит отчет на основе 800 000 пользователей) + визуализация данных.
— Расскажите о каком-нибудь конкретном кейсе, когда язык программирования здорово помог в работе.
При работе с клиентом выяснилось, что значительная часть пользователей просто копируют e-mail с лендинга. Соответственно, при аналитике источников клиентов мы не могли понять, откуда они пришли. JS помог фиксировать копирование контактных данных и связывать его с источником.
Python мы использовали для стриминга данных в Google BigQuery и визуализации их в Power BI. Это помогло избежать семплирования. В проекте семплирование достигало 30% и вносило искажение в отчеты.
Анастасия Кузнецова, свободный аналитик, автор блога «настенька и графики»
Маркетинг — большая штука, поэтому тут все очень сильно зависит от того, в каком направлении работает маркетолог, и от величины организации. Если вы больше про идеи и придумывания, то программирование вам, скорее всего, совсем не нужно, а вот если занимаетесь чем-то по типу запуска рекламы, то программирование явно будет не лишним для анализа результатов эффективности. Но опять же, если вы работаете в маленькой организации, где вы один отвечаете за весь маркетинг, то программирование вам не поможет, а даже усложнит работу.
Программирование для маркетологов полезно в разных случаях и оно дает больше возможностей для развития. Например, оно может понадобиться при обработке данных Google Analytics и объединении их с данными организации, а если вы хотите проанализировать, про что бы лучше статью в блоге сочинить, тут может помочь текстовый анализ. Или чтобы лучше понять свою аудиторию, например, скачав странички пользователей в ВК с целью посмотреть паблики и интересы. Тут вариантов множество — были бы идеи. Но основное — это все равно маркетинговая аналитика.
— Какой язык выбрать?
Зависит от того, был ли какой-то бэкграунд в программировании до этого. Например, меня с 1 курса университета (социология) учили R, потому что он для статистической обработки данных, а социология + статистика = . И он в принципе несложный, активно развивающийся, со множеством пакетов (в том числе для ВК, Google Analytics, Яндекс.Метрики и т.д). Еще Python. Он, конечно, куда более мощный, но я пользовалась им для маркетинга один раз, когда мне нужно было скачать данные через API сервиса и пакет был только на Python. SQL может понадобиться при работе с базами данных, которая тоже очень даже возможна в маркетинге. JS нужен при работе с Google Tag Manager (но тут я не эксперт). Ну а еще сайты можно уметь писать или письма верстать для e-mail-маркетинга (тут HTML).
— В чем один язык лучше другого?
Они слишком разные, чтобы сравнивать. И это зависит от задачи и привычки. Я больше на R, дольше с ним дружу и на самом деле очень его люблю. Python у меня на довольно базовом уровне, и делать там что-то с нуля я не могу. В целом могу делать и SQL-запросы, и даже письмо заверстаю по шаблону, если нужно. Но это уж если очень сильно понадобится.
Считается, что Python лучше для машинного обучения, тут как раз он быстрее. И это я скорее слышала от друзей. R хорош для данных и статистики — там это все в разы проще и удобнее (соответственно, и быстрее), на Python же больше возможностей — тут не только обработка данных, а уже прямо полноценный язык программирования. Лучше знать оба (второй хотя бы на базовом уровне) и исходить из задачи, которую нужно решить.
Программирование никогда не лишнее, как минимум это очень полезный навык для мозга. 🙂 Строчки кода на любом языке не вызывают дикую панику, и вы даже будете способны в нем разобраться. Открываются новые возможности — напрогать можно практически все. Сейчас, конечно, многие задачи решают сервисы, но это обычно все очень дорого. А тут вы практически все сможете сделать сами!
По мнению большинства опрошенных нами экспертов, владение языком программирования дает маркетологу весомое преимущество на рынке труда. Задачи, которые он сможет решать быстрее и результативнее:
-
сбор и анализ маркетинговых данных,
-
текстовый анализ,
-
сегментация и анализ аудитории,
-
парсинг показателей конкурентов,
-
визуализация данных,
-
маркетинговые исследования,
-
внедрение алгоритмов машинного обучения и др.
Владение языком программирования позволит маркетологу стать более независимым от разработчиков, автоматизировать часть рутинных процессов в своей работе, улучшить работу сервисов и даже сократить расходы компании на рекламу.
Сегодня широта знаний не менее важна, чем их глубина. Учитесь новому, экспериментируйте, прокачивайте себя и маркетинг, которым вы управляете. Если вы уже определились с языком, который хотите освоить, найдите курсы по программированию для маркетологов и продолжайте черпать полезную и актуальную информацию из нашего блога. 🙂 До связи!
Узнайте, какая реклама приводит лиды
Коллтрекинг CoMagic
- определение источника обращения до ключевого слова
- без платы за номера
- настройка в два клика
Грамматика Data Science: Python vs R
Некоторые data scientist’ы пользуются языком Python, другие — отдают предпочтение R.
Фанаты «питона» зачастую применяют библиотеки Pandas и Seaborn в то время, как поклонники R предпочитают пакеты dplyr и ggplot2.
Какой из этих языков более эффективен для решения задач обработки и визуализации данных? Однозначного ответа на этот вопрос нет.
В сегодняшней статье мы приведем подробное сравнение решений некоторых простых задач, реализованных на Python и R.
Вселенная Хэдли Уикхэма
Итак, в качестве примера возьмем набор данных, который поставляется вместе с библиотекой ggplot2. Он содержит характеристики 50 000 бриллиантов: масса (carat size), качество огранки (cut), чистота (clarity), глубина павильона (depth), диаметр площадка (table), цена и пространственные параметры. Ниже представлены первые пять строк данных:
Нас могут интересовать некоторые вопросы, связанные с этими данными. Как цена бриллианта зависит от массы? Как на эту зависимость влияют категорийные переменные, такие как качество огранки, цвет или чистота? На эти вопросы можно ответить посредством быстрой визуализации с помощью функции ggplot, написав всего пять строк кода:
Операция %>% представляет собой конвейер, который просто передает результат левой операции в качестве первого аргумента для правой операции. Посредством функции отображения (функция aes) мы сообщаем ggplot, что независимая переменная X – это масса, а зависимая переменная Y – цена.
Следующий графический слой (функция geom_point) говорит о том, что мы хотим представить каждый элемент данных в виде точки, чтобы в результате получить диаграмму рассеяния (scatter plot).
Затем с помощью функции facet_grid создаем отдельные диаграммы рассеяния для каждого значения переменной «качество огранки». Мы бы также могли получить отдельные диаграммы рассеяния для значений переменной «цвет» или «чистота».
Далее применяется линейная модель второго порядка (функция stat_smooth) и строится приближенная кривая, отображаемая поверх диаграммы рассеяния. Как видим, язык описания визуализации интуитивно понятен, а результаты прекрасны.
С помощью этой простой визуализации мы можем легко увидеть, что цена возрастает с ростом массы, зависимость имеет нелинейный характер, присутствуют некоторые аномалии, а качество огранки оказывает не слишком существенное влияние на данную зависимость.
«Трудности перевода» на Python
Как мы можем решить ту же задачу на Python? Используя библиотеку Seaborn, можно реализовать это с помощью функции lmplot, которая обеспечивает значительно менее впечатляющую визуализацию.
Основная проблема заключается в том, что масштаб оси Y определяет приближенная кривая, а не фактические данные. В результате, фактические данные отображаются в уменьшенном масштабе! Вряд ли бы Эдвард Тафти одобрил нечто подобное…
При использовании R функция ggplot автоматически решает эту проблему, благодаря чему вы получаете эффективную визуализацию без дополнительных усилий.
Кроме того, писать код на R значительно легче, чем на Python, ведь он состоит из комбинации простых и легко запоминающихся элементов, а читается как англоязычный текст.
По сравнению с Python, R значительно уменьшает когнитивную нагрузку при исследовании данных с целью быстрой проверки гипотез. В защиту Seaborn можно сказать, что эта библиотека обеспечивает более простой API и более элегантную визуализацию, чем библиотека Matplotlib. Кроме того, Seaborn моложе ggplot2, а это означает, что у нее было меньше времени на совершенствование.
Звучит неубедительно? dplyr взорвет ваш мозг
Давайте рассмотрим другой пример, где в игру вступает библиотека dplyr. Предположим, нас интересует, как взаимосвязаны друг с другом качество огранки, цена, масса и объем (volume) (признак, производный от имеющихся данных) бриллиантов.
На R с помощью функции ggpairs мы можем создать простую визуализацию, которая поможет нам быстро ответить на этот вопрос. Сначала необходимо создать признак «объем», затем выбрать интересующие нас переменные и сделать выборку данных, чтобы избежать наложения (overplotting). Ниже представлен код на R, реализующий описанные действия:
И снова код читается, как текст на английском. Функции mutate, select и sample_frac (глаголы!) являются частью библиотеки для обработки данных dplyr, овладеть которой можно очень легко и быстро.
Все, что для этого понадобилось, – вот эта удобная шпаргалка.
Ниже представлены результаты визуализации:
Функция ggpairs интеллектуально визуализирует взаимосвязи между переменными. Мы видим диаграммы рассеяния для случая взаимосвязи двух непрерывных переменных (например, взаимосвязь объема и массы) или сгруппированные гистограммы для случая взаимосвязи непрерывной переменной и категорийной переменной (например, взаимосвязь объема и качества огранки).
В ячейках, расположенных по диагонали, изображены ядерные оценки плотности распределения (kernel density estimates) для непрерывных переменных (например, распределение объема в правом нижнем углу) и гистограмма для категорийной переменной (распределение качества огранки в левом верхнем углу).
В трех ячейках справа мы видим коэффициенты корреляции для случаев взаимосвязи двух непрерывных переменных (например, корреляция между объемом и массой составляет 0,996).
В трех верхних ячейках изображены сгруппированные диаграммы типа «ящик с усами» (boxplot) для случаев взаимосвязи непрерывной переменной и категорийной переменной (например, взаимосвязь объема и качества огранки).
Благодаря столь информативной визуализации, мы можем узнать очень многое о ковариационной структуре наших данных, но при этом нам пришлось написать всего несколько строк кода!
Python снова отстает
Эквивалентный код на Python не читается, как текст на английском, и его очень неудобно писать.
Результат также намного менее впечатляющий и информативный.
Здесь есть серьезные проблемы. Во-первых, функция pairplot библиотеки Seaborn не смогла создать диаграммы с участием переменной «качество огранки», потому что не знала, как сопоставить эту переменную с непрерывными переменными. Эта функция может строить диаграммы только для случаев взаимосвязи двух непрерывных переменных.
Во-вторых, три диаграммы являются избыточными (например, диаграмма в правом верхнем углу идентична диаграмме в левом нижнем углу).
При использовании R избыточные диаграммы заменяются коэффициентами корреляции или сгруппированными «ящиками с усами», что дает дополнительную информацию.
В-третьих, используя Seaborn, трудно управлять внешним видом диаграмм, поэтому значения цены, расположенные в качестве меток под осью X, накладываются друг на друга.
И снова следует отметить, что при работе с ggplot2 + dplyr код легче читается, легче пишется, имеет интуитивно понятную структуру и обеспечивает информативную визуализацию.
Оба языка имеют свои преимущества
Следует сказать, что R также имеет некоторые существенные недостатки по сравнению с Python. Серьезные затруднения вызывает автоматизация рабочего процесса и создание повторно используемого кода. Так что идеальная стратегия – брать лучшее из обоих миров: реализовывать анализ данных на ранних этапах с помощью R, а потом переходить на Python, когда приходит время работать в команде и создавать реальные программные продукты.
Важно! Майкл Воском (Michael Waskom), разработчик Seaborn, отметил, что можно легко усечь диаграммы, представленные на втором рисунке в этой статье, передав функции lmplot параметр truncate = True.
В основу статьи легли материалы Stitch Fix
Курсы Python для Data Science в Киеве
Описание курса
Как понять, достаточно ли вы сильны для прохождения этого курса? Просто дайте самому себе ответы на следующие вопросы: интересует ли вас работа с данными (таблицами данных), манипуляции с ними и их визуализация? Помните ли вы из школы /университета/работы суть понятий «медиана», «мода», «распределение вероятностей»? Если ответы положительные, то у вас хорошие шансы на успешное прохождение курса.
Этот курс будет полезен:
– Специалистам, которые хотят начать карьеру в Data science;
– Специалистам по Data science, которые еще не освоили возможности работы с данными в Python или R;
– Специалистам, работающим с данными (аналитикам, бизнес-аналитикам, исследователям), которые хотят освоить новые гибкие инструменты для работы с данными.
Философия курса: обратите внимание, что этот курс не сделает из вас полноценных разработчиков на Python или R. С точки зрения data science, это, в первую очередь, два удобных инструменты для выполнения рабочих задач.
После курса вы сможете:
- Понимать основные алгоритмы машинного обучения и практически их использовать для задач классификации и регрессии
- Анализировать данные и строить модели машинного обучения с помощью языков Python и R
- Делать качественные и интерактивные визуализации данных
Программа курса:
Модуль 1. Введение в машинного обучения и Data science
- Определение машинного обучения и науки о данных, их задачи.
- Инструментарий для анализа данных: языки программирования Python и R.
- Типы машинного обучения.
- Составные части модели машинного обучения.
- Базовые концепты машинного обучения.
Модуль 2. Основы языков программирования Python и R для Data science
- IDE для удобной работы: Jupyter, Spyder & Rstudio.
- Семантика языка.
- Типы данных.
- Структуры данных.
- Операторы контроля исполнения (разветвления и циклов).
- Векторизация в Python (numpy) i R.
Модуль 3. Функциональное программирование в Python и R
- Comprehension, Generators, Iterators в Python.
- Функции в Python i R.
- Встроенные функции Python.
- Apply-family функции в R.
- Библиотека purrr для функционального программирования в R.
Модуль 4. Исследование и подготовка данных к анализу
- Numpy.
- Pandas.
- Фильтрация и агрегация данных в dplyr.
- Long & wide форматы таблиц, их преобразования в библиотеках pandas & tidyr.
Модуль 5. Визуализация данных в R i Python
- Визуализация данных в R.
- ggplot2 – grammar of graphics.
- Интерактивная графика в R.
- Matplotlib & seaborn.
Модуль 6. Основные понятия статистического анализа
- Scipy.stats.
- Описательные статистики.
- Зависимости между переменными.
Модуль 7. Типичные проблемы в подготовке данных к анализу
- Преобразование факторных переменных.
- Борьба с пробелами в данных.
- Проблема мультиколлинеарности.
- Шкалирования данных.
- Выбор информативных переменных для модели.
- Типичный алгоритм подготовки данных к моделированию.
Модуль 8. Базовые регрессионные модели
- Линейная регрессия.
- Полиномиальная регрессия.
- Метод ближайших соседей.
- Метрики оценки качества регрессии.
- Тюнинг регрессионных моделей.
Модуль 9. Базовые модели классификации
- Логистическая регрессия.
- Метод опорных векторов.
- Наивный Байесовский классификатор.
- Метрики оценки качества классификации.
- Тюнинг параметров моделей классификации.
Модуль 10. Базовые модели кластеризации и снижения размерности
- Метод к-средних.
- Иерархический кластерный анализ.
- DBSCAN.
- Анализ.
- Кореспонденс-анализ.
Модуль 11. Деревья решений и ансамбли
- Базовые древовидные модели.
- Random forest.
- Xgboost, lightgbm.
- Тюнинг гиперпараметров в ансамблевых моделях.
Модуль 12. Методы улучшения качества моделей машинного обучения
- Аугментация.
- Feature engineering.
- Cross-validation.
- Борьба с переобучением.
- Борьба с дисбалансом данных.
- Регуляризация модели.
Модуль 13. Введение в архитектуры нейронных сетей. Нейронные сети для классификации изображений
- Keras.
- tensorflow.
- Персептрон.
- CNN.
Модуль 14. Прогнозирование временных рядов
- AR, MA, ARMA.
- ARIMA.
- VAR.
- Lstm.
Модуль 15. Документация data science проектов, data science in prod
- Пути организации продакшна для data science-проектов.
- Специфика документации data science проектов.
- Markdown, Latex.
Модуль 16. Практикум по пути улучшения качества моделей
- Презентация и обсуждение курсовых проектов
- Подведение итогов курса
Минимальные требования:
- Опыт программирования на любом процедурном языке
- Знание математики в рамках школьного курса
- Наличие собственного ноутбука для занятий в аудиториях
Лекторы:
1. Денис Ширман (Data Scientist)
2. Олег Сорокин (Machine Learning Engineer)
* Примечание: указанные скидки не суммируются с другими действующими акциями и специальными предложениями. Скидка применяется только к новым заявкам и при условии полной оплаты. Если у Вас возникли вопросы, обращайтесь за консультацией к нашим менеджерам!
R против Python: в чем разница?
R и Python являются языками программирования с открытым исходным кодом и имеют большое сообщество. Новые библиотеки или инструменты постоянно добавляются в соответствующие каталоги. R в основном используется для статистического анализа, в то время как Python обеспечивает более общий подход к науке о данных.
R и Python являются новейшими языками программирования, ориентированными на науку о данных. Конечно, изучение их обоих – идеальное решение. R и Python требуют затрат времени, а такая роскошь доступна не каждому.Python – это язык общего назначения с читаемым синтаксисом. Однако R создается статистиками и охватывает их специфический язык.
В этом руководстве вы узнаете
R
Академики и статистики разрабатывали R более двух десятилетий. В настоящее время R имеет одну из самых богатых экосистем для анализа данных. В CRAN (репозиторий с открытым исходным кодом) доступно около 12000 пакетов. Можно найти библиотеку для любого анализа, который вы хотите выполнить.Богатое разнообразие библиотек делает R лучшим выбором для статистического анализа, особенно для специализированной аналитической работы.
Самая большая разница между R и другими статистическими продуктами – это результат. В R есть фантастические инструменты для передачи результатов. Rstudio поставляется с библиотекой knitr. Се Ихуэй написал этот пакет. Он сделал репортаж банальным и элегантным. Сообщать результаты с помощью презентации или документа легко.
Python
Python может в значительной степени выполнять те же задачи, что и R: обработка данных, разработка, выбор функций веб-скраппинга, приложения и т. Д.Python – это инструмент для широкомасштабного развертывания и реализации машинного обучения. Коды Python проще в обслуживании и надежнее, чем R. Много лет назад; В Python было не так много библиотек для анализа данных и машинного обучения. В последнее время догоняет Python и предоставляет передовой API для машинного обучения или искусственного интеллекта. Большую часть работы по науке о данных можно выполнить с помощью пяти библиотек Python: Numpy, Pandas, Scipy, Scikit-learn и Seaborn.
Python, с другой стороны, делает воспроизводимость и доступность проще, чем R.Фактически, если вам нужно использовать результаты вашего анализа в приложении или на веб-сайте, Python – лучший выбор.
КЛЮЧЕВЫЕ РАЗЛИЧИЯ:
- R в основном используется для статистического анализа, в то время как Python обеспечивает более общий подход к науке о данных
- Основная цель R – анализ данных и статистика, тогда как основная цель Python – развертывание и производство
- R пользователи в основном состоят из ученых и специалистов по исследованиям и разработкам, в то время как пользователи Python в основном программисты и разработчики.
- R обеспечивает гибкость использования доступных библиотек, тогда как Python обеспечивает гибкость для создания новых моделей с нуля.
- R трудно изучить вначале, в то время как Python является линейным и легко изучить
- R интегрирован в Запуск локально, в то время как Python хорошо интегрирован с приложениями
- И R, и Python могут обрабатывать огромные размеры базы данных
- R можно использовать в среде R Studio IDE, а Python можно использовать в Spyder и Ipython Notebook IDE
- R состоит из различных пакетов и библиотек, таких как tidyverse, ggplot2. , caret, zoo, тогда как Python состоит из пакетов и библиотек, таких как pandas, scipy, scikit-learn, TensorFlow, caret
Индекс популярности
Рейтинг IEEE Spectrum – это метрика, которая количественно определяет популярность языка программирования.В левом столбце показан рейтинг в 2017 году, а в правом столбце – в 2016 году. В 2017 году Python занял первое место по сравнению с третьим местом годом ранее. R находится на месте 6 -го .
Возможности вакансии
На рисунке ниже показано количество рабочих мест, связанных с наукой о данных, по языкам программирования. SQL далеко впереди, за ним идут Python и Java. R 5 место, -е место .
Возможности трудоустройства R против PythonЕсли мы сосредоточимся на долгосрочной тенденции между Python (желтым) и R (синим), мы увидим, что Python чаще упоминается в описании вакансий, чем R.
Анализ, выполненный R и Python
Однако, если мы посмотрим на задания анализа данных, R, безусловно, лучший инструмент.
Процент переключившихся людей
На рисунке ниже показаны два ключевых момента.
- Пользователи Python более лояльны, чем пользователи R
- Процент пользователей R, переходящих на Python, вдвое больше, чем Python на R.
Разница между R и Python
Параметр | R | Python |
---|---|---|
Цель | Анализ данных и статистика | Развертывание и производство |
Основные пользователи | Ученый и R&D | Программисты и разработчики |
Гибкость | Простая в использовании доступная библиотека | Легко создавать новые модели с нуля.То есть, вычисление и оптимизация матриц |
Кривая обучения | Сложно в начале | Линейное и гладкое |
Популярность языка программирования. Процентное изменение | 4,23% в 2018 г. | 21,69% в 2018 г. |
Средняя зарплата | $ 99,000 | $ 100,000 |
Интеграция | Выполнить локально | Хорошо интегрировано с приложением |
Задача | Easy для получения первичных результатов | Хорошо развернуть алгоритм |
Размер базы данных | Обработка огромного размера | Обработка огромного размера |
IDE | Rstudio | Spyder, Ipython Notebook |
Важные пакеты и библиотека | tidyverse, ggplot2, caret, zoo | pandas, scipy, scikit-learn, TensorFlow, caret |
Недостатки | Медленная кривая высокого обучения Зависимости между библиотеками | Не так много библиотек, как R |
Преимущества |
|
|
Использование R или Python
Python был разработан Гвидо ван Россумом, программистом, примерно в 1991 году.Python имеет влиятельные библиотеки для математики, статистики и искусственного интеллекта. Вы можете думать о Python как о чистом игроке в машинном обучении. Однако Python еще не полностью зрел (пока) для эконометрики и коммуникации. Python – лучший инструмент для интеграции и развертывания машинного обучения, но не для бизнес-аналитики.
Хорошая новость в том, что R разработан академиками и учеными. Он предназначен для решения статистических задач, машинного обучения и анализа данных. R – правильный инструмент для науки о данных из-за его мощных коммуникационных библиотек.Кроме того, R оснащен множеством пакетов для выполнения анализа временных рядов, панельных данных и интеллектуального анализа данных. Вдобавок ко всему, нет инструментов лучше, чем R.
На наш взгляд, если вы новичок в науке о данных с необходимой статистической базой, вам нужно задать себе следующие два вопроса:
- Do I хотите узнать, как работает алгоритм?
- Я хочу развернуть модель?
Если ваш ответ на оба вопроса утвердительный, вы, вероятно, сначала начнете изучать Python.С одной стороны, Python включает в себя отличные библиотеки для управления матрицей или кодирования алгоритмов. Новичку может быть проще научиться создавать модель с нуля, а затем переключаться на функции из библиотек машинного обучения. С другой стороны, вы уже знаете алгоритм или хотите сразу приступить к анализу данных, тогда для начала подойдут и R, и Python. Одно из преимуществ R, если вы собираетесь сосредоточиться на статистических методах.
Во-вторых, если вы хотите больше, чем статистика, скажем, развертывание и воспроизводимость, Python – лучший выбор.R больше подходит для вашей работы, если вам нужно написать отчет и создать дашборд.
Короче говоря, статистический разрыв между R и Python становится все ближе. Большую часть работы можно выполнить на обоих языках. Вам лучше выбрать тот, который соответствует вашим потребностям, а также инструмент, который используют ваши коллеги. Лучше, когда вы все говорите на одном языке. После того, как вы узнаете свой первый язык программирования, выучить второй станет проще.
Заключение
В конечном итоге выбор между R или Python зависит от:
- Цели вашей миссии: статистический анализ или развертывание
- Количество времени, которое вы можете инвестировать
- Наиболее часто используемый инструмент вашей компании / отрасли
Python против R для науки о данных: И победитель.. | by Data-Driven Science
Около : Data-Driven Science (DDS) обеспечивает обучение людей, строящих карьеру в области искусственного интеллекта (AI). Следуйте за нами в Twitter .
Введение
Для все большего числа людей наука о данных становится центральной частью их работы. Повышенная доступность данных, более мощные вычисления и акцент на бизнес-решениях, основанных на аналитике, сделали его временем расцвета для науки о данных.Согласно отчету IBM, в 2015 году в США было 2,35 миллиона вакансий в сфере анализа данных. По его оценкам, к 2020 году их число вырастет до 2,72 миллиона.
Двумя наиболее популярными инструментами программирования для работы в области науки о данных на данный момент являются Python и R (взгляните на опрос Data Science Survey, проведенный O’Reilly). Трудно выбрать один из этих двух удивительно гибких языков анализа данных. Оба являются бесплатными и с открытым исходным кодом, и были разработаны в начале 1990-х годов – R для статистического анализа и Python как язык программирования общего назначения.Для всех, кто интересуется машинным обучением, работой с большими наборами данных или созданием сложных визуализаций данных, они абсолютно необходимы.
Источник изображения: https://dzone.com/articles/r-or-python-data-scientists-delight
На приведенном выше графике показано, как Python и R менялись с течением времени в зависимости от использования их теги с 2008 года (основан Stack Overflow).
Хотя оба языка конкурируют за право выбора для специалистов по данным, давайте посмотрим на долю их платформ и сравним 2016 год с 2017 годом.
Источник изображения: https://dzone.com/articles/r-or-python-data-scientists-delight
Краткий обзор истории Python и R
Python
Python был выпущен в 1989 году с философией, которая подчеркивает удобочитаемость и эффективность кода. Это объектно-ориентированный язык программирования, что означает, что он группирует данные и код в объекты, которые могут взаимодействовать и изменять друг друга. Другие примеры – Java, C ++ и Scala.Этот сложный подход позволяет специалистам по обработке данных выполнять задачи с большей стабильностью, модульностью и удобочитаемостью кода.
Наука о данных – это лишь небольшая часть разнообразной экосистемы Python. Набор специализированных библиотек глубокого обучения Python и других библиотек машинного обучения включает популярные инструменты, такие как scikit-learn, Keras и TensorFlow, которые позволяют специалистам по обработке данных разрабатывать сложные модели данных, которые подключаются непосредственно к производственной системе.
R
R был разработан в 1992 году и в течение многих лет был предпочтительным языком программирования для большинства специалистов по данным.Это процедурный язык, который разбивает задачу программирования на серию шагов, процедур и подпрограмм. Это плюс, когда дело доходит до построения моделей данных, поскольку позволяет относительно легко понять, как выполняются сложные операции; однако это часто происходит за счет производительности и читабельности кода. Сообщество
R, ориентированное на анализ, разработало пакеты с открытым исходным кодом для конкретных сложных моделей, которые специалисту по данным в противном случае пришлось бы строить с нуля.R также делает упор на качественную отчетность с поддержкой чистых визуализаций и фреймворков для создания интерактивных веб-приложений. С другой стороны, более низкая производительность и отсутствие ключевых функций, таких как модульное тестирование и веб-фреймворки, являются частыми причинами, по которым некоторые специалисты по данным предпочитают искать в другом месте.
Процесс науки о данных
Теперь пришло время взглянуть на эти два языка немного глубже с точки зрения их использования в конвейере данных, в том числе:
- Сбор данных
- Исследование данных
- Моделирование данных
- Визуализация данных
Сбор данных
Python
Python поддерживает все виды различных форматов данных.Вы можете играть с документами значений, разделенными запятыми (известными как CSV), или вы можете играть с JSON, полученным из Интернета. Вы можете импортировать таблицы SQL прямо в свой код.
Вы также можете создавать наборы данных. Библиотека запросов Python – это прекрасная работа, которая позволяет вам брать данные с разных веб-сайтов с помощью строчки кода. Он упрощает HTTP-запросы до строки кода. Вы сможете брать данные из таблиц Википедии, а после того, как вы систематизируете данные, которые получаете с beautifulsoup, вы сможете анализировать их глубже.
С Python можно получать любые данные. Если вы когда-нибудь застряли, используйте Google Python и набор данных, который вы ищете, чтобы найти решение.
R
Вы можете импортировать данные из Excel, CSV и из текстовых файлов в R. Файлы, созданные в Minitab или в формате SPSS, также могут быть преобразованы в R-кадры данных. Хотя R может быть не таким универсальным в получении информации из Интернета, как Python, он может обрабатывать данные из наиболее распространенных источников.
Многие современные пакеты для сбора данных R были созданы для решения этой проблемы.Rvest позволит вам выполнять базовый парсинг веб-страниц, в то время как magrittr очистит его и проанализирует информацию за вас. Эти пакеты аналогичны запросам и красивым библиотекам супа в Python.
Исследование данных
Python
Чтобы извлечь ценные сведения из данных, вам нужно будет использовать Pandas, библиотеку анализа данных для Python. Он может хранить большие объемы данных без каких-либо задержек, которые исходят от Excel. Вы сможете фильтровать, сортировать и отображать данные за считанные секунды.
Pandas организованы в фреймы данных, которые можно определять и переопределять несколько раз на протяжении всего проекта. Вы можете очистить данные, заполнив недопустимые значения, такие как NaN (не число), значением, которое имеет смысл для численного анализа, например 0. Вы сможете легко просмотреть данные, которые у вас есть, с помощью Pandas и очистить данные, не имеющие эмпирического смысла.
R
R был создан для статистического и численного анализа больших наборов данных, поэтому неудивительно, что у вас будет много вариантов при изучении данных с помощью R.Вы сможете строить вероятностные распределения, применять к своим данным различные статистические тесты, а также использовать стандартные методы машинного обучения и интеллектуального анализа данных.
Базовая функциональность R охватывает основы аналитики, оптимизации, статистической обработки, оптимизации, генерации случайных чисел, обработки сигналов и машинного обучения. Для некоторых более тяжелых работ вам придется полагаться на сторонние библиотеки.
Моделирование данных
Python
Вы можете выполнять анализ численного моделирования с помощью Numpy.Вы можете выполнять научные вычисления и вычисления с помощью SciPy. Вы можете получить доступ к множеству мощных алгоритмов машинного обучения с помощью библиотеки кода scikit-learn. scikit-learn предлагает интуитивно понятный интерфейс, который позволяет использовать всю мощь машинного обучения без его многочисленных сложностей.
R
Чтобы выполнить конкретный анализ моделирования, вам иногда придется полагаться на пакеты, выходящие за рамки основных функций R. Существует множество пакетов для конкретных анализов, таких как распределение Пуассона и смеси вероятностных законов.
Визуализация данных
Python
IPython Notebook, поставляемый с Anaconda, имеет множество мощных опций для визуализации данных. Вы можете использовать библиотеку Matplotlib для создания базовых графиков и диаграмм из данных, встроенных в ваш Python. Если вам нужны более сложные графики или лучший дизайн, вы можете попробовать Plot.ly. Это удобное решение для визуализации данных обрабатывает ваши данные через интуитивно понятный API Python и выводит красивые графики и информационные панели, которые помогут вам выразить свою точку зрения с силой и красотой.
Вы также можете использовать функцию nbconvert, чтобы превратить записные книжки Python в документы HTML. Это может помочь вам встроить фрагменты красиво отформатированного кода в интерактивные веб-сайты или в ваше онлайн-портфолио. Многие люди использовали эту функцию для создания онлайн-руководств по изучению Python и интерактивных книг.
R
R был построен для статистического анализа и демонстрации результатов. Это мощная среда, подходящая для научной визуализации, с множеством пакетов, которые специализируются на графическом отображении результатов.Базовый графический модуль позволяет вам создавать все основные диаграммы и графики, которые вам нужны, из матриц данных. Затем вы можете сохранить эти файлы в графических форматах, таких как jpg., Или сохранить их как отдельные PDF-файлы. Вы можете использовать ggplot2 для более сложных графиков, таких как сложные графики рассеяния с линиями регрессии.
Вопросы, которые следует задать перед выбором одного из языков
1 – Есть ли у вас опыт программирования на других языках?
Если у вас есть некоторый опыт программирования, Python может быть языком для вас.Его синтаксис больше похож на синтаксис других языков, чем синтаксис R. Python можно читать как устный язык. Такая удобочитаемость подчеркивает продуктивность разработки, в то время как нестандартный код R может стать препятствием в процессе программирования.
2 – Вы хотите работать в академических кругах или в промышленности?
Настоящая разница между Python и R заключается в том, что он готов к работе. Python – это полноценный язык программирования, и многие организации используют его в своих производственных системах.С другой стороны, R – это программа для статистического программирования, которую предпочитают многие академические круги. Лишь недавно из-за доступности библиотек R с открытым исходным кодом, промышленность начала использовать R.
3 – Вы хотите изучить «машинное обучение» или «статистическое обучение»?
Машинное обучение – это подполе искусственного интеллекта, а статистическое обучение – это подполе статистики. В машинном обучении больше внимания уделяется крупномасштабным приложениям и точности прогнозов; в то время как статистическое обучение делает упор на модели и их интерпретируемость, а также на точность и неопределенность.
Поскольку R был создан как статистический язык, он намного лучше подходит для статистического обучения. Он представляет собой образ мышления статистиков, поэтому любой, у кого есть формальный статистический опыт, может легко использовать R. Python, с другой стороны, является лучшим выбором для машинного обучения благодаря его гибкости для производственного использования, особенно когда задачи анализа данных необходимо интегрировать с веб-приложениями.
4 – Вы хотите много заниматься разработкой программного обеспечения?
Python для вас.Он намного лучше, чем R, интегрируется в более крупную схему инженерной среды. Однако для написания действительно эффективного кода вам, возможно, придется использовать язык более низкого уровня, такой как C ++ или Java, но предоставление оболочки Python для этого кода – хороший вариант для лучшей интеграции с другими компонентами.
5 – Хотите визуализировать ваши данные в красивой графике?
Для быстрого прототипирования и работы с наборами данных для построения моделей машинного обучения, R дюймов впереди.Python догнал некоторые достижения в Matplotlib, но R по-прежнему кажется намного лучше в визуализации данных (ggplot2, htmlwidgets, Leaflet).
Заключение
Python – это мощный универсальный язык, который программисты могут использовать для решения множества задач в области информатики. Изучение Python поможет вам разработать универсальный инструментарий для науки о данных, и это универсальный язык программирования, который вы можете довольно легко освоить, даже будучи непрограммистом.
С другой стороны, R – это среда программирования, специально разработанная для анализа данных, которая очень популярна в сообществе специалистов по науке о данных.Вам нужно будет понять R, если вы хотите далеко продвинуться в своей карьере в области науки о данных.
Реальность такова, что изучение обоих инструментов и их использование с учетом их сильных сторон может только улучшить вас как специалиста по данным. Универсальность и гибкость – отличительные черты любого специалиста по обработке данных, который находится на вершине своей области. Споры о Python и R ограничивают вас одним языком программирования. Вам следует выйти за рамки этого и использовать оба инструмента с учетом их сильных сторон. Использование большего количества инструментов только сделает вас лучше в качестве специалиста по данным.
Итог: победителями стали оба языка.
Дополнительные ресурсы:
Следуйте за DDS в Twitter .
R против Python для анализа данных – объективное сравнение
R против Python – мнения против фактов
Существуют десятки статей, в которых сравнивается R и Python с субъективной точки зрения, основанной на мнениях. И Python, и R – отличные варианты для анализа данных или любой работы в области науки о данных.
Но если ваша цель – выяснить, какой язык вам подходит, чтение чужого мнения может оказаться бесполезным.«Легко» для одного человека «сложно» для другого, и наоборот.
В этой статье мы сделаем кое-что другое. Мы объективно рассмотрим, как оба языка справляются с повседневными задачами обработки данных, чтобы вы могли рассмотреть их бок о бок и увидеть, какой из них лучше подходит для или для .
Имейте в виду, вам не нужно на самом деле понимать весь этот код, чтобы сделать здесь суждение! Мы дадим вам фрагменты кода R vs Python для каждой задачи – просто просмотрите код и подумайте, какой из них кажется вам более «читаемым».Прочтите объяснения и посмотрите, привлекает ли один язык больше внимания, чем другой.
Хорошие новости? Здесь нет неправильного ответа! Если вы хотите получить некоторые навыки программирования для работы с данными, курс Python или R будет отличным вариантом.
Почему нам следует доверять
Поскольку в этой статье мы будем представлять код бок о бок, вам действительно не нужно «доверять» чему-либо – вы можете просто посмотреть на код и сделать собственное суждение .
Для протокола, однако, мы не принимаем чью-либо сторону в дебатах о R и Python! Оба языка отлично подходят для работы с данными, и у обоих есть свои сильные и слабые стороны. Мы обучаем обоим, поэтому мы не заинтересованы в том, чтобы направлять вас друг к другу.
R против Python: импорт CSV
Давайте сразу перейдем к сравнению с реальным миром, начав с того, как R и Python обрабатывают импорт CSV!
(Сравнивая код, мы также будем анализировать набор данных об игроках НБА и их выступлениях в сезоне 2013–2014 годов.Вы можете скачать файл здесь, если хотите попробовать сами.)
R
библиотека (readr)
nba <- read_csv ("nba_2013.csv")
Python
импорт панд
nba = pandas.read_csv ("nba_2013.csv")
На обоих языках этот код загрузит файл CSV nba_2013.csv
, который содержит данные об игроках НБА за сезон 2013-2014 гг., в переменную nba.
.
Единственная реальная разница в том, что в Python нам нужно импортировать библиотеку pandas, чтобы получить доступ к Dataframes.В R, хотя мы могли импортировать данные с помощью базовой функции R read.csv ()
, использование библиотечной функции readr
read_csv ()
имеет преимущество большей скорости и согласованной интерпретации типов данных.
Фреймы данных доступны как в R, так и в Python - это двумерные массивы (матрицы), в которых каждый столбец может иметь разный тип данных. Вы можете думать о них как о программной версии таблицы данных или электронной таблицы. В конце этого шага файл CSV был загружен на обоих языках в фрейм данных.
Определение количества строк
R
Python
Хотя синтаксис и форматирование немного отличаются, мы можем видеть, что на обоих языках мы можем очень легко получить одну и ту же информацию.
Выходные данные выше говорят нам, что этот набор данных содержит 481 строку и 31 столбец.
Проверка первой строки данных
R
head (nba, 1)
возраст игрока bref_team_id
1 Quincy Acy SF 23 TOT [выходные данные усечены]
Python
nba.голова (1)
возраст игрока bref_team_id
0 Quincy Acy SF 23 TOT [вывод усечен]
Опять же, мы видим, что, несмотря на небольшие различия в синтаксисе, эти два языка очень похожи.
Стоит отметить, что Python здесь более объектно-ориентирован - head
- это метод объекта фрейма данных, тогда как R имеет отдельную функцию head
.
Это общая тема, которую мы увидим, когда начнем проводить анализ с этими языками.Python более объектно-ориентирован, а R более функционален.
Не волнуйтесь, если вы не понимаете разницы - это просто два разных подхода к программированию, и в контексте работы с данными оба подхода могут работать очень хорошо!
R против Python: поиск средних значений для каждой статистики
Теперь давайте найдем средние значения для каждой статистики в нашем наборе данных!
Столбцы, как мы видим, имеют такие названия, как fg
(забитые голы с игры) и ast
(передачи).Это сезонная статистика, и наш набор данных отслеживает их для каждой строки (каждая строка представляет отдельного игрока).
Если вам нужно более полное объяснение всей статистики, посмотрите здесь. Давайте посмотрим, как R и Python обрабатывают сводную статистику, найдя средние значения для каждой статистики в данных:
R
библиотека (purrr)
библиотека (dplyr)
nba%>%
select_if (is.numeric)%>%
map_dbl (среднее, na.rm = ИСТИНА)
игрок NA
pos NA
26 лет.5093555093555
bref_team_id NA
[усеченный вывод]
Python
nba.mean ()
возраст 26.509356
г 53.253638
gs 25.571726
[вывод усечен]
Теперь мы видим некоторые существенные различия в подходах R и Python.
В обоих случаях мы применяем функцию к столбцам фрейма данных. В Python при использовании метода mean для фрейма данных по умолчанию будет найдено среднее значение для каждого столбца.
В R все немного сложнее.Мы можем использовать функции из двух популярных пакетов, чтобы выбрать столбцы, которые мы хотим усреднить, и применить к ним функцию среднее значение
. Оператор %>%
, называемый «конвейером», передает вывод одной функции в качестве ввода следующей.
Взяв среднее значение строковых значений (другими словами, текстовые данные, которые не могут быть усреднены) просто приведет к NA
- недоступно. Мы можем взять среднее значение только числовых столбцов, используя select_if
.
Однако нам нужно игнорировать значения NA
, когда мы берем среднее значение (требующее от нас передать na.rm = TRUE
в функцию среднего ). Если мы этого не сделаем, мы получим
NA
для среднего значения столбцов, таких как x3p.
. Этот столбец составляет три процентных пункта. Некоторые игроки не сделали трехочковых, поэтому их процент отсутствует. Если мы попробуем функцию mean
в R, мы получим NA
в качестве ответа, если мы не укажем na.rm = TRUE
, что игнорирует значения NA
при взятии среднего.
Напротив, метод .mean ()
в Python уже по умолчанию игнорирует эти значения.
Создание парных диаграмм рассеяния
Один из распространенных способов исследования набора данных - это посмотреть, как разные столбцы соотносятся с другими. Давайте сравним столбцы ast
, fg
и trb
.
R
библиотека (GGally)
nba%>%
выберите (ast, fg, trb)%>%
ggpairs ()
Python
import seaborn as sns
импортировать matplotlib.pyplot как plt
sns.pairplot (nba [["ast", "fg", "trb"]])
plt.show ()
В конце концов, оба языка создают очень похожие графики.Но в коде мы можем видеть, как в экосистеме науки о данных R есть много меньших пакетов (GGally - это вспомогательный пакет для ggplot2, наиболее часто используемого пакета для построения графиков R) и больше пакетов визуализации в целом.
В Python matplotlib является основным пакетом для построения графиков, а seaborn - широко используемым слоем поверх matplotlib.
С визуализацией в Python обычно есть один основной способ сделать что-то, тогда как в R есть много пакетов, поддерживающих разные методы выполнения вещей (например, существует по крайней мере полдюжины пакетов для создания парных графиков).
Опять же, ни один из подходов не «лучше», но R может предложить большую гибкость только с точки зрения возможности выбрать пакет, который лучше всего подходит для вас.
Создание кластеров игроков
Еще один хороший способ исследования такого рода данных - создание кластерных графиков. Это покажет, какие игроки наиболее похожи.
(Сейчас мы просто собираемся создать кластеры; на следующем шаге мы построим их визуально.)
R
библиотека (кластер)
набор.семя (1)
isGoodCol <- function (col) {
сумма (is.na (col)) == 0 && is.numeric (col)
}
goodCols <- sapply (nba, isGoodCol)
кластеры <- kmeans (nba [, goodCols], центры = 5)
метки <- кластеры $ cluster
Python
из sklearn.cluster import KMeans
kmeans_model = KMeans (n_clusters = 5, random_state = 1)
good_columns = nba._get_numeric_data (). dropna (ось = 1)
kmeans_model.fit (good_columns)
label = kmeans_model.labels_
Для правильной кластеризации нам необходимо удалить все нечисловые столбцы и столбцы с пропущенными значениями ( NA
, Nan
и т. д.).
В R мы делаем это, применяя функцию к каждому столбцу и удаляя столбец, если он имеет какие-либо пропущенные значения или не является числовым. Затем мы используем пакет кластеров для выполнения k-средних и находим 5
кластеров в наших данных. Мы устанавливаем случайное начальное число, используя set.seed
, чтобы иметь возможность воспроизвести наши результаты.
В Python мы используем основной пакет машинного обучения Python, scikit-learn, чтобы соответствовать модели кластеризации k-средних и получать метки кластера. Мы выполняем очень похожие методы для подготовки данных, которые мы использовали в R, за исключением того, что мы используем методы get_numeric_data
и dropna
для удаления нечисловых столбцов и столбцов с пропущенными значениями.
Распределение игроков по кластерам
Теперь мы можем распределить игроков по кластерам, чтобы выявить закономерности. Один из способов сделать это - сначала использовать PCA, чтобы сделать наши данные двумерными, затем построить их и заштриховать каждую точку в соответствии с ассоциацией кластеров.
R
nba2d <- prcomp (nba [, goodCols], center = TRUE)
twoColumns <- nba2d $ x [, 1: 2]
clusterplot (twoColumns, labels)
Python
из sklearn.decomposition import PCA
pca_2 = PCA (2)
plot_columns = pca_2.fit_transform (хорошие_столбцы)
plt.scatter (x = столбцы_построения [:, 0], y = столбцы_построения [:, 1], c = метки)
plt.show ()
Выше мы построили диаграмму рассеяния наших данных и закрасили или изменили значок каждой точки данных в соответствии с ее кластером.
В R мы использовали функцию кластерного графика
, которая является частью кластерной библиотеки. Мы выполнили PCA с помощью функции pccomp
, встроенной в R.
В Python мы использовали класс PCA в библиотеке scikit-learn. Мы использовали matplotlib для создания сюжета.
И снова мы видим, что, хотя оба языка используют несколько разные подходы, конечный результат и количество кода, необходимого для его получения, очень похожи.
Разделение данных на наборы для обучения и тестирования
Если мы хотим использовать R или Python для контролируемого машинного обучения, рекомендуется разделить данные на наборы для обучения и тестирования, чтобы не переобучать.
Давайте сравним, как каждый язык справляется с этой общей задачей машинного обучения:
R
trainRowCount <- floor (0.8 * nrow (nba))
set.seed (1)
trainIndex <- образец (1: nrow (nba), trainRowCount)
поезд <- nba [trainIndex,]
test <- nba [-trainIndex,]
Python
train = nba.sample (frac = 0.8, random_state = 1)
test = nba.loc [~ nba.index.isin (train.index)]
Сравнивая Python и R, мы видим, что R имеет больше встроенных возможностей анализа данных, например floor
, sample
и set.seed
, тогда как в Python они вызываются через пакеты ( math.этаж
, random.sample
, random.seed
).
В Python последняя версия pandas поставляется с методом sample
, который возвращает определенную долю строк, случайно выбранных из исходного фрейма данных - это делает код намного более кратким.
В R есть пакеты для упрощения выборки, но они не намного лаконичнее, чем использование встроенной функции sample
. В обоих случаях мы устанавливаем случайное начальное число, чтобы результаты были воспроизводимы.
R против Python: одномерная линейная регрессия
Продолжая распространенные задачи машинного обучения, предположим, мы хотим спрогнозировать количество передач, сделанных одним игроком с игры, на игрока:
R
fit <- lm (ast ~ fg , данные = поезд)
предсказания <- предсказать (соответствие, тест)
Python
из sklearn.linear_model import LinearRegression
lr = Линейная регрессия ()
lr.fit (train [["fg"]], train ["ast"])
предсказания = lr.pred (test [["fg"]])
Python был немного более кратким на нашем предыдущем шаге, но теперь R здесь более краток!
В пакете Python Scikit-learn есть модель линейной регрессии, которую мы можем подбирать и генерировать прогнозы.
R полагается на встроенные функции lm
и прогнозируют
функции. предсказывает, что
будет вести себя по-разному в зависимости от типа подогнанной модели, которая передается в него - его можно использовать с множеством подогнанных моделей.
Вычисление сводной статистики для модели
Другая распространенная задача машинного обучения:
R
Summary (fit)
Звоните:
lm (формула = ast ~ fg, data = train)
Остатки: мин. 1 кв., Медиана, 3 кв., Макс.
-228.26 -35,38 -11,45 11,99 559,61
[усеченный вывод]
Python
import statsmodels.formula.api как sm
model = sm.ols (формула = 'ast ~ fga', данные = поезд)
Fit = model.fit ()
Fitted.summary ()
Деп. Переменная: ast
R-квадрат: 0,568
Модель: OLS
Прил. R-квадрат: 0,567
[усеченный вывод]
Как мы видим выше, нам нужно сделать немного больше в Python, чем в R, если мы хотим получить сводную статистику соответствия, например значение r-квадрат.
С помощью R мы можем использовать встроенную функцию сводки
для немедленного получения информации о модели. В Python нам нужно использовать пакет statsmodels, который позволяет использовать в Python многие статистические методы.
Мы получаем аналогичные результаты, хотя в целом статистический анализ на Python немного сложнее, а некоторые статистические методы, существующие в R, не существуют в Python.
Подобрать модель случайного леса
Наша линейная регрессия хорошо работала в случае одной переменной, но предположим, что мы подозреваем, что в данных могут быть нелинейности.Таким образом, мы хотим соответствовать модели случайного леса.
Вот как это можно сделать на каждом языке:
R
библиотека (randomForest)
predictorColumns <- c ("возраст", "mp", "fg", "trb", "stl", "blk")
rf <- randomForest (train [predictorColumns], train $ ast, ntree = 100)
предсказания <- предсказать (rf, test [predictorColumns])
Python
из sklearn.ensemble import RandomForestRegressor
predictor_columns = ["возраст", "mp", "fg", "trb", "stl", "blk"]
rf = RandomForestRegressor (n_estimators = 100, min_samples_leaf = 3)
рф.подходят (тренировка [predictor_columns], тренировка ["ast"])
predictions = rf.predict (test [predictor_columns])
Основное отличие здесь в том, что нам нужно было использовать библиотеку randomForest в R для использования алгоритма, тогда как она уже встроена в scikit-learn в Python.
Scikit-learn имеет унифицированный интерфейс для работы с множеством различных алгоритмов машинного обучения на Python. Обычно у каждого алгоритма есть только одна основная реализация.
С R существует множество небольших пакетов, содержащих отдельные алгоритмы, часто с несовместимыми способами доступа к ним.2)
4573.86778567462
Python
из sklearn.metrics import mean_squared_error
mean_squared_error (тест ["ast"], прогнозы)
4166.9202475632374
В Python библиотека scikit-learn имеет множество показателей ошибок, которые мы можем использовать. В R, вероятно, есть несколько небольших библиотек, которые вычисляют MSE, но сделать это вручную на любом языке довольно просто.
Вы можете заметить небольшую разницу в результатах здесь - почти наверняка это связано с настройкой параметров, и это не имеет большого значения.
(Если вы запустите этот код самостоятельно, вы также можете получить немного разные числа, в зависимости от версий каждого пакета и языка, который вы используете).
R против Python: веб-парсинг, часть 1
У нас есть данные об игроках НБА за 2013–2014 годы, но давайте проанализируем некоторые дополнительные данные, чтобы дополнить их.
Чтобы сэкономить время, мы просто взглянем на одну таблицу результатов финала НБА.
R
библиотека (RCurl)
url <- "http: //www.basketball-reference.com / boxscores / 201506140GSW.html "
data <- readLines (url)
Python
запросы на импорт
url = "http://www.basketball-reference.com/boxscores/201506140GSW.html"
data = requests.get (url) .content
В Python пакет запросов упрощает загрузку веб-страниц с согласованным API для всех типов запросов.
В R RCurl предоставляет аналогичный простой способ выполнения запросов.
Оба загружают веб-страницу с символьным типом данных.
Примечание: этот шаг не нужен для следующего шага в R, но показан для сравнения.
Веб-парсинг, часть 2
Теперь, когда у нас есть загруженная веб-страница с Python и R, нам нужно проанализировать ее, чтобы извлечь оценки для игроков.
R
библиотека (рвест)
страница <- read_html (url)
таблица <- html_nodes (страница, ".stats_table") [3]
rows <- html_nodes (таблица, "tr")
ячейки <- html_nodes (строки, "тд а")
команды <- html_text (ячейки)
extractRow <- function (rows, i) {
if (i == 1) {
возвращаться
}
row <- rows [i]
тег <- "td"
if (i == 2) {
тег <- "th"
}
items <- html_nodes (строка, тег)
html_text (элементы)
}
scrapeData <- function (team) {
teamData <- html_nodes (page, paste ("#", team, "_ basic", sep = ""))
строки <- html_nodes (teamData, "tr")
lapply (seq_along (строки), extractRow, rows = rows)
}
data <- lapply (team, scrapeData)
Python
из bs4 import BeautifulSoup
импорт ре
soup = BeautifulSoup (данные, 'html.парсер ')
box_scores = []
для тега в soup.find_all (id = re.compile ("[A-Z] {3,} _ basic")):
rows = []
для i строка в перечислении (tag.find_all ("tr")):
если я == 0:
Продолжить
elif я == 1:
tag = "th"
еще:
tag = "td"
row_data = [item.get_text () для элемента в row.find_all (тег)]
rows.append (row_data)
box_scores.append (rows)
На обоих языках этот код создаст список, содержащий два списка
- Шкала оценки для
CLE
- Шкала оценки для
GSW
Оба списка содержат заголовки , вместе с каждым игроком и его игровой статистикой.Сейчас мы не будем превращать это в дополнительные данные для обучения, но их можно легко преобразовать в формат, который можно будет добавить в наш фрейм данных nba
.
Код R более сложен, чем код Python, потому что нет удобного способа использования регулярных выражений для выбора элементов, поэтому нам нужно выполнить дополнительный синтаксический анализ, чтобы получить названия команд из HTML.
R также не рекомендует использовать для циклов
в пользу применения функций вдоль векторов. Для этого мы используем lapply
, но поскольку нам нужно обрабатывать каждую строку по-разному в зависимости от того, является ли она заголовком или нет, мы передаем в функцию индекс нужного элемента и весь список строк
.
В R мы используем rvest
, широко используемый R-пакет для извлечения необходимых данных. Обратите внимание, что мы можем передать URL-адрес непосредственно в rvest, поэтому предыдущий шаг фактически не нужен в R.
В Python мы используем BeautifulSoup, наиболее часто используемый пакет для очистки веб-страниц. Это позволяет нам перебирать теги и создавать список списков простым способом.
R против Python: что лучше? По-разному!
Теперь мы рассмотрели, как анализировать набор данных с помощью R и Python.И, как мы видим, хотя они работают немного по-разному, оба языка, как правило, требуют примерно одинакового количества кода для достижения одного и того же результата.
Конечно, есть много задач, в которые мы не углублялись, например, сохранение результатов нашего анализа, обмен результатами с другими, тестирование и подготовка к работе, а также создание большего количества визуализаций.
Можно еще многое обсудить по этой теме, но только на основании того, что мы сделали выше, мы можем сделать некоторые значимые выводы о том, чем они отличаются.
(Что на самом деле лучше, это вопрос личных предпочтений.)
R более функциональный, Python более объектно-ориентированный.
Как мы видели на примере таких функций, как lm
, prediction
и других, R позволяет функциям выполнять большую часть работы. Сравните это с классом LinearRegression
в Python и методом образца
в Dataframes.
С точки зрения анализа данных и науки о данных работает любой подход.
R имеет больше встроенных функций анализа данных, Python полагается на пакеты.
Когда мы смотрели на сводную статистику, мы могли использовать встроенную функцию summary
в R, но должны были импортировать пакет statsmodels
в Python. Dataframe - это встроенная конструкция в R, но ее необходимо импортировать через пакет pandas
в Python.
Python имеет «основные» пакеты для задач анализа данных, R имеет большую экосистему небольших пакетов.
С Python мы можем выполнять линейную регрессию, случайные леса и многое другое с помощью пакета scikit-learn. Он предлагает последовательный API и поддерживается в хорошем состоянии.
В R мы имеем большее разнообразие пакетов, но также большую фрагментацию и меньшую согласованность (линейная регрессия является встроенной, lm
, randomForest
- это отдельный пакет и т. Д.).
R в целом имеет больше статистической поддержки.
R был построен как статистический язык, и он показывает. statsmodels
в Python и других пакетах обеспечивают достойный охват статистических методов, но экосистема R намного больше.
Обычно нестатистические задачи выполнять на Python проще.
С хорошо поддерживаемыми библиотеками, такими как BeautifulSoup и запросы, парсинг веб-страниц в Python более простой, чем в R.
Это также относится к другим задачам, которые мы не рассматривали внимательно, например, сохранение в базы данных, развертывание веб-серверов и т. Д. или запуск сложных рабочих процессов.
Поскольку Python используется в самых разных отраслях и дисциплинах программирования, он может быть лучшим выбором, если вы совмещаете работу с данными с другими видами задач программирования.
С другой стороны, если вы сосредоточены на данных и статистике, R предлагает некоторые преимущества, поскольку он был разработан с упором на статистику.
Существует много параллелей между рабочим процессом анализа данных в обоих случаях.
Есть явные точки сходства между R и Python (pandas Dataframes были вдохновлены кадрами данных R, пакет rvest был вдохновлен BeautifulSoup ), и обе экосистемы продолжают укрепляться.
На самом деле удивительно, насколько похож синтаксис и подходы для многих общих задач на обоих языках.
R против Python: чему следует учиться?
В Dataquest мы были наиболее известны своими курсами Python, но мы полностью переработали и перезапустили наш Data Analyst в R path , потому что мы считаем R еще одним отличным языком для науки о данных.
Мы рассматриваем оба языка как взаимодополняющие, и у каждого языка есть свои сильные и слабые стороны.Как показывает это пошаговое руководство, любой язык можно использовать в качестве единственного инструмента анализа данных. Оба языка имеют много общего в синтаксисе и подходах, и вы не ошибетесь ни с одним из них.
В конечном итоге вы можете захотеть изучить Python и R, чтобы вы могли использовать сильные стороны обоих языков, выбирая один или другой для каждого проекта в зависимости от ваших потребностей.
И, конечно же, знание того и другого также делает вас более гибким кандидатом на работу, если вы ищете должность в мире науки о данных.
R против Python: что вы должны изучить?
Если вы хотите стать профессиональным специалистом по данным, вам нужно выучить хотя бы один язык программирования. Хороший вопрос: что мне изучать: R или Python? Но , как выбрать между двумя наиболее популярными языками программирования для анализа данных? Если вам интересно узнать об их сильных и слабых сторонах, читайте дальше!
Как специалист по данным, вы, вероятно, хотите и должны изучить язык структурированных запросов или SQL.SQL де-факто является языком реляционных баз данных, на котором по-прежнему хранится большая часть корпоративной информации. Но это только дает вам возможность извлекать данные - а не очищать их или запускать модели для них - и именно здесь на помощь приходят Python и R.
Небольшая справочная информация по RR была создана Россом Ихакой и Роберт Джентльмен - два статистика из Оклендского университета в Новой Зеландии. Первоначально он был выпущен в 1995 году, а в 2000 году была запущена стабильная бета-версия.Это интерпретируемый язык (вам не нужно запускать его через компилятор перед запуском кода) и имеет чрезвычайно мощный набор инструментов для статистического моделирования и построения графиков.
Для ботаников-программистов R - это реализация S - языка статистического программирования, разработанного в 1970-х годах в Bell Labs, - и он был вдохновлен Scheme - вариантом Lisp. Он также расширяемый, что позволяет легко вызывать объекты R из многих других языков программирования.
R является бесплатным и становится все более популярным за счет традиционных коммерческих статистических пакетов, таких как SAS и SPSS.Большинство пользователей пишут и редактируют свой код R с помощью RStudio, интегрированной среды разработки (IDE) для кодирования в R.
В качестве примечания: диаграммы выше и ниже показывают относительную популярность в зависимости от того, сколько GitHub тянет. производятся в год для этого языка. Они основаны на данных из GitHut 2.0 , созданного littleark .
Немного предыстории PythonPython также существует некоторое время.Первоначально он был выпущен в 1991 году Гвидо ван Россумом как язык программирования общего назначения. Как и R, это также интерпретируемый язык и обширная стандартная библиотека, которая позволяет легко программировать многие общие задачи без необходимости установки дополнительных библиотек. У Python есть одни из самых надежных библиотек кодирования. Они также доступны бесплатно.
Для науки о данных существует ряд чрезвычайно мощных библиотек Python. Существуют NumPy (эффективные численные вычисления), Pandas (широкий спектр инструментов для очистки и анализа данных) и StatsModels (общие статистические методы).У вас также есть TensorFlow, Keras и PyTorch (все библиотеки для построения искусственных нейронных сетей - системы глубокого обучения).
В наши дни многие специалисты по данным, использующие Python, пишут и редактируют свой код с помощью Jupyter Notebooks. Блокноты Jupyter позволяют легко создавать документы, которые представляют собой смесь прозы, кода, данных и визуализаций, что упрощает документирование вашего процесса, а другим специалистам по данным - возможность просматривать и воспроизводить вашу работу.
Выбор языков для науки о данныхИсторически сложилось так, что в сообществе специалистов по науке о данных и анализу данных был довольно равный раскол.R против Python в области науки о данных сводится к опыту ученого. Как правило, специалисты по данным с более сильным академическим или математическим опытом в области науки о данных предпочитали R, тогда как специалисты по данным, которые имели больше опыта в программировании, как правило, предпочитали Python.
Сильные стороны PythonПо сравнению с R, Python является языком общего назначения
Python является языком программирования общего назначения. Он отлично подходит для статистического анализа, но код Python будет более гибким и функциональным выбором, если вы хотите создать веб-сайт для обмена результатами или веб-службу для легкой интеграции с вашими производственными системами.
Python намного популярнее, чем
рэндВ индексе самых популярных языков программирования Tiobe за сентябрь 2019 года Python является третьим по популярности языком программирования (и вырос более чем на 2% за последний год) во всей компьютерной науке. и разработка программного обеспечения, тогда как R опустился за последний год с 18-го на 19-е место.
R против Python для глубокого обучения - Python снова стал более популярным
В большинстве серьезных проектов глубокого обучения используются либо TensorFlow, либо PyTorch.Оба хорошо работают с Python, и хотя сейчас для TensorFlow есть интерфейс R, с Python выполняется гораздо больше работы по глубокому обучению, чем с R. По мере того, как глубокое обучение становится применимым ко все более широкому кругу областей (оно началось с компьютерного зрения, теперь это становится подходом по умолчанию и для большинства задач обработки естественного языка), что становится все более важным.
Python также чрезвычайно популярен в области больших данных, искусственного интеллекта и машинного обучения. Наконец, его также можно использовать как интерфейсный язык и в веб-приложениях.
Python больше похож на другие языки, чем R
Хотя кто-то, имеющий опыт работы с Lisp, может довольно быстро изучить R, если у кого-то есть фоновое программирование на более популярном языке программирования общего назначения, таком как Java, C #, JavaScript , или Ruby - им будет легче освоить и внести свой вклад в проект, написанный на Python.
Заключение - лучше изучить Python, прежде чем изучать R
Есть еще много работ, где требуется R, поэтому, если у вас есть время, не помешает изучить оба, но я бы посоветовал в наши дни, Python становится доминирующим языком программирования для специалистов по данным и лучшим выбором в первую очередь для изучения.
Flatiron School подробно рассматривает Python в нашей программе Data Science, нашем 15-недельном курсе, который научит вас всем навыкам, необходимым для начала карьеры в области данных. Вот как попасть на этот курс по науке о данных.
Если вы думаете о новой карьере, но не знаете, как профинансировать свой учебный курс, прочтите «Как оплатить учебный курс по программированию» или посетите страницу «Обучение и финансирование».
Python против R для науки о данных - и почему вы зря тратите свое время
Хотя у меня может возникнуть соблазн сразу порекомендовать Python (Python - мой основной, но у меня есть некоторые практические знания о R), Я хочу представить объективную оценку эффективности двух языков для новичка.Это главным образом потому, что правильный выбор определенно будет зависеть от вашей конкретной ситуации.
Первый и, вероятно, самый важный фактор, который вы должны учитывать, - это причина, ПОЧЕМУ вы хотите учиться. Если вы, например, обученный биолог и хотите овладеть некоторыми навыками программирования, чтобы лучше понимать свой набор данных, или вы знакомы с другими научными языками программирования, такими как MATLAB, то вам следует рассмотреть возможность просмотра некоторых руководств по R на YouTube, потому что это быть для вас проще и интуитивно понятнее, чем Python.Или, если вы инженер-программист, владеющий другими языками, такими как C / C ++ и Java, и хотите перейти на Data Science, вам подойдет Python, как и большинство других популярных языков программирования, Python - это объектно-ориентированное программирование. (ООП), и он будет для вас гораздо более интуитивным, чем R. Или, может быть, вы недавно читали об увлекательной области науки о данных и хотели бы погрузиться в нее. В этом случае любой из них действительно подойдет, и это будет больше зависеть от других факторов, чем от этого.
Если вы изучаете новый язык, у вас может быть одно огромное преимущество - это поддержка сообщества. Программисты ожидают помощи от сообщества и обычно считают важным навыком. Новичку может быть сложно узнать, как получить помощь, особенно потому, что в Интернете не так много ресурсов по искусству получения помощи от сообщества. Очень важно развивать интуицию и знать, что спрашивать, если в коде есть ошибка. Если вы знаете кого-то, кто хорошо разбирается в Python, или если другой исследователь в вашей лаборатории работал с R, вам лучше всего будет использовать то, что он знает, потому что тогда вы всегда можете задать им вопросы, если вы застряли.
Одно из основных различий утилит Python и R состоит в том, что первый язык является чрезвычайно универсальным по сравнению с последним. Python - это полноценный язык программирования, что означает, что вы можете собирать, хранить, анализировать и визуализировать данные, а также создавать и развертывать конвейеры машинного обучения в производственной среде или на веб-сайтах, используя только Python. С другой стороны, R предназначен исключительно для статистики и анализа данных, с графиками, которые лучше и более настраиваемыми, чем в Python.R использует подход Grammar of Graphics для визуализации данных в своей библиотеке # ggPlot2, и это обеспечивает большую интуитивную настраиваемость, которой не хватает Python. Возможно, это немного упрощено, но может быть оправдано сказать, что если вы хотите быть аналитиком данных, R должен быть вашим предпочтительным выбором, а если вы хотите быть специалистом по данным, Python - лучший вариант. Это дилемма обобщения и специализации.
Наука о данных как отдельная область возникла только в последние десять лет и, как следствие, постоянно развивается.Но неизменно то, что конвейер данных все больше и больше автоматизируется с каждым днем. Сотрудники с множеством навыков, таких как инженерия данных, визуализация данных, разработка машинного обучения, интеграция облачных сервисов и развертывание моделей, всегда будут более востребованы, чем те, кто специализируется только на одном аспекте рабочего процесса Data Science. В значительной степени прогресс в этой области был обусловлен автоматизацией, и только сотрудники с хорошими навыками программирования сопротивляются ей.Специализация на создании впечатляющих моделей машинного обучения не поможет в ближайшем будущем, если, конечно, вы не будете в этом очень хороши.
В настоящее время ситуация в отрасли такова, что на уровне новичка слишком много кандидатов, которые «довольно» приличны для слишком небольшого количества доступных вакансий младшего специалиста в области Data Science. Но на несколько более высоких должностях не хватает опытных или обладающих нужными навыками практиков. И для того, чтобы сделать следующий шаг в своей карьере, вам, в конечном итоге, потребуется в какой-то степени понимать и реализовывать другие этапы рабочего процесса.Так почему бы не дать себе максимальную вероятность успеха?
Если вы все еще не уверены в этом, лучший совет, который я мог бы дать, - просто выбрать Python и начать учиться. Позже, когда у вас будет достаточно хорошее практическое знание этого языка, вы также сможете изучить основы R. Но если вы действительно не чувствуете себя комфортно с Python, тогда вы знаете, что делать. Вашим главным приоритетом как новичка должно быть понимание основных концепций Data Science и понимание того, как применять эти концепции в первую очередь в реальных сценариях.Настройка среды кодирования может быть довольно сложной задачей для человека, не имеющего опыта программирования или информатики. Однако его настройка и начало обучения с R будут гораздо более плавными, чем с Python. Слишком многие из нас придерживаются идеи о том, чтобы быть специалистом по данным, и недостаточно на самом деле предпринимают действия , чтобы им стать.
П.С. Если вам нужны более короткие и содержательные статьи о данных, программировании и о том, как биолог проходит через революцию данных, подпишитесь на мой блог.
Спасибо!
Какой язык лучше для проектов в области науки о данных?
Intro: почему этот текст и что внутри?
У новичков в Data Science часто возникает вопрос, какой язык программирования выбрать в качестве основного - конкретный, созданный специально для обработки данных - R, или универсальный Python, который популярен и в других областях. Владельцы технологического бизнеса и стартапы также задаются вопросами, например, когда Python или R являются правильным выбором для Data Science, какой специалист будет более полезен для команды Data Science или какой язык выбрать для машинного обучения: Python или JavaScript.
Оба языка (Python и R) поддерживаются лицензиями с открытым исходным кодом (в отличие от коммерческих инструментов SAS и SPSS или проприетарного MATLAB) и традиционно считаются самыми популярными. Быстрое развитие науки о данных приводит к быстрой смене позиций этих двух языков программирования. В этой статье мы проанализируем тенденции противостояния Python и R в области науки о данных, преимущества и недостатки этих двух языков программирования и возможно ли их объединение в 2020 году.
Python против R для науки о данных: что такое Python?
Дизайн любого языка программирования подразумевает компромисс. Языки программирования низкого уровня трудны для изучения, требуют от программиста большого количества ручной работы, но позволяют гибко оптимизировать код и повышать производительность. Языки высокого уровня позволяют программистам решать одни и те же задачи более удобно и просто, но имеют меньше методов и инструментов для оптимизации. Один из таких языков программирования - Python.
С момента своего выпуска в 1991 году язык программирования Python стал чрезвычайно популярным и широко использовался при обработке данных.Вот несколько причин его популярности:
- Объектно-ориентированный язык.
- Универсальный.
- Он имеет множество расширений и невероятную поддержку сообщества.
- Просто и легко понять и изучить.
- Pandas, NumPy и scikit-learn делают Python отличным выбором для машинного обучения.
Однако, в отличие от R, Python не имеет специализированных пакетов для статистических вычислений. Основная аудитория Python - разработчики программного обеспечения и веб-разработчики.Большинство функциональных модулей были созданы специально для них, которые позволяют программистам Python загружать данные, выполнять с ними сложные операции, моделировать и анализировать.
Python против R для науки о данных: что такое R?
R - это язык программирования для статистической обработки данных и работы с графикой, а также бесплатная вычислительная среда с открытым исходным кодом в рамках проекта GNU. Этот язык был создан как аналог S, разработанный в Bell Labs, и является его альтернативной реализацией, хотя между языками есть существенные различия, большая часть его кода на языке S выполняется в среде R.
Он широко используется в качестве статистического программного обеспечения для анализа данных и фактически стал стандартом для статистических программ.
Язык и среда доступны по лицензии GNU GPL. R использует интерфейс командной строки, хотя доступно несколько графических пользовательских интерфейсов, таких как пакет R Commander, RKWard, RStudio, Weka, Rapid Miner, KNIME, а также инструменты для интеграции в офисные пакеты.
В 2010 году R был назван одним из победителей в категории «Программное обеспечение для разработки открытых приложений» журнала Infoworld.
Первый выпуск программирования R для науки о данных состоялся в 1995 году, и с тех пор он стал одним из наиболее часто используемых инструментов для науки о данных.
- Он состоит из пакетов, которые удовлетворяют потребности практически любого статистического приложения.
- В настоящее время CRAN содержит более 10 тысяч пакетов.
- CRAN имеет отличные библиотеки визуализации, такие как ggplot2.
- Возможность автономного анализа.
- R - это также среда, в которой есть набор программных пакетов, с помощью которых специалисты могут выполнять вычисления для построения графиков и обработки данных.
- R широко используется в проектах статистических исследований.
- R очень похож на другой язык программирования - S.
- R компилируется и работает в UNIX, Windows, macOS, FreeBSD и Linux.
- C может использоваться для непосредственного обновления объектов в R. Также он обеспечивает эффективную работу с векторами и матрицами.
- Авторы R были вдохновлены S +, поэтому многие программисты R знают, как кодировать на S.
С точки зрения производительности, программирование на R для науки о данных не самое быстрое и иногда может потреблять много памяти при работе с большими наборами данных.
Python против R для науки о данных: преимущества и недостатки
Давайте рассмотрим преимущества и недостатки Python и R, отмеченные аналитиками данных, которые их используют. У обоих языков программирования есть свои плюсы и минусы, некоторые из них заметны, некоторые можно легко проигнорировать.
Преимущества R для науки о данных
- Язык создан специально для анализа данных: запись языковых конструкций понятна многим специалистам.Удобные и понятные языковые конструкции - несомненное преимущество для непрофессиональных программистов.
- Многие функции, необходимые для анализа данных, являются встроенными функциями языка. Проверка статистических гипотез часто занимает всего несколько строк кода.
- Установка IDE (RStudio) и необходимых пакетов обработки данных предельно упрощена.
- R имеет множество структур данных, операторов и параметров. Он включает в себя множество вещей: от массивов до матриц, от циклов до рекурсии, а также интеграцию с другими языками программирования, такими как C, C ++ и Fortran.
- R в основном используется для статистических вычислений. В нем есть набор алгоритмов, которые используются инженерами и консультантами по машинному обучению. Он используется в анализе временных рядов, классификации, кластеризации, линейном моделировании и т. Д.
- Удобный репозиторий пакетов и обилие готовых тестов практически для всех методов Data Science и машинного обучения.
- Несколько качественных пакетов для визуализации данных под разные задачи (ggplot2, lattice, ggvis, googleVis, rCharts и др.)). Возможно построение двухмерной графики (диаграммы, коробчатые диаграммы), а также трехмерных моделей.
- Базовые статистические методы реализованы в виде стандартных функций, что значительно увеличивает скорость разработки.
- Для R существует огромное количество дополнительных пакетов на любой вкус. Это может быть пакет для анализа текста (так называемое моделирование естественного языка) или пакет с данными из Twitter. С каждым днем пакетов становится все больше, и большинство из них собирается в одном месте - в специальном репозитории CRAN.
Недостатки R для науки о данных
Как и любой язык программирования, R имеет ряд недостатков. Каждый программист самостоятельно решает, какой недостаток нельзя игнорировать, а какой - не замечать.
- Низкая производительность. Однако в системе есть пакеты, которые позволяют программистам увеличивать скорость (pqR, renjin, FastR, Riposte и т. Д.). При работе с большими данными рекомендуется использовать библиотеки data.table и dplyr.
- Специфика по сравнению со стандартными языками программирования, поскольку язык узкоспециализированный (например, индексация векторов начинается с номера один вместо нуля).
- Поскольку большинство кодов в R написано людьми, не знакомыми с этим программированием, удобочитаемость некоторых программ оставляет желать лучшего. Кроме того, не все пользователи следуют рекомендациям по созданию программного кода.
- R - отличный инструмент для статистики и автономных приложений, но работает не так хорошо в тех областях, где традиционно используются языки общего назначения.
- Можно выполнять одни и те же функции по-разному. Синтаксис некоторых задач не совсем очевиден.
- Из-за большого количества библиотек документация по некоторым из менее популярных не может считаться полной.
Преимущества Python для науки о данных
Python - широко используемый язык программирования. Многим программистам он нравится своей простотой. Если он простой, это не значит, что у него низкая функциональность.
- Универсальный многофункциональный язык: вы можете выполнять не только обработку данных, но и их поиск, а также использовать результат обработки в веб-приложении.
- Интерактивность языка программирования (вычисления без компиляции): программисты также ценят Python за встроенный интерпретатор, который позволяет кодировать на ходу. В Data Science это актуально для интерактивной проверки гипотез.
- Динамическое развитие языка: этот язык быстро и интенсивно развивается. С каждой версией производительность языка увеличивается, а синтаксис улучшается. Например, в версии 3.8 появился новый оператор моржа -: =, что является достаточно серьезным событием для любого языка.В языках низкого уровня, таких как C ++ или Java, скорость изменений заметно ниже - это утверждается специальным комитетом, который собирается каждые несколько лет.
- Интегрированные возможности для оптимизации исходного кода: встроенный интерпретатор полезен для разработчиков. Поскольку Python предлагает неявную и динамическую типизацию данных, можно оценить степень оптимизации только во время выполнения кода, для чего интерпретатор полезен. Он переводит исходный код в машинные инструкции, которые могут предложить идею для оптимизации.Например, сравнивая две инструкции, вы можете понять, почему одна работает быстрее, чем другая. Это важное преимущество для работы с большими данными, потому что помимо анализа данных предстоит еще много работы по совершенствованию алгоритмов их обработки.
- В Python процесс стандартизации более открыт для сообщества, каждый может выдвигать свои собственные идеи, и их число быстро растет.
Недостатки Python для науки о данных
Несмотря на то, что Python является объектно-ориентированным языком программирования, он имеет некоторые недостатки для Data Science.Может быть, они не критичны, но каждый программист или команда специалистов по анализу данных, прежде чем приступить к работе над проектом в области науки о данных, решает самостоятельно.
- Визуализация. Эта возможность является важным критерием при выборе программного обеспечения для анализа данных. Хотя в Python есть приятные библиотеки для визуализации, такие как Seaborn, Bokeh и Pygal, выбор может быть слишком велик. Более того, по сравнению с R визуализация в Python намного сложнее, а ее результаты иногда не очень ясны.
- Отсутствие общего репозитория и отсутствие альтернатив для многих библиотек R.
- Python - это язык с динамической типизацией. Это значительно ускоряет разработку программы, но также усложняет поиск трудно отслеживаемых ошибок, вызванных неправильным присвоением разных данных одним и тем же переменным.
- Глобальная блокировка интерпретатора. На данный момент это основная проблема производительности Python. Это также связано с плохой реализацией многопоточности. Код GIL не изменился с момента выхода первой версии языка программирования.Это ясно указывает на то, что он устарел.
Python vs R для науки о данных: можно ли объединить преимущества обоих языков?
Битва между Python и R за анализ данных продолжается. В сообществе Data Science есть люди, которые используют Python и R, но их процент невелик. С другой стороны, часто бывает, что приверженцы только одного языка программирования хотели бы использовать некоторые функции другого языка.
Например, пользователи R иногда жаждут объектно-ориентированных функций, встроенных в язык Python.Точно так же некоторые пользователи Python мечтают о широком диапазоне статистических распределений, доступных в языке R.
В настоящее время растет число специалистов по данным, которые знают оба языка и используют один или другой по мере необходимости. Возникает вопрос - можно ли объединить преимущества языков в одном приложении? Например, казалось бы логичным иметь возможность вызывать библиотеку R из Python, а статистикам, знакомым с Python, запускать программы на Python непосредственно из R.Оба языка могут выполнять эти операции с использованием сторонних библиотек:
- rPython, rJython, SnakeCharmR, PythonInR, reticulate - запускать код Python из R;
- RPy2, pyRserve, PypeR - запускать код Python из R.
Такие решения позволяют не переключаться с одной системы на другую и создавать программы из готовых решений в рамках одного приложения, используя современные модули Python и ранее реализованные специфические пакеты из R.
И R, и Python - надежные языки, и одного из них на самом деле достаточно для задачи анализа данных.Однако у них есть свои плюсы и минусы, и если вы используете сильные стороны каждого из них, команда по анализу данных сможет сделать проект намного лучше. В любом случае, знание того и другого дает больше гибкости и увеличивает шансы работать в разных средах.
Сводка
Оба языка появились в 90-х годах и уже успели создать мощные экосистемы пользователей. Например, в обоих сообществах много активных участников на Stack Overflow (Python, R). Вначале R использовался только в академической среде, но по мере роста интереса к Data Science он перешел и в коммерческие приложения.Однако в последние годы Python приобрел множество инструментов для анализа данных и сумел обеспечить необходимую конкуренцию. Возможность использовать Python для быстрого встраивания анализа данных в веб-приложения делает Python даже очень полезным.
Выбор программиста зависит от задач, которые вы собираетесь выполнять, и времени, которое вы готовы посвятить разработке. Если вы планируете создать отличный проект в области науки о данных, мы рекомендуем программиста, знающего оба языка.Человек со знанием концепций и библиотек R будет на шаг впереди людей, работающих только с Python. Человек, знакомый с R, будет особенно полезен, если ваша команда по анализу данных хочет использовать не только готовые алгоритмы в библиотеках Python, но и применить всю интеллектуальную мощь, накопленную статистиками.
Все еще не уверены, какой программатор вам нужен? Сообщите нам, мы поможем вам принять решение и предоставим вам специалистов по работе с данными, владеющих Python или R, которые подходят для вашего продукта и вашей отрасли.В нашей компании самый широкий список специалистов по Python и R, которые идеально подойдут вашей компании / проекту / команде по анализу данных.
Как выбрать между изучением Python или R First
Udacity теперь имеет наноразмерные программы Programming for Data Science как на Python, так и на R! Выучить Python
Выучить R
Если вас интересует карьера в области данных и вы знакомы с набором навыков, которые необходимо освоить, вы знаете, что Python и R - два самых популярных языка для анализа данных.Если вы сравниваете Python с R для вашего первого языка, прочтите несколько советов.
Когда дело доходит до анализа данных, и Python, и R просты (и бесплатны) в установке и относительно легки в использовании. Если вы новичок в мире науки о данных и не имеете опыта работы ни с одним языком, ни с программированием в целом, имеет смысл не знать, изучать ли сначала R или Python.
К счастью, вы не ошибетесь ни с одним из них.
Чехол для RR имеет долгую и надежную историю и надежное поддерживающее сообщество в индустрии данных.В совокупности эти факты означают, что вы можете рассчитывать на онлайн-поддержку других специалистов в этой области, если вам потребуется помощь или возникнут вопросы по использованию языка. Кроме того, существует множество публично выпущенных пакетов, фактически более 5000, которые вы можете загрузить для использования в тандеме с R, чтобы расширить его возможности до новых высот. Это делает R отличным инструментом для проведения сложного исследовательского анализа данных. R также хорошо интегрируется с другими компьютерными языками, такими как C ++, Java и C.
Когда вам нужно выполнить сложный статистический анализ или построение графиков, R - ваш помощник.Обычные математические операции, такие как умножение матриц, работают прямо из коробки, а синтаксис языка, ориентированный на массивы, упрощает перевод математики в код, особенно для тех, кто не имеет опыта программирования или имеет минимальный опыт в программировании.
Чехол для PythonPython - это язык программирования общего назначения, который может делать практически все, что вам нужно: манипулирование данными, инженерию данных, обработку данных, парсинг веб-сайтов, создание веб-приложений и многое другое.Его проще освоить, чем R, если вы ранее изучали объектно-ориентированный язык программирования, такой как Java или C ++.
Кроме того, поскольку Python является объектно-ориентированным языком программирования, с ним проще писать крупномасштабный, поддерживаемый и надежный код, чем с R. Используя Python, код прототипа, который вы пишете на своем собственном компьютере, можно использовать как производственный код, если необходимо.
Хотя Python не имеет такого исчерпывающего набора пакетов и библиотек, доступных для профессионалов в области данных, как R, сочетание Python с такими инструментами, как Pandas, Numpy, Scipy, Scikit-Learn и Seaborn, сделает вас чертовски близкими.Этот язык также постепенно становится все более полезным для таких задач, как машинное обучение, а также для статистической работы от базового до среднего (ранее - только область R).
Выбор между Python и RВот несколько рекомендаций, чтобы определить, начинать ли изучение языка данных с Python или с R.
Личные предпочтения
Выберите язык в соответствии с вашими личными предпочтениями, он будет более естественным для вас и который легче усвоить с самого начала.Чтобы дать вам представление о том, чего ожидать, математики и статистики предпочитают R, тогда как компьютерные ученые и инженеры-программисты предпочитают Python. Лучшая новость заключается в том, что если вы научитесь хорошо программировать на одном языке, довольно легко освоить и другие.
Выбор проекта
Вы также можете сделать вызов Python vs. R на основе проекта, над которым, как вы знаете, вы будете работать в своих исследованиях данных. Если вы работаете с данными, которые были собраны и очищены для вас, и ваша основная цель - анализ этих данных, выберите R.Если вам нужно работать с грязными или беспорядочными данными или собирать данные с веб-сайтов, файлов или других источников данных, вам следует начать изучать Python или продвигаться вперед.
Сотрудничество
После того, как вы освоите основы анализа данных, еще одним критерием для оценки того, на каком языке следует развивать свои навыки, является язык, который используют ваши товарищи по команде. Если вы все буквально говорите на одном языке, это значительно упростит совместную работу, а также обучение друг у друга.
Рынок труда
Рабочих мест, требующих навыков в Python по сравнению с R, за последние несколько лет также увеличилось.
График через r4stats
Тем не менее, как видите, Python начал обгонять R в задачах обработки данных. Благодаря расширению экосистемы Python инструменты почти для всех аспектов вычислений доступны на этом языке. Кроме того, поскольку Python можно использовать для разработки веб-приложений, он позволяет компаниям использовать перекрестное взаимодействие между разработчиками Python и группами специалистов по анализу данных.Это большое благо, учитывая нехватку экспертов по данным на текущем рынке.
Итог
В общем, вы не можете ошибиться, выберете ли вы сначала изучение Python или сначала R для анализа данных. У каждого языка есть свои плюсы и минусы для разных сценариев и задач. Кроме того, на самом деле существуют библиотеки для использования Python с R и наоборот, поэтому изучение одной не помешает вам изучить и использовать другую. Возможно, лучшее решение - использовать приведенные выше рекомендации, чтобы решить, с какого из двух языков начать, а затем укрепить свой набор навыков, изучив другой.