В нашей прошлой статье «Библиотеки Python для Data Science» мы осветили список самых популярных библиотек и фреймворков, которые используются как в Data Science, так и любыми другими программистами на Python. Однако, это далеко не весь список.
Сегодня мы хотели бы рассмотреть еще несколько библиотек, которые заслуживают отдельное место в этом топе. Какие-то используются чаще, какие-то реже, но все они однозначно будут Вам полезны.
1. Pandas
Если Ваша деятельность хоть как-то связана с анализом данных, то Вы наверняка не понаслышке знакомы с библиотекой Pandas. Если же Вы только начинаете свой путь – то можете не терять время и сразу же приступать к знакомству.
Если тезисно: Pandas – библиотека для комплексной обработки данных. Pandas решает сразу несколько разноплановых задач: загрузка данных, предобработка данных, моделирование и проведение анализа.
Некоторые называют Pandas как бы «ответом» семейству библиотек Tidyverse языка R. В целом, в этом есть доля правды, ведь оба инструмента решают схожие задачи. «Что из этого лучше», – спросите Вы? Лично я для задач анализа данных отдаю предпочтение языку R. На мой взгляд, язык для этого больше заточен и многие вещи на нем делать элементарно проще и удобней. Однако, я ни в коем случае не отрицаю авторитетность Pandas и его положение в этом сегменте – суперполезная библиотека и must have любого питониста.
Очевидные плюсы Pandas:
- Высокая репрезентативность данных. Работать с табличными данными в Pandas удобно, комфортно и понятно.
- Лаконичность кода. То, что Вы будете писать на базовом Python в десятки-сотни строчек кода, с помощью Pandas Вы можете запрограммировать за 1-2 строчки.
- Широкие возможности. Помимо стандартного набора функций, Вы получаете еще и кучу дополнительных фичей – фильтрации по различным условиям, сегментацию и сегрегацию данных, а также много чего другого.
- Эффективная работа с большими наборами данных. Мы сейчас не про Big Data, а просто про датасеты большого размера. Попробуйте в Excel отфильтровать огромную таблицу. В лучшем случае – программа не вылетит. Pandas же с такими задачами справляется легко.
- Библиотека заточена под Python. Что это значит? А, на самом деле, это очень важный фактор. Это значит, что результат обработки библиотекой Pandas Вы спокойно можете передать на вход другой библиотеки (например, NumPy) и совершенно беспрепятственно продолжать работу.
Однако, как и у всех, у Pandas есть ряд недостатков:
- Крутая learning curve. Вы можете быстро войти в использование Pandas, но чем дальше – тем сложней.
- Непростой синтаксис. Написание кода на Pandas выглядит несколько своеобразно и некоторым это не очень нравится, что является очевидным недостатком этой библиотеки.
- Слабая документация. Это очень большой недостаток. На практике, когда Вы остаетесь один на один с библиотекой, а дедлайны горят, было бы очень неплохо иметь хорошую документацию. И у многих питоновских библиотек она есть – например, у PyTorch. А у Pandas она бедненькая.
Тем не менее, библиотека крутая и избегать ее не стоит (да и не получится особо, жизнь заставит), даже несмотря на недостатки.
2. Keras
Как и в предыдущей подборке, здесь мы не обойдемся без deep learning библиотеки. Ранее мы уже рассмотрели PyTorch и Tensorflow, пришло время и для Keras.
Keras – как бы библиотека-обертка над некоторыми другими deep learning фреймворками (например, Tensorflow). Библиотека была спроектирована, чтобы облегчить процесс экспериментов: возможность быстро превращать идеи в результат – залог успеха!
Все основные сильные стороны библиотеки Keras вытекают из ее предназначения:
- Она легка в использовании, всего в одну понятную строчку кода мы можем добавить новый слой нейронной сети со всеми параметрами.
- В «стандартной комплектации» библиотеки идет много полезных функций, плюс она отлично работает в паре с другими библиотеками по предобработке и очистке данных, что делает процесс исследования максимально безболезненным.
- Так называемый деплой (т.е. запуск) проектов хорошо проходит на самых разных устройствах, в том числе на мобильных.
Опять же, недостатки тоже логично вытекают из основного посыла библиотеки:
- В Keras используется высокий уровень абстракции, из-за чего полноценное редактирование моделей или создание концептуально новых моделей – весьма проблемный процесс для разработчика. Однако, если базовые решения (и весьма неплохие) Вас устраивают – это то, что Вам надо.
- Некоторые ошибки, которые появляются в ходе проведения экспериментов, не особо понятны и их очень сложно использовать для дебаггинга (т.е. для исправления ошибок).
- Библиотека написана на Python и существует только для Python, что несколько ограничивает ее применения. Классический вариант – когда библиотека написана для нескольких основных языков в индустрии (например, для C++, Python, Matlab и т.д.).
Как итог – библиотека популярная (согласно официальному сайту, это самый популярный фреймворк среди топ-5 команд-победителей на Kaggle) и прекрасно подходит как новичкам, так и продвинутым пользователям. Да и в конце концов – чем больше Вы знаете, тем лучше! Тем более в индустрии deep learning все инструменты так тесно между собой связаны, что рано или поздно придется освоить, как минимум, несколько.
3. SciPy
Вообще говоря, со SciPy в рамках наших обзоров Вы уже неоднократно знакомились. Не помните? Объясняем. SciPy – экосистема Python, включающая в себя библиотеки для проведения инженерных расчетов, вычислений и исследований. И как раз-таки эти библиотеки Вы уже и знаете – например, NumPy, Matplotlib, Pandas и другие.
Область применения SciPy весьма велика – от вычисления интегралов до обработки сигналов и изображений.
Слабые и сильные стороны экосистема SciPy наследует напрямую от входящих в нее библиотек:
- Широкий спектр решаемых задач (большое количество математических методов – оптимизация, интегрирование, решение дифференциальных уравнений; методов обработки изображений и сигналов; инструменты визуализации; поддержка кода на других языках и прочее).
- Расширяемость: функциональность библиотеки SciPy можно расширить за счет подключения сторонних библиотек и инструментов. Например, расширение OpenOpt для оптимизации.
На слабых сторонах отдельно останавливаться не будем, т.к. для каждой входящей в состав SciPy библиотеки они разные и нет смысла пытаться их совместить.
Основной смысл такой – библиотека SciPy абсолютно точно Вам нужна, если Вы в том или ином виде занимаетесь проведением расчетов/обработкой результатов экспериментов/околонаучными разработками. Прямые конкуренты экосистемы SciPy – Matlab и R. Если Вы предпочитаете Python, то можете достаточно легко и беспрепятственно перейти с привычных языков на Python, просто освоив нужные модули SciPy.
4. Requests
Если Вам не приходится работать с вебом, то библиотека Requests, возможно, обойдет Вас стороной. Однако, в наше время едва ли много людей смогут обойти HTTP запросы стороной – так или иначе всем приходится автоматизировано скачивать что-то из сети; работать с API и делать прочие штуки. Поэтому хотя бы базовые вещи из библиотеки Requests – очень желательно к изучению.
Если коротко, то Requests – библиотека Python, которая позволяет в «человеческом» виде отправлять и принимать http-запросы. Вообще, работа с http – нетривиальная задача в любом языке программирования, и Python – не исключение. А Requests как раз и позволяет хотя бы немного облегчить жизнь разработчику.
Кстати говоря, это одна из самых популярных библиотека на Github – у нее более 40 тысяч звезд.
Обсуждать здесь плюсы и минусы не очень объективно, т.к. особых конкурентов у библиотеки просто нет. Можно лишь отметить, что синтаксис достаточно удобен и понятен. Помимо этого, функциональность библиотеки также весьма велика – например, requests поддерживает полную работу с API, а также содержат вшитый JSON-декодировщик.
Если Вы так или иначе пересекаетесь с веб-запросами/веб-скраппингом/парсингом или другими занятными вещами, то для Вас это must have. Если в Вашу сферу интересов это не входит, то рекомендуем хотя бы поверхностно поиграться с этой библиотекой. Возможно, это Вам позволит автоматизировать и упросить некоторые процессы.
Заключение
«Нет предела совершенству», – пословица абсолютно про программирование. Вы можете быть спецом в какой-то области, но «освоить какой-то язык программирования» на все сто процентов – невозможно. Слишком много библиотек, чтобы знать все (да это и не нужно). Но знать самые базовые вещи – крайне желательно для специалиста в любой области. Чем большим набором знаний Вы обладаете, тем легче Вы будете решать возникающие задачи; тем шире будет Ваш кругозор и тем выше Вы будете цениться в профессиональной среде.
Изучите Python на курсе «Data Science Academy» от SF Education!
Автор: Андрон Алексанян, практикующий Data Scientist и эксперт SF Education