Знакомьтесь: «питон»

Сегодня мы расскажем о набирающем популярность инструменте анализа данных – языке Python, его библиотеках и преимуществах перед конкурентами — R и MATLAB.

Язык Python

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

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

Анализ данных с Python

С самого момента появления в 1991 году язык Python встал в один ряд с самыми популярными динамическими языками программирования, такими как Perl, Ruby и другие. В последние годы именно Python и Ruby используются активнее всего – такие языки еще принято называть скриптовыми, поскольку их удобно использовать для создания быстрых, «черновых» программ или скриптов.

Однако тот факт, что «питон» по сути является скриптовым языком вовсе не означает, что на нем нельзя писать настоящее программное обеспечение. В отличие от себе подобных, Python собрал вокруг себя большое и активное сообщество исследователей и специалистов в области информационных технологий. Начиная с первой половины 2000-х годов, язык активно используется для научных вычислений как в реальных сферах экономики, так и в рамках академических исследований.

Если говорить об анализе данных и интерактивных вычислениях, а также визуализации данных, сравнение «питона» с конкурентами вроде R, MATLAB, SAS, Stata неизбежны – однако за последние годы уровень поддержки библиотек языка (в первую очередь, pandas) существенно вырос.

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

Основные библиотеки Python

NumPy

NumPy (сокращение от Numerical Python) – это фундаментальный пакет языка Python для научных вычислений. Помимо прочего, в число полезных «фишек» библиотеки входят:

  • Быстрый и эффективный объект ndarray – многомерный массив;
  • Функции для поэлементных вычислений в массивах и математические операции применительно к массивам;
  • Инструменты для чтения и записи наборов данных в формате массива на диск;
  • Операции линейной алгебры, преобразование Фурье и генерация случайных чисел;
  • Инструменты для интеграции кода на C, C++ и Fortran в программу на Python.

Кроме возможности работы с массивами, библиотека NumPy добавляет в язык Python возможность создания первичного контейнера, из которого данные могут передаваться в разные алгоритмы. Для численных данных массивы библиотеки – гораздо более эффективный способ хранения и манипуляции данных, чем любая другая структура данных Python. Кроме того, библиотеки, написанные на языке более низкого уровня (как в C или Fortran) могут работать с данными, хранящимися в массиве NumPy, без необходимости копирования данных, то есть обращаясь непосредственно к массиву.

Pandas

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

Библиотека pandas сочетает высокопроизводительные вычисления на массивах от NumPy с гибкими возможностями манипуляции данными вроде электронных таблиц и SQL.

Пользователям, которые связаны с финансовым анализом, библиотека облегчает работу с временными рядами – изначально библиотека pandas создавалась как инструмент для создания аналитических приложений именно в сфере финансов. Само слово pandas, хотя и созвучно с названием всеми любимых черно-белых мишек, представляет собой сокращение от эконометрического термина panel data (многомерные временные ряды).

matplotlib

Специалистам, занимающимся двумерной визуализацией данных, хорошо знакома другая библиотека «питона» – matplotlib. Изначально созданная Джоном Д. Хантером, сегодня библиотека поддерживается целой командой разработчиков. Matplotlib отлично приспособлена для построения готовых к публикации графиков и диаграмм. Библиотека интегрирована с IPython (см. ниже) и предоставляет комфортную интерактивную среду для визуализации и просмотра данных. Графики также интерактивны; диаграммы можно увеличивать и панорамировать при помощи панели инструментов в окне визуализации.

IPython

IPython – это компонент стандартного набора исследовательских инструментов Python, который служит для последнего связующим звеном. Он предоставляет устойчивую к ошибкам и продуктивную среду для интерактивных и объяснительных вычислений. По сути, IPython – это усовершенствованная оболочка        языка, позволяющая писать, тестировать и отлаживать код на Python быстрее и эффективнее. Особенно компонент полезен для решения задач, связанных с интерактивной работой и визуализацией данных при помощи matplotlib.  Кроме стандартной оболочки «питона», IPython также  предоставляет пользователю:

  • HTML-редактор наподобие Mathematica для соединения с компонентом через браузер;
  • Графический пользовательский интерфейс на основе фреймворка Qt, с возможностью построения графиков, редактирования нескольких строк одновременно и выделения синтаксиса;
  • Инфраструктуру для интерактивных параллельных и распределенных вычислений.

SciPy

SciPy представляет собой коллекцию пакетов, созданных для решения разнообразных стандартных вычислительных задач, включая решение уравнений различных видов, сложные операции с матрицами, оптимизацию (минимизацию) функций, извлечение корней, работу с разреженными матрицами и линейными системами, а также статистичекские вычисления и отдельные случаи интеграции кода на C++ и Fortran.

Совместно, библиотеки NumPy и SciPy могут полностью заменить большую часть инструментария MATLAB вместе с некоторыми дополнениями.

Scikit-learn

Scikit-learn (ранее scikits.learn) – еще одна библиотека «питона», заточенная под машинное обучение. В пакет входят разнообразные алгоритмы классификации, регрессии и кластеризации:

  • метод опорных векторов;
  • логистическая регрессия;
  • наивный байесовский метод;
  • алгоритм случайного леса;
  • градиентные методы;
  • метод k-средних;
  • плотностный алгоритм кластеризации (DBSCAN).

Библиотека рассчитана на совместную работу с другими пакетами Python, такими как вышеописанные NumPy и SciPy.

Python vs R

Язык R, с основными моментами которого мы уже знакомили наших читателей, долгое время считался чуть ли не единственной альтернативой для тех, кому сложность задачи не позволяла пользоваться, например, таблицами MS Excel. Правда, если углубиться в тему, открывается несколько неприятных фактов, касающихся подробностей практического использования R, например, отсутствие должной документации. Это, как правило, ведет к тому, что обучение новых специалистов «общению» с языком крайне затруднено – и в перспективе ведет к нехватке последних, что мы, в общем-то, и наблюдаем сегодня. Но и у «знатоков» при работе с R тоже возникают проблемы: для решения задач самого разного толка приходится каждый раз «изобретать велосипед», в итоге выдавая решение на нескольких разных языках программирования; соответственно, отладка тоже затруднена.

Почему же специалисты готовы мириться с сомнительным синтаксисом и недостаточной документацией? Все дело в широких возможностях, которые предоставляет R для решения конкретных задач в области Data Science, на которые он изначально и рассчитан. Так что у профессионалов не было особого выбора – по крайней мере, до недавнего времени, когда «сырые» библиотеки Python стали развиваться семимильными шагами. Конечно, до полной капитуляции R еще очень и очень далеко – да и она не нужна; согласитесь, иметь несколько альтернатив всегда приятно и полезно для дела.

Python vs MATLAB

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

Дело в том, что долгое время компания поставляла образовательным учреждениям ПО (в том числе, и MATLAB, который без скидки стоит несколько тысяч долларов) по льготным ценам, но в какой-то момент ужесточила ценовую политику, ограничив льготную категорию до учреждений, выдающих диплом о высшем образовании. Естественно, все остальные стали присматриваться к альтернативам – что во многом и подстегнуло развитие и рост популярности Python.

Автор: Елизавета Филиппова

комментария 2

  1. Сергей:

    Об отсутствии документации по R — улыбнуло.

    • Alex:

      поддерживаю, документация по R намного удобнее, чем по Python. Например, помимо встроенной документации help(function_name) есть Vignettes — интерактивные туториалы по библиотекам.

Добавить комментарий

Ваш e-mail не будет опубликован.

закрыть

Поделиться

Отправить на почту
закрыть

Вход

закрыть

Регистрация

+ =