Как Python превратился в инструмент специалиста по анализу данных

Big Data / Технологии
автор: Кирилл Тихонов  28 ноября 2013

Язык программирования Python на глазах превращается в важный инструмент специалистов по анализу данных (data scientists). Мало-помалу он теснит специализированные средства вроде языка R или пакета MATLAB. До окончательной победы ещё очень далеко, однако рост популярности Python в этой области вызывает интерес.

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

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

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

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

Тал Яркани, глава лаборатории психоинформатики при Техасском университете, перечисляет в своём блоге инструменты, которыми ему приходилось дополнять R. Для обработки текста он использовал Ruby, данные нейровизуализации обрабатывал при помощи MATLAB, вычислительные задачи решал при помощи Python и пакета NumPy. На долю R оставался лишь статистический анализ и построение графиков.

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

Яркани заметил, что постепенно Python заменил ему и R, и MATLAB, и Ruby:

«Дело не только в удобстве. Есть ещё одна вещь, которая впечатляет меня в экосистеме средств для научных вычислений, основанных на Python: удивительное количество инструментов, которые являются лучшими в своём классе (или близки к этому), если оценивать их с точки зрения широты возможностей и простоты использования. А если учитывать интеграцию с Си, то зачастую и с точки зрения производительности.

Трудно вообразить более удобный пакет, предназначенный для машинного обучения, чем scikit-learn, — и это даже в том случае, если не брать во внимание разнообразие реализованных в нём алгоритмов, великолепную документацию и выдающуюся производительность.

По тем же причинам я совершенно не скучал по возможностям манипуляции данными, встроенным в R, с тех пор как переключился на pandas. По правде говоря, я уже обнаружил в pandas такие трюки, о которых не знал, когда использовал R. Если учесть, что pandas заметно опережает R по производительности во многих распространённых операциях, поводов возвращаться к R или другим инструментам — хотя бы от случая к случаю — остаётся всё меньше».

В чём причина? Микио Браун, немецкий специалист по машинному обучению и основатель стартапа Streamdrill, разделяющий точку зрения Яркани, предполагает, что развитие научных пакетов для Python подхлестнула недальновидная ценовая политика компании Mathworks.

Mathworks разрабатывает пакет MATLAB, который широко используется для научных и инженерных вычислений. Стоит он тысячи долларов, однако образовательные учреждения компания обслуживала по льготной цене. Логика была проста: студенты, освоившие MATLAB, будут применять его и в своей профессиональной деятельности. Их работодателям придётся раскошеливаться, и льготы многократно окупятся.

Так продолжалось до 2005 года, когда в Mathworks решили ужесточить свое определение «образовательного учреждения» и отменили льготы для организаций, которые не выдают дипломы о высшем образовании. За бортом осталось множество академических пользователей. Они стали присматриваться к альтернативам — и заметили Python.

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

На таком фундаменте и выросли средства анализа данных, которые упоминает Яркани, а неудовлетворённый спрос, возникший в результате решения Mathworks, лишь ускорил их появление. Кроме того, не могла не сыграть роль огромная популярность Python за пределами статистического сообщества.

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

Поделиться
Поделиться
Tweet
Google
 
Читайте также
LaCie 12big – 96 быстрых терабайт на столе
LaCie 12big – 96 быстрых терабайт на столе
Intel представила новую платформу для IoT
Intel представила новую платформу для IoT
Технологии резервного копирования больших данных
Технологии резервного копирования больших данных
  • Victor Beresnev

    нормальная у R документация, синтаксис странный слегка, да, но в части документации все хорошо. опять же модули к R никто не запрещает пиcать на C/Fortran, если производительности не хватает. основная масса проблем с производительностью — неумение использовать матричные операции на полную.
    Хотя питон много удобнее с точки зрения программиста — можно заказывать кусочки на стороне.

  • Григорий Дёмин

    На самом деле документация у R нормальная, по статистическим функциям может быть даже лучше, чем у аналогичных функций из Python. Да и сам язык хотя и не так хорош, как Python, но для тех кто на него переходит с SAS, SPSS и прочих статистических пакетов, он выглядит, как язык, ушедший на пару поколений вперед.
    А оригинальную статью раскритиковали за голословность утверждения о том, что Python вытесняет R. Если рассматривать хоть какие-то реальные данные, то видно, что доля R растет быстрее, чем у Python ( https://github.com/hadley/r-python ). Хотя, конечно, не вполне корректно сравнивать распространенность специализированной среды (R) с распространенностью универсального языка программирования.

    • Олег Парамонов

      надо сравнивать с упоминаниями соответствующих питоновских пакетов вроде pandas и statsmodels, а не с питоном целиком.

      • Григорий Дёмин

        Matt Asay, который заявил, что Python вытесняет R, не удосужился это сделать, поэтому его утверждение и является голословным. Вообще, в его статье ( http://readwrite.com/2013/11/25/python-displacing-r-as-the-programming-language-for-data-science ) очень многое является голословным.
        Есть еще ежегодный опрос на kdnuggets.com об инструментах, используемых для data mining. R там лидирует с более чем 20% отрывом от Python, вдобавок его использование выросло на 8% за последний год, а у Python только на 2% ( http://www.kdnuggets.com/2013/08/languages-for-analytics-data-mining-data-science.html ). Очень странно, что люди пишут про инструменты для Data Science, не приводя никаких Data:)

        • Олег Парамонов

          Вытесняет — это слишком сильно сказано. Говорят не о вытеснении, а о том, что питон стало возможно использовать для тех же задач.

          • jno

            ну, NumPy — древний пакет.
            и уши у него из Ливерморской лабы торчат, емнимс.
            так что — возможность там давно уже есть.
            как и актуальное использование.

            а вот популярность в этом «узком кругу ограниченных лиц» поимел сравнительно недавно…

          • Олег Парамонов

            О древности NumPy я написал. Говорят, в основном, не о нём, а о pandas и statsmodels, судя по тому, что я видел.

          • jno

            говорят — да, а пользуют — нумпи :)
            кто «так», кто «в составе»…

            ну, да — я люблю питон :)

  • Olga Reznikova

    ИМХО, выдача желаемого за действительное. Возиться с данными Питону мешает его навязчивая императивность (ну не любит Гвидо идиом функционального программирования, и ну не способны list comprehensions заменить их в полной мере). Да, синтаксис простой, учить легко, мануалов тонны. Но семантика, как мне кажется, не всегда подходящая.

    • jno

      да и эффективностью компрехенции не отличаются… :(

  • Maxim K

    Несколько странные утверждения, честно говоря. У R нормальная документация, технически все задокументировано, и для многих функций есть дополнительно howto/книги. Пакетов в R, если мне не изменяет память, около 5000. Это называется «не отличается разнообразием»? Использование R растет экспоненциально, вышли библиотеки позволяющие R работать с параллельными вычислениями, в том числе и с Hadoop. Вообще вопрос неправильно сформулирован, мне кажется. R и Python изначально созданы для разных целей, если у них и пересекаются какие-то области применения, то это не значит что они прямые конкуренты. Сильнее всего их комбинация, тем более что R прекрасно работает с кодом Python.

  • jno

    задолго до того, как Python превратился в адекватное средство веб-разработки

    :D
    А он — что, таки уже превратился??
    Это, наверное, как «каждая хрошая машина со временем превращается в Опель» :)

    У питона есть одна засада. Но большая. Называется GIL.

    А так — классная феня для всего.

    • Олег Парамонов

      В ряду Rails (не говоря уж о PHP) — вполне. Тем более, что долгое время веб-разработкой на питоне считался Zope.

      • jno

        не только считался, но и был.
        и даже где-то как-то есть :)

        но, слава Богу, питон, вроде, так и не стал «средством уеб-разработки» :)

  • Mike Potanin

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

  • Nick Evgeniev

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

Хостинг "ИТ-ГРАД"
© ООО "Компьютерра-Онлайн", 1997-2017
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.
«Партнер Рамблера» Почта защищена сервером "СПАМОРЕЗ" Хостинг "Fornex"