Меню Рубрики

Какой язык программирования для анализа данных

Если достаточно образованного программиста спросить о современных языках обработки данных, то в первой тройке неизменно окажется R, даже несмотря на то, что многие его и языком не считают. Придуманный в 1997 году, как альтернатива платным продуктам MATLAB и SAS, он медленно, но верно набирал популярность. Сегодня такие компании, как Google и Facebook используют R, чтобы справляться с такими потоками информации, которые и вообразить сложно. Фильтруйте, моделируйте, представляйте данные при помощи всего нескольких строк кода — всё это про R.

В 2013 году проводился опрос в США среди специалистов в области Big Data на предмет выявления наиболее популярного используемого языка. Победил с 61% именно R. Угадайте, кто занял второе место?

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

Язык, который возник совсем недавно, но уже попал на радары всех специалистов Big Data. Он прост и масштабируем, как Python, при этом эффективен, как R. Пока язык Julia молод, ему не хватает мелких доработок, библиотек и элементарной человеческой поддержки, но сомнений в его безоблачном будущем практически нет.

Ну да, какой рейтинг самых популярных языков программирования без участия Java. Пусть это даже не профильная область применения, Java имеет такую армию поклонников-энтузиастов, что создание специальных надстроек и библиотек — дело времени. Загляните внутрь LinkedIn, Facebook, Twitter — и в обработке данных вы найдёте следы Java. Да, у этого языка нет таких возможностей статистического моделирования, какие естьу Python и R, но если прототипирование не является важной задачей — Java может стать отличным решением.

Если вы никогда ранее не слышали об этом языке, то можете просто ознакомиться со статистическими данными ,чтобы понять насколько успешен сегодня и насколько перспективен завтра будет Scala. Java-подобный язык может быть развёрнут под веб и платформу Android. Но главное его преимущество заключается в удобстве и гибкости, которые не дадут вам многие другие языки из Big Data. Twitter, Siemens и LinkedIn подтверждают.

Если не говорить о MATLAB в контексте обработки и моделирования данных, то о чём вообще тогда стоит говорить? Да, возможно это не лучший язык, не самая доступная среда, но возможности, которые вы получаете, согласившись на оба этих компромисса — практически безграничны. Наука, обработка потоковой информации, анализ полученных и прогнозируемых данных — всё это идеальная область для развёртывания MATLAB.

В этом рейтинге мы просто физически не могли обойти и невероятно популярное детище Google. Go активно разрабатывается, внедряется, постепенно завоевывает позиции в рейтинге популярности, и уж абсолютно точно он не хуже подавляющего большинства своих конкурентов. Он прост, он удобен, он бесконечно перспективен, в конце концов он специально создан для Big Data. А что ещё нужно, чтобы получить хорошую рекомендацию?

Kafka — это не совсем язык, а скорее платформа, написанная на Java и Scala, для обработки потоковых запросов. Был разработан компанией LinkedIn для внутренних потребностей в 2011 году, но сегодня используемые алгоритмы не без успеха внедрены в такие гиганты, как Uber, Netflix, PayPal, eBay и многие другие.

Это ещё один набор утилит, библиотек и надстроек, которые вполне можно принять за отдельный язык, адаптирующих широко распространённый Java к обработке Big Data. Его активно используют такие гиганты, как Facebook и Yahoo!, а разработан он небезызвестной Apache Software Foundation, что автоматически заставляет поставить на Hadoop клеймо качества.

Мир IT и не только поглощен обработкой беспредельного количества данных. Будь то социальные сети или научная информация — везде требуются инструменты, значительно превышающие по возможностям устаревшие программы, вроде Excel. Требуются принципиально иные подходы и совершенные алгоритмы для их реализации. Вот 9 языков, с помощью которых работа с Big Data доставит вам чуть меньше головной боли.

Если достаточно образованного программиста спросить о современных языках обработки данных, то в первой тройке неизменно окажется R, даже несмотря на то, что многие его и языком не считают. Придуманный в 1997 году, как альтернатива платным продуктам MATLAB и SAS, он медленно, но верно набирал популярность. Сегодня такие компании, как Google и Facebook используют R, чтобы справляться с такими потоками информации, которые и вообразить сложно. Фильтруйте, моделируйте, представляйте данные при помощи всего нескольких строк кода — всё это про R.

В 2013 году проводился опрос в США среди специалистов в области Big Data на предмет выявления наиболее популярного используемого языка. Победил с 61% именно R. Угадайте, кто занял второе место?

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

Язык, который возник совсем недавно, но уже попал на радары всех специалистов Big Data. Он прост и масштабируем, как Python, при этом эффективен, как R. Пока язык Julia молод, ему не хватает мелких доработок, библиотек и элементарной человеческой поддержки, но сомнений в его безоблачном будущем практически нет.

Ну да, какой рейтинг самых популярных языков программирования без участия Java. Пусть это даже не профильная область применения, Java имеет такую армию поклонников-энтузиастов, что создание специальных надстроек и библиотек — дело времени. Загляните внутрь LinkedIn, Facebook, Twitter — и в обработке данных вы найдёте следы Java. Да, у этого языка нет таких возможностей статистического моделирования, какие естьу Python и R, но если прототипирование не является важной задачей — Java может стать отличным решением.

Если вы никогда ранее не слышали об этом языке, то можете просто ознакомиться со статистическими данными ,чтобы понять насколько успешен сегодня и насколько перспективен завтра будет Scala. Java-подобный язык может быть развёрнут под веб и платформу Android. Но главное его преимущество заключается в удобстве и гибкости, которые не дадут вам многие другие языки из Big Data. Twitter, Siemens и LinkedIn подтверждают.

Если не говорить о MATLAB в контексте обработки и моделирования данных, то о чём вообще тогда стоит говорить? Да, возможно это не лучший язык, не самая доступная среда, но возможности, которые вы получаете, согласившись на оба этих компромисса — практически безграничны. Наука, обработка потоковой информации, анализ полученных и прогнозируемых данных — всё это идеальная область для развёртывания MATLAB.

В этом рейтинге мы просто физически не могли обойти и невероятно популярное детище Google. Go активно разрабатывается, внедряется, постепенно завоевывает позиции в рейтинге популярности, и уж абсолютно точно он не хуже подавляющего большинства своих конкурентов. Он прост, он удобен, он бесконечно перспективен, в конце концов он специально создан для Big Data. А что ещё нужно, чтобы получить хорошую рекомендацию?

Kafka — это не совсем язык, а скорее платформа, написанная на Java и Scala, для обработки потоковых запросов. Был разработан компанией LinkedIn для внутренних потребностей в 2011 году, но сегодня используемые алгоритмы не без успеха внедрены в такие гиганты, как Uber, Netflix, PayPal, eBay и многие другие.

Это ещё один набор утилит, библиотек и надстроек, которые вполне можно принять за отдельный язык, адаптирующих широко распространённый Java к обработке Big Data. Его активно используют такие гиганты, как Facebook и Yahoo!, а разработан он небезызвестной Apache Software Foundation, что автоматически заставляет поставить на Hadoop клеймо качества.

источник

Какой язык лучше для анализа данных и статистики: Python vs R? С каким работают ведущие data science специалисты и почему?

R — язык для обучения, исследований и быстрого прототипирования. Не согласен с тем, что он «сложнее Python в освоении»: наверное, он сложнее для программиста, но для человека не изнуренного Паскалем он намного проще, поскольку более человечен. Таков мой личный опыт преподавания R с 2011 года. Он специализированный, прощает многие ошибки непрофессиональных пользователей (которые Python не простит), его легко инсталлировать; он отлично работает с векторами — это вообще его идеология, заточенная под анализ данных; но он неэффективно работает с памятью и он медленный. Ориентация R на векторы и матрицы становится препятствием для опытных программистов, но для пользователей Excel это вещь интуитивно понятная: простые люди не умеют циклы (в R их лучше избегать — все медленно), а обработку данных мыслят как обработку колонок. По сравнению с Питоном, установка новых пакетов в R — это рай: все зависимости подгружаются сами, никогда не произойдет так, что вы день торчите на форумах, пытаясь понять что и откуда нужно подкачать, чтобы подкачать то, что позволит вам подкачать то, что позволит вам установить штуку, которая даст наконец возможность подкачать нужный пакет (причем этих штук обязательно окажется несколько, или несколько версий, или их нужно будет собирать у вас на компе, и т.п.) Узкая специализация, бесплатность, ориентация на непрограммистов и долгий срок жизни привели к тому, что вокруг R сложилась колоссальная экосистема: stackoverflow, масса форумов и блогов (r-bloggers.com), огромное количество учебников и учебных курсов, в том числе онлайновых, но самое главное (как отметил один из предыдущих ораторов) — в R реализовано все, что существует в data science, и даже сверх того. Все это определило сценарии использования R. Например, люди (специалисты по риск-менеджменту и анализу рынка), которые делают информационно-аналитическую платформу Bloomberg, сначала прототипируют модели в R, а потом программисты переписывают код на более эффективном C++. Но даже копирование вектора в C++ — это целая история, с точки зрения пользователя R. Важный момент — что исследователи-непрограммисты (они же часто и преподаватели экономики, финансов, социологии, психологии, биологии, зоологии и проч.) переходят на R в силу вышеописанных причин. А студенты учат язык, который знают их преподаватели 🙂 В итоге мы имеем большую комьюнити, в которой все знают R и используют его для коммуникации научных результатов (Sweave в помощь).

Python — это современный полноценный язык, со всеми достоинствами и недостатками понятия «современный полноценный язык». Точнее достоинство тут одно, и очень простое: если вы выучили современный полноценный язык, то вы полноценный современный программист. Python более «строгий», установка пакетов — это ад, работа с векторами требует установки пакета, линейная регрессия требует установки пакета, и вообще, все требует установки пакета (то есть, прохода через ад). Но Python годится не только для data science; существует огромное число способов использования этого языка за пределами data science: вы можете прописывать бизнес-логику в различных платформах, писать серверную часть мобильных приложений, заниматься веб-разработкой, писать скрипты для личного использования, и т.п. В конце концов, если много раз пройти через ад, вы научитесь быстро ставить пакеты, и траблшутить всякие проблемы. В Python намного меньше библиотек для анализа данных, хотя менее экзотические, «стандартные» вещи почти все реализованы. Тоже много учебников и есть определенная экосистема, но она не только про анализ данных, а про все вообще приложения этого замечательного языка.

В общем и целом, если вы не собираетесь выходить никуда за пределы просто анализа данных — Python вам не нужен. Если же вы собираетесь делать приложения, которые регулярно будут анализировать данные — без Python не обойтись. То есть, например, финансисту или маркетологу в 21 веке без R нельзя никак. Без Python он, наверное, сможет прожить. А вот программист в области анализа данных совершенно точно должен знать оба.

Спасибо за развернутый ответ! Подскажите, насколько легко, по вашему мнению, R «ляжет» сверху на Python, с точки зрения изучения? Есть ли в них какие-то противоречия, которые создают определенные проблемы в работе?

я не великий специалист в Python, но могу сказать какие проблемы вызывает R после C++: R ориентирован на векторы, С++ не ориентирован на них. Многие вещи о которых вы думали как о циклах, применяемых к массивам, можно легко сформулировать как операции над векторами. Поначалу будет хотеться сделать циклы, это будет мешать — циклов в R следует избегать всеми средствами. Вот тут будет трабл, но это легко лечится. Все остальное — ок, мне кажется. Даже лучше сначала изучить Python, который например репрессивными мерами заставляет юзера аккуратно оформлять код, чего добрый R не делает, ну и вообще: после строгой училки вы попадаете к доброй и сразу становитесь самым крутым учеником в классе.

Не очень у меня с программированием)) забросил обучение не пройдя и половины. Было же для себя, для общего развития с далеким прицелом, но когда нет насущной необходимости, стимулы сложно найти)

источник

Рассмотрим языки программирования для Data Science. Как они появились, их сильные и слабые стороны, а также отметим простые для старта.

Язык R появился на свет в 1995 году как прямой наследник более старого языка S. Созданный с использованием C, фортрана и себя самого, R поддерживается организацией R Foundation for Statistical Computing.

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

Гвидо ван Россум показал Пайтон в 1991 году. С тех пор он превратился в чрезвычайно популярный язык общего назначения, который широко применяется в обработке данных. Основные версии языка на данный момент – это 2.7 и 3.6.

  • Пайтон очень популярен и имеет множество расширений и поддержку сообщества разработчиков.
  • Python обладает простым и понятным новичкам синтаксисом – так что отлично подходит на роль первого языка программирования с низким порогом входа.
  • Пакеты, вроде pandas, scikit-learn и Tensorflow, делают Python отличным вариантом для современных приложений с машинным обучением.
  • Питон – язык с динамической типизацией. Так что следует быть внимательным и ожидать время от времени ошибок вроде тех, где метод ожидает получить на входе integer, а получает строку.
  • По количеству узкоспециализированных пакетов для статистического анализа Python проигрывает R.

SQL (Structured Query Language) создан для определения, управления и создания запросов к реляционным базам данных. Он появился в 1974 году и с тех пор претерпел множество изменений, но его основные принципы остались прежними.

Некоторые реализации – бесплатные, другие – проприетарные.

  • Очень эффективен при работе с реляционными базами данных.
  • Декларативный синтаксис делает SQL легко воспринимаемым языком. Совершенно ясно, что подразумевается под ‘SELECT name FROM users WHERE age > 18’.
  • SQL используется во многих приложениях, так что ознакомиться с этим языком будет полезно.
  • Аналитические возможности SQL довольно ограничены. Все что вам доступно – это суммирование, и подсчет и вывод среднего значения.
  • Для программистов, привыкших к императивным языкам, декларативные конструкции SQL могут вызывать неудобства.
  • Существует множество реализаций SQL, например, PostgreSQL, SQLite, MariaDB. Все они разняться в достаточной степени, чтобы вызывать боль.

Java – крайне популярный язык общего назначения. Для работы использует JVM (Java Virtual Machine) – собственную абстрактную вычислительную систему, которая обеспечивает полную переносимость между различными платформами. Поддерживается Oracle Corporation.

Java 8 – бесплатная, старые версии – проприетарные.

  • Java вездесущ. Многие современные системы и приложения созданы на Java.
  • Строго типизированный язык. По отношению к определению типов Java крайне серьезен. Для приложений, работающих с большими объемами данных это бесценно.
  • Java – высокопроизводительный компилируемый язык общего назначения. Один и тот же язык может быть использован и для написания бизнес-логики, и для аналитики больших объемов данных, на что не способны другие языки программирования для Data Science.
  • Для узконаправленного анализа и специфичных статистических приложений синтаксис Java слишком многословен. Динамически типизированные R и Python здесь принесут куда больше пользы.
  • Для Java создано не так много библиотек для работы со статистикой.

Скала разработан Мартином Одерски и выпущена в свет в 2004 год. Это еще один язык, который использует для работы JVM. Scala – мультипарадигмальный язык, который способен реализовать и ООП и функциональный подход.

  • Scala + Spark = высокопроизводительные кластерные вычисления. Идеальный язык для тех, кто работает с наборами данных большого объема.
  • Мультипарадигматика. Разработчик волен использовать как ООП, так и функциональный подход.
  • Scala компилируется в байт-код Java и работает на JVM. Это позволяет Scala взаимодействовать с Java и в принципе делает его мощным языком общего назначения.
  • Scala – не самый простой для изучения язык, так что как первый он едва ли сгодится.
  • Синтаксис в целом и система типизации в языке сложные.

Появился на свет в 2012 году. Язык был быстро принят в финансовой сфере.

  • Julia компилируется just-in-time, что обеспечивает хорошую производительность. Он также прост в изучении и динамически типизирован.
  • Julia, как и другие языки программирования для Data Science, предназначен для вычислений и анализа, но может быть использован и как язык общего назначения.
  • Читабельность. Многие пользователи этого языка ссылаются на этот плюс как на ключевое преимущество.
  • Незрелость. Так как язык появился недавно, некоторые пакеты могут работать нестабильно.
  • Ограниченность набора пакетов – еще одно следствие молодости языка. В будущем Julia это наверняка наверстает, но пока R и Python дает этому языку фору.

MATLAB – признанный язык для вычислений, используется в академических кругах и промышленности. Разработан и лицензирован MathWorks, компанией, созданной в 1984 году, которая занимается разработкой программного обеспечения.

Проприетарный – цена зависит от области применения.

  • Создан для вычислений. Идеально подходит для приложений, требующих сложных математических функций.
  • Имеет ряд встроенных функций для визуализации данных.
  • Используется во многих университетских курсах по физике, инженерии и прикладной математике. Как следствие широко применяется в этих областях.
  • Проприетарная лицензия. Конечная стоимость, конечно, зависит от области применения (существуют домашняя, студенческая, академическая или стандартная лицензии), но раскошелиться придется в любом случае (от $55 до пары тысяч).

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

Мощный язык программирования общего назначения, обладающий молниеносной производительностью. Вопрос невысокой популярности C++ в Data Science объясняется выбором продуктивности вычислений против производительности языка.

Как сказал один пользователь Quora:

«Если вы пишете код, который будет делать какой-то специальный анализ, и запустится всего раз, что вы выберете: потратить полчаса на программу, которая будет работать через 10 секунд или 10 минут на написание программы, которая запустится через минуту?»

Хотя с появлением Node.js JavaScript стал серьезным серверным языком, его использование в Data Science ограничено (хотя есть, конечно, brain.js и synaptic.js). А виной тому некоторые его недостатки:

  • Хотя Node.js на данный момент 8 лет, существует всего несколько библиотек и модулей для работы с большими данными.
  • Node.js довольно производительная платформа, но у самого JavaScript много критиков, и не без основания.

Node.js обладает асинхронным вводом/выводом – и это сильная сторона. Так что, в будущем это может сыграть в пользу JavaScript, как серьезного языка для обработки больших объемов данных. Другой вопрос в том, будет ли кто-то на его основе создавать то, что уже имеют другие языки программирования для Data Science.

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

Однако, в сравнении с тем же Python, он имеет крайне мало расширений для работы с данными и большого энтузиазма в этой области работы с Perl не наблюдается. Возможно, виной тому не слишком дружелюбный синтаксис.

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

Однако для Ruby существует проект SciRuby, созданный для вычислений и обработки данных. Впрочем, для серьезных исследований одного его оказывается недостаточно, поэтому Ruby остается не так популярен, как другие языки программирования для Data Science.

источник

Конспект материала сайта для предпринимателей, маркетологов, программистов и аналитиков Coriers.

По мнению автора, при помощи данных аналитик должен давать компании представление о том, как увеличить чистую прибыль или валовый объём продаж. Но проблема в том, что данными можно манипулировать. Поэтому каждому аналитику стоит прочитать книгу «Голая статистика». Она напоминает известную «Как лгать при помощи статистики».

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

В ней данные рассматриваются с позиции пользователей и аналитиков. Автор книги утверждает: исследования и опросы дают ложные данные, потому что люди скрывают правду. В интернете люди не скрываются, они ищут в Google идеи для свиданий и симптомы болезней, рассказывают интернету всё, что у них в голове. Знание этого помогает аналитикам создавать точные модели.

Автор статьи советует книгу «Как правильно подать данные». Она полезна тем, что подсказывает читателям не только, что делать, но и чего делать нельзя. Например, целая глава посвящена тому, как избежать перегруженных диаграмм и моделей.

Для знакомства с общим анализом данных и машинным обучением автор рекомендует книгу «Основы машинного обучения для предсказательной аналитики», её можно скачать бесплатно.

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

Автор считает, что спор «R или Python» не имеет смысла, так как обычно работа определяет язык. Лучше иметь общее представление об анализе данных, чем загонять себя в рамки одного языка.

Тем не менее он включает в подборку несколько книг о языке R. Первая — классическая «Введение в статистическое обучение с примерами на языке R».

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

Новичкам автор советует прочитать книгу «Язык R: анализ данных, статистика, составление графиков». В ней подробно рассматриваются линейная регрессия, графики и анализ временных рядов. Автор отмечает, что в книге содержится и другая информация, но без углубления в статистику и математику.

Помимо этих книг в статье упоминается «Практическое программирование на R: разработка функций и симуляций». Автор считает книгу не особо полезной, потому что аналитики редко разрабатывают симуляции, но для тех, кто занимается их разработкой, она будет хорошим подспорьем.

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

Упоминается библиотека Pandas, её можно изучить с помощью книги «Python и анализ данных».

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

Автор также упоминает другую библиотеку, на которую стоит обратить внимание, — scikit-learn. Для работы с ней автор рекомендует книгу «Машинное обучение и Python. Практические решения для всего: от предварительной обработки данных до глубокого обучения».

Для работы с этой библиотекой автор рекомендует прочитать книгу «Прикладное машинное обучение с помощью Scikit-Learn и TensorFlow. Концепции, инструменты и техники для создания интеллектуальных систем». В ней менее подробно описывается машинное обучение, но вторая половина книги посвящена нейросетям: свёрточным нейросетям, автокодировщикам, методу исключения и так далее.

Аналитику, работающему в крупной компании, обычно не требуется знание таких инструментов обработки больших данных, как Kafka, Hadoop или Cassandra. Однако, утверждает автор, хотя бы знакомство с ними может принести пользу, особенно тем, кто работает в стартапах.

Автор обращает внимание на две книги, знакомящие с Hadoop. Первая — «Hadoop. Подробное руководство». Она касается всех вопросов, необходимых для создания кластера Hadoop, и подходит скорее тем, кто хочет ознакомиться с темой, чтобы поддержать разговор.

Книга хороша тем, что обращает внимание на принципы разработки и поиска компромиссных решений. По мнению автора, именно понимания этого недостаёт многим, кто хочет использовать Hadoop. Например, какие базы данных использовать: NoSQL или реляционные, надо ли нанимать отдельного сотрудника для управления Hadoop, на эти и другие вопросы отвечает книга.

Автор выражает надежду, что эта подборка поможет читателям стать аналитиками или улучшить навыки анализа данных, и приводит ещё несколько материалов для чтения и видео об анализе данных, SQL и Python для ознакомления:

источник

Data Science (наука о данных) — это захватывающее поле для работы, сочетающее передовые статистические и количественные навыки с возможностями программирования в реальном мире. Существует много потенциальных языков программирования, в котором ученый может специализироваться.

Перевод выполнен проектом Ladies Code – это открытое обучение для девушек, которые хотят развиваться в сфере IT. 25 ноября в Москве пройдёт первая международная конференция Ladies Code: Время технологий.

Data Science (наука о данных) — это захватывающее поле для работы, сочетающее передовые статистические и количественные навыки с возможностями программирования в реальном мире. Существует много потенциальных языков программирования, в котором ученый может специализироваться.

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

Специфичность

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

У лучших data scientists есть хорошие навыки всестороннего программирования, а также способность корпеть над расчетами. Большая часть повседневной работы в области науки о данных вращается вокруг поиска и обработки необработанных данных или «очистки данных». Для этого никакие причудливые пакеты машинного обучения не помогут.

Продуктивность

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

Производительность

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

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

Что вам нужно знать

Выпущен в 1995 году как прямой потомок старшего языка программирования S. Написанный в C, Fortran и R проект в настоящее время поддерживается Фондом R для статистических вычислений.

Лицензия: бесплатно!

  • Отличный ассортимент высококачественных, специфичных пакетов с открытым исходным кодом. R имеет пакет для почти любого количественного и статистического приложения, которое можно себе представить. Сюда входят нейронные сети, нелинейная регрессия, филогенетика, продвинутый график и многое другое.
  • Базовая установка поставляется с очень полными встроенными статистическими функциями и методами. R также хорошо обрабатывает матричную алгебру.
  • Визуализация данных является ключевой силой с использованием таких библиотек, как ggplot2.
  • Производительность. R – не быстрый язык.
  • Специфика области. R является фантастическим языком для целей статистики и данных. Но он не так хорош для более общих задач.
  • Причудливость. R имеет несколько необычных функций, которые могут ввести в заблуждение программистов, знакомых с другими языками. Например: массивы начинаются с 1, использование нескольких операторов присваивания, нетрадиционные структуры данных.
Читайте также:  Как сделать сравнительный анализ законодательства

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

Что вам нужно знать

Гуидо ван Россум представил Python еще в 1991 году. С тех пор он стал чрезвычайно популярным языком общего назначения и широко используется в сообществе ученых. В настоящее время основными версиями являются 3.6 и 2.7.

Лицензия: бесплатно!

  • Python – очень популярный, основной язык программирования общего назначения. Он имеет обширный набор специально разработанных модулей и поддержку сообщества. Многие онлайн-сервисы предоставляют API для Python.
  • Python – это простой язык для изучения. Низкий барьер для входа делает его идеальным первым языком для тех, кто занимается программированием.
  • Пакеты, такие как pandas, scikit-learn и Tensorflow, делают Python надежным вариантом для современных приложений машинного обучения.
  • Тип безопасности: Python – это динамически типизированный язык, что означает, что вы должны проявлять должную осторожность. Ошибки типа (такие как передача String в качестве аргумента методу, который ожидает Integer) следует ожидать время от времени.
  • Для конкретных целей статистического анализа и анализа данных обширный набор пакетов R дает ему небольшое преимущество над Python. Для языков общего назначения существуют более быстрые и безопасные альтернативы Python.

Python – очень хороший выбор языка для науки о данных не только для начального уровня. Большая часть процесса передачи данных вращается вокруг процесса ETL (извлечение-преобразование-загрузка).

Что вам нужно знать

SQL (Structured Query Language) определяет, управляет и делает запросы в реляционных базах данных. Язык появился в 1974 году и с тех пор претерпел множество реализаций, но основные принципы остаются неизменными.

Лицензия: Различается. Некоторые реализации являются бесплатными, другие являются патентованными.

  • Очень эффективен при запросе, обновлении и обработке реляционных баз данных.
  • Декларативный синтаксис делает SQL очень читаемым языком.
  • SQL очень часто используется в различных приложениях, что делает его очень полезным языком для ознакомления. Модули, такие как SQLAlchemy, упрощают интеграцию SQL с другими языками.
  • Аналитические возможности SQL довольно ограничены – помимо агрегирования и суммирования, подсчета и усреднения данных ваши варианты ограничены.
  • Для программистов с императивным бэкграундом декларативный синтаксис SQL может потребовать дополнительного обучения.
  • Существует множество различных реализаций SQL, таких как PostgreSQL, SQLite, MariaDB. Они все достаточно разные, что часто приводит к сложностям.

SQL более полезен в качестве языка обработки данных, чем в качестве передового аналитического инструмента. Тем не менее, много процессов в области данных зависит от ETL, а долговечность и эффективность SQL – это доказательство того, что это очень полезный язык для современного исследователя данных.

Что вам нужно знать

Java – чрезвычайно популярный язык общего назначения, который работает на виртуальной машине Java (JVM). Это абстрактная вычислительная система, которая обеспечивает плавную переносимость между платформами. В настоящее время поддерживается корпорацией Oracle.

Лицензия: Версия 8 – бесплатно!

  • Вездесущность. Многие современные системы и приложения построены на базе Java. Способность интегрировать методы наукоемкой данных непосредственно в существующую кодовую базу является мощной.
  • Java – это серьезно, когда дело доходит до обеспечения безопасности типов. Для критически важных приложений с большими данными это бесценно.
  • Java – это высокопроизводительный, скомпилированный язык общего назначения. Это делает его пригодным для написания эффективного производственного кода ETL и алгоритмов машинного обучения с использованием вычислительных средств.
  • Для ad-hoc-анализов и более специализированных статистических приложений многословие Java делает его маловероятным первым выбором. Динамически типизированные языки сценариев, такие как R и Python, дают гораздо большую производительность.
  • По сравнению с R, в Java нет большого количества библиотек для продвинутых статистических методов.

Многие компании оценят возможность беспрепятственной интеграции кода производства данных в их существующую кодовую базу, и вы обнаружите, что производительность Java и безопасность типов являются реальными преимуществами. Тем не менее, вы не будете иметь набор специфически статистических пакетов, доступных для других языков. Тем не менее, Java определенно нужно рассмотреть – особенно если вы уже знаете R и/или Python.

Что вам нужно знать

Scala – это язык, который работает на JVM, он разработан Мартином Одерским и выпущен в 2004 году. Это язык с несколькими парадигмами, позволяющий использовать как объектно-ориентированные, так и функциональные подходы. Структура кластерных вычислений Apache Spark написана на Scala.

Лицензия: бесплатно!

  • Scala + Spark = высокопроизводительные кластерные вычисления. Scala – идеальный выбор языка для тех, кто работает с наборами данных большого объема.
  • Мультипарадигматика: программисты Scala могут брать лучшее из обоих миров. Доступны для них как объектно-ориентированные, так и функциональные парадигмы программирования.
  • Scala компилируется в байт-код Java и работает на JVM. Это позволяет взаимодействовать с самим языком Java, делая Scala очень мощным языком общего назначения, а также он хорошо подходит для науки о данных.
  • Scala – это не простой язык, если вы только начинаете. Лучше всего будет скачать sbt и установить IDE, такую как Eclipse или IntelliJ со специальным плагином для Scala.
  • Синтаксис и система типов часто описываются как сложные. Это приводит к крутой кривой обучения для тех, кто приходит с динамических языков, таких как Python.

Когда дело доходит до использования кластерных вычислений для работы с большими данными, Scala + Spark – фантастические решения. Если у вас есть опыт работы с Java и другими статически типизированными языками, вы также оцените эти возможности Scala.

Что вам нужно знать

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

Лицензия: бесплатно!

  • Julia – это JIT-язык, который позволяет ему обеспечить хорошую производительность. Он также предлагает простоту, динамическую типизацию и возможности сценариев интерпретируемого языка, такого как Python.
  • Julia была предназначена для численного анализа. Она также способна к программированию общего назначения.
  • Читаемость. Многие пользователи языка ссылаются на это как на ключевое преимущество.
  • Зрелость. В качестве нового языка некоторые пользователи Julia испытывают нестабильность при использовании пакетов. Но, как сообщается, сам основной язык достаточно стабилен для использования в производстве.
  • Ограниченные пакеты являются еще одним следствием молодости и небольшого сообщества разработчиков. В отличие от давно установленных R и Python, у Julia нет большого выбора пакетов (пока).

Главная проблема с Julia – это та, за что ее нельзя обвинять. Как недавно разработанный язык, он не настолько зрелый или готовый к производству, как его основные альтернативы Python и R. Но, если вы готовы быть терпеливыми, есть все основания уделять ему пристальное внимание, поскольку язык будет развиваться в ближайшие годы.

Что вам нужно знать

MATLAB – это устоявшийся язык вычислений, используемый во всех академических кругах и промышленности. Он разработан и лицензирован MathWorks, компанией, созданной в 1984 году для коммерциализации программного обеспечения.

Лицензия: проприетарный – цены варьируются в зависимости от вашего варианта использования.

  • Предназначен для численных вычислений. MATLAB хорошо подходит для количественных приложений со сложными математическими требованиями, такими как обработка сигналов, преобразования Фурье, матричная алгебра и обработка изображений.
  • Визуализация данных. MATLAB имеет ряд встроенных возможностей построения графиков.
  • MATLAB часто преподается как часть многих курсов бакалавриата по количественным предметам, таким как физика, инженерия и прикладная математика. Как следствие, он широко используется в этих областях.
  • Собственная лицензия. В зависимости от вашего варианта использования (академического, личного или корпоративного) вам может потребоваться раскошелиться на дорогостоящую лицензию. Существуют бесплатные альтернативы, такие как Octave.
  • MATLAB не является очевидным выбором для программирования общего назначения.

Широкое использование MATLAB в ряде количественных и количественных областей всей отрасли и научных кругов делает его серьезным выбором для науки о данных. Его применение необходимо, когда ваше приложение или повседневная роль требуют интенсивной, расширенной математической функциональности; действительно, MATLAB был специально разработан для этого.

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

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

Однако, возможно, у вас уже есть опыт работы с Java. Или вы можете использовать Scala для больших данных. Или, может быть, вы очень заинтересованы в проекте Julia.

Может быть, вы изучили MATLAB в университете или хотите дать SciRuby шанс? Возможно, у вас есть совсем другое предложение?

источник

Перевод статьи «Which freaking big data programming language should I use?» представил канал Nuances of programming.

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

Когда дело доходит до масштабируемой обработки данных, в основном, приходится использовать R, Python, Scala и Java

Допустим у вас есть проект с большими данными. Вы разбираетесь в предметной области, знаете, какую инфраструктуру использовать, и, возможно, даже решили использовать определенную среду для обработки, и тут в центре внимания оказывается одна проблема: какой язык программирования выбрать? (Или, возможно, вопрос стоит еще острее: на каком языке заставить работать разработчиков и специалистов по обработке и анализу данных?) Это вопрос, ответ на который можно отложить лишь до поры до времени.

Конечно, ничто не помешает обработать большие данные с помощью, скажем, XSLT преобразований (такая первоапрельская шутка, посмотрите на следующий день на лица этих людей). Однако, как правило, сегодня для обработки больших данных предлагается на выбор три языка– R, Python и Scala – плюс несгибаемая под тяжестью лет универсальная «черепаха» Java. Какой язык выбрать и почему … или когда?

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

R часто называют «языком статистиков, созданными статистиками». Если вам нужна эзотерическая статистическая модель для вычислений, скорее всего, вы найдете ее на CRAN – и между прочим, она вовсе не называется «Исчерпывающая и всеобъемлющая сеть архивов кода на R. Для анализа и построения графика вы не сможете использовать ggplot2. И, если вам потребуется больше вычислительной мощности, можно воспользоваться запустить R на Spark (с помощью привязки SparkR).

Однако, если вы не специалист по обработке и анализу данных и никогда не использовали Matlab, SAS или OCTAVE, они могут помочь в первоначальной адаптации к языку R. Хотя он отлично подходит для анализа данных, для общих задач он не настолько хорош . Если построив модель на R, вы бы подумали о ее переводе на Scala или Python для промышленного применения, вы вряд ли станете писать систему управления кластерами с использованием языка R (желаю удачи в отладке, если вы все же за это возьметесь).

Если ваши специалисты по обработке и анализу данных не используют R, они, вероятно, досконально владеют Python. Этот язык популярен в науке на протяжении уже более десятка лет, особенно в таких областях, как обработка естественного языка (NLP – Natural Language Processing). В результате, если у вас есть проект, требующий работы с NLP, вы столкнетесь с удручающе огромным количеством вариантов, включая классический NTLK, выделением тем текстов на естественном языке с помощью GenSim или молниеносной быстротой и точность spaCy. Подобным же образом, Python имеет огромные преимущества в прикладных задачах для нейронных сетей, с помощью Theano и Tensorflow; имеется scikit-learn для машинного обучения, а также NumPy и Pandas для анализа данных.

Также имеется Juypter / iPython – веб-сервер, который позволяет использовать микс из кода, графиков, ну и, всего, что может потребоваться в формате журнала. Сначала, казалось, это вероятный убийца Python, но к сейчас эта концепция стала настолько признанной, что распространилась на большинство языков, поддерживающих REPL-концепцию (цикл чтение-вычисление-печать – Read-Evaluate-Print-Loop), включая Scala и R.

Python, как правило, поддерживается фреймворками обработки больших данных, но в то же время он не входит в высшую лигу в этой сфере. Например, новые функции Spark почти всегда выходят в первую очередь для Scala / Java, тогда как для PySpark может потребовать ожидание нескольких новых младших версий (особенно это касается разработки на Spark Streaming / MLLib).

В отличие от R, Python является традиционным объектно-ориентированным языком программирования, поэтому большинству разработчиков будет комфортно с ним работать, тогда как уже начальное знакомство с R или Scala может отпугнуть. Трудностью может стать и соблюдение правильных отступов в форматировании программного кода. Эта особенность делит программистов на две группы: на тех, для кого «это отлично подходит для обеспечения удобочитаемости» и тех, кто считает, что в 2016 году отпадет необходимость бороться с интерпретатором за запуск программы на исполнение, потому что строка является лишним, неуместным символом (вы, наверное, догадываетесь к чему я клоню).

Ох, Scala – из четырех рассматриваемых языков программирования, Scala – это язык, который любого восхитит своей системой типов. Начиная с JVM, Scala – это, в общем, успешный брак между функциональной и объектно-ориентированной парадигмами, и в настоящее время он нашел весьма успешное применение в финансовой сфере и среди компаний, работающих с большими объемами данных, зачастую плохо структурированных (например, такими как Twitter и LinkedIn). Этот язык к тому же теснит как Spark, так и Kafka.

Поскольку он работает на JVM, это дает бесплатный доступ к экосистеме Java, хотя у него имеется и множество «родных» библиотек для обработки масштабных данных (в частности, Algebird и Summingbird от Twitter). Он также включает очень удобный REPL для интерактивной разработки и анализа, как в Python и R.

Мне очень нравится Scala, поскольку включает множество полезных функций программирования, таких как сопоставление с образцами (паттернами проектирования) и значительно менее многословен, чем стандартный Java. Однако в Scala часто имеется несколько способов что-то сделать и эта особенность языка используется в его рекламе как преимущество. И это хорошо! Но учитывая, что в Scala имеет полную по Тьюрингу систему типов и всевозможные операторы (‘/:’ для foldLeft и ‘: \’ для foldRight), довольно просто открыв файл с кодом на Scala подумать, что вы видите на особенно отвратительный вариант кода на Perl. Необходим хороший опыт и подробные рекомендаций для успешного написания кода на Scala (имеет смысл посмотреть рекомендации от Databricks).

Читайте также:  Медкнижка какие анализы сдавать 2017

Еще одним недостатком является медленная работа компилятора Scala, что в каком-то смысле возвращает нас во времена классической «компиляции!» (лента XKCD). Тем не менее, у него есть REPL, поддержка больших данных и веб-тетради в формате Jupyter и Zeppelin, благодаря чему этому языку можно простить его многочисленные причуды.

Наконец, всегда есть Java – нелюбимая, покинутая, принадлежащая компании, которая, единственная, по-видимому, о не только и заботится, которая делает деньги из исков против Google, и совершенно немодная. Только промышленные дроны используют Java! Однако Java может отлично подойти для вашего проекта по большим данным. Рассмотрим Hadoop MapReduce — Java. HDFS? Написан на Java. Даже Storm, Kafka и Spark работают на JVM (в Clojure и Scala), а что означает, что Java является перворазрядным рекордсменом на участие в проектах по большим данным. Также возникаю новые технологии, такие как Google Cloud Dataflow (теперь Apache Beam), которые до недавнего времени поддерживались только на Java.

Java, возможно, сегодня и не является самым предпочитаемым и звездным языком. Но пока большинство перенапрягается при попытках разбраться с обратными вызовами в Node.js-приложениях, применение Java открывает доступ к большой экосистеме профилировщиков, отладчиков, средств мониторинга, библиотек для обеспечения безопасности и, множеству всего прочего, большинство из которых прошли «боевые» испытания в течение последних двух десятков лет. (Прошу прощения, в этом году Java исполняется 21 год, все мы стареем.)

Основными притензиями к Java являются многословность и отсутствие REPL (представленных в R, Python и Scala) для итеративного применения. Я видел десяти строковый Scala-код в Spark в 200-строчном чудовище на Java, в купе с огромным количеством операторов типов, занимающих большую часть экрана. Тем не менее, новая поддержка лямбда в Java 8 привносит многое для исправления этой ситуации. Java никогда не будет такой компактной, как Scala, но Java 8 действительно делает разработку на Java менее болезненной.

А как насчет REPL? Хорошо, тут вы попали в точку. Но Java 9 будет включать JShell, которая сможет удовлетворить всех ваши потребности в REPL.

Какой язык следует использовать для вашего проекта больших данных? Боюсь, я собираюсь просто уйти от прямого ответа, утверждая, что «это зависит от…». Если вы проводите анализ больших данных с загадочными статистическими расчетами, тогда вы будете просто не в своём уме, если откажетесь от использования R. Если вы занимаетесь NLP или интенсивной обработкой данных с помощью нейронных сетей на графических процессорах, то Python – наилучший выбор. А для высокопроизводительных решений с применением всех важных средств обработки отличным выбором станут Java или Scala.

Конечно, не стоит впадать и в другую крайность – или-или. Например, вы можете использовать Spark для моделирования и машинного обучения на хранимых данных с помощью R или Python, а затем создать рабочий (промышленный) вариант, который сможет использоваться вашим приложением на Scala Spark Streaming. Не стоит также пренебрегать и использованием однородного набора языков, обладающих сильными сторонами только с точки зрения обработки больших данных (в противном случае ваша команда может начать быстро страдать от языковой усталости).

источник

Как выяснили аналитики Яндекса, из всех сфер IT именно в Data Science сейчас больше всего ищут специалистов начального уровня. У каждой компании сегодня есть хранилища данных, с которыми очень хочется сделать что-нибудь полезное. Эксперты, способные извлечь пользу из этих гор информации, могут рассчитывать на быструю карьеру с впечатляющими окладами.

Единственная сложность для начинающих аналитиков данных — даже базовые позиции предполагают уверенное владение компьютерными языками. Как правило, в объявлениях о вакансиях упоминаются SQL, R и Python. В чем их отличия? С чего начать и чем продолжить? Нужно ли пытаться объять необъятное? Расскажем в сегодняшней статье, которая будет полезна всем, кто собирается стать веб-разработчиком, думает о карьере фронтенд-разработчика или хочет познакомиться с SQL.

Интересное исследование на эту тему недавно провела специалистка по аналитике данных Женевьева Хейс (Genevieve Hayes). Она проанализировала 100 актуальных объявлений о работе в Data Science, подобрав компании самого разного размера с позициями самого разного уровня. Вакансии руководителей ее не интересовали, только те должности, где нужно работать «руками». В 15% случаев объявления адресовались начинающим специалистам, 44% пришлись на средние позиции, 41% — на старших экспертов.

Во всех трех категориях на первом месте по популярности оказался Python. SQL занял вторую строчку, R — третью. Главный тренд, который отметила Хейс — это падение позиций SQL с повышением позиции сотрудника. Среди вакансий для начинающих сотрудников этот язык упоминался в 73% случаев, а в самой опытной категории цифра упала до 45%.

Популярность основных языков программирования на разных уровнях экспертизы (Genevieve Hayes, 2019)

Эти результаты говорят о том, что начинающие специалисты должны знать, как сформулировать запрос базе и интерпретировать ответ, понимать принципы обмена данных между хранилищами и т.д. Очевидно, те компании, которые в исследовании Яндекса активно ищут младших экспертов по Data Science, во многом преследуют именно эти цели — наладить грамотную работу с базами, а дальше действовать по ситуации.

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

Тех, кто хочет стать веб-разработчиком с нуля, знание SQL дает отличное понимание работы с бэкендом. Python, в свою очередь, объединяет множество удобных инструментов веб-разработки, позволяющих быстро разворачивать функциональные сайты и мощные порталы. Наконец, R применяется для узких задач — у этого языка довольно специфичная природа, о которой мы расскажем подробнее ниже.

Итак, именно R и Python можно считать главными языками для эксперта по Data Science. Настоящий профессионал сможет работать и с тем, и с другим, но нужно ли новичку браться сразу за все? Или лучше планировать свой путь постепенно, двигаясь от точки А к точке Б?

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

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

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

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

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

С другой стороны, R вырос из языка S, с которым активно работают специалисты по статистике. Таким образом, его главная сила в сложных статистических функциях, которые используются в академических и высокопрофессиональных задачах.

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

источник

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

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

Чтобы помочь ученым в области данных выбрать правильный язык, Норм Мэтлофф, профессор компьютерных наук в Калифорнийском университете, Дэвис написал пост Github,чтобы пролить свет на дебаты.

Матлофф сравнил R и Python в следующих 10 областях, чтобы определить, какой язык программирования был лучшим выбором:

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

В то время как ученые, работающие с Python, должны изучить много материала, чтобы начать, в том числе NumPy, Pandas и matplotlib, типы матриц и базовая графика уже встроены в base R, пишет Матлофф.

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

Индекс пакетов Python (PyPI) насчитывает более 183 000 пакетов, а сеть архивов R (CRAN) — более 12 000. Тем не менее, PyPI довольно тонок в науке о данных, писал Матлофф.

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

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

Матлофф добавил, что при поиске следующих терминов в PyPI ничего не происходит: логарифмическая модель; Пуассоновская регрессия; инструментальные переменные; пространственные данные; семейная ошибка.

Массовый рост Python в последние годы частично вызван ростом машинного обучения и искусственного интеллекта (ИИ). В то время как Python предлагает несколько точно настроенных библиотек для распознавания изображений, таких как AlexNet, версии R также могут быть легко разработаны, пишет Matloff.

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

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

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

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

R’s Rcpp — это мощный инструмент для взаимодействия R с C / C ++, писал Матлофф. Хотя в Python есть такие инструменты, как swig, для того же, он не такой мощный, и пакет Pybind11 все еще разрабатывается. Matloff пишет, что новая идея R ALTREP также может повысить производительность и удобство использования; Тем не менее, варианты Python для Cython и PyPy иногда могут вообще устранить необходимость в явном интерфейсе C / C ++, добавил он.

Победитель: R (но не намного)

Хотя функции являются объектами как в R, так и в Python, R относится к этому более серьезно, писал Матлофф.

«Всякий раз, когда я работаю в Python, меня раздражает тот факт, что я не могу напечатать функцию на терминал, что я часто делаю в R», — написал он.

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

Хотя Python переходит с версии 2.7 на 3.x, это не вызовет особых проблем. Тем не менее, R меняется на два разных диалекта из-за влияния RStudio: R и Tidyverse, писал Матлофф.

«Возможно, было бы более приемлемо, если бы Tidyverse превосходили обычные R, но, на мой взгляд, это не так», — написал Матлофф. «Это делает вещи более сложными для начинающих».

«Классические структуры данных информатики, например, двоичные деревья, легко реализовать в Python», — пишет Матлофф. «Хотя это можно сделать в R с помощью класса list, я думаю, что это медленно».

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

По словам Cloud Academy , помимо R и Python, другие востребованные инженеры по работе с данными умения включают SQL, Spark, Hadoop, Java, Amazon Web Services (AWS), Scala и Kafka.

источник