![](https://habrastorage.org/getpro/habr/upload_files/454/14c/69f/45414c69fc318ba65e544992cff83e10.jpg)
Специалисты по анализу данных используют много разных инструментов, причем новые технологии (фреймворки, библиотеки и т.д.) появляются так часто, что у начинающих постоянно возникает вопрос, что им нужно изучать в первую очередь. Здесь вы найдете обзор базовых инструментов. Мы используем эти инструменты в проектах, связанных с прогнозированием и видеоаналитикой для промышленности, сельского хозяйства, ритейла и других отраслей.
Языки программирования
Какие же инструменты нужны специалисту, который занимается анализом данных? Это, конечно, зависит от того, что входит в его обязанности. У нас в центре машинного обучения достаточно часто возникает ситуация, когда одному и тому же сотруднику приходится и работать с источниками данных, и анализировать эти данные, и обучать модели машинного обучения, и реализовывать прототипы сервисов.
В любом случае основой является язык программирования, и без его хорошего знания двигаться дальше будет сложно. Сейчас самый распространенный язык — это Python, в нашем центре мы специализируемся именно на нем. Есть ли альтернативы Python? Да, но они достаточно нишевые.
В таблице 1 я представил основные языки программирования и их особенности:
![Табл 1. Особенности языков программирования при их использовании для анализа данных Табл 1. Особенности языков программирования при их использовании для анализа данных](https://habrastorage.org/getpro/habr/upload_files/c0e/9bd/63d/c0e9bd63d403c215f61624888e83ded4.png)
Среда разработки
Среда разработки (IDE) — ПО, предназначенное для написания, тестирования и отладки программного кода.
В Data Science есть нюансы в сравнении с чистой разработкой кода: специалисту нужен не столько код, сколько сами результаты анализа данных. Для анализа очень подходят Jupyter-ноутбуки. Они позволяют писать код, загружать и визуализировать данные, добавлять поясняющие комментарии, формулы, таблицы, причем делать все это можно в одной интерактивной среде.
Есть много инструментов для работы с Jupyter-ноутбуками — начиная с классических Jupyter Notebook и JupyterLab и заканчивая облачными и коммерческими инструментами (Google Colaboratory, Yandex DataSphere, Amazon SageMaker, JetBrains Datalore и другие реализации, заложенные в проприетарные инструменты).
![Табл. 2. Особенности Jupyter Notebook и JupyterLab Табл. 2. Особенности Jupyter Notebook и JupyterLab](https://habrastorage.org/getpro/habr/upload_files/7f8/e9d/d55/7f8e9dd555782faa41cbb04860f3ae66.png)
Всё это веб-инструменты — удобные, интерактивные и не требующие вспомогательного ПО на вашем компьютере, кроме браузера. Однако для профессиональной работы с кодом (в том числе для анализа данных) мы рекомендуем использовать полноценную среду разработки. Ее применение позволяет повысить эффективность работы и качество кода. Какая среда подойдет для анализа данных? На данный момент JetBrains PyCharm и Visual Studio Code являются универсальными IDE в профессиональной разработке на Python.
![Табл. 3. Особенности JetBrains PyCharm и Visual Studio Code Табл. 3. Особенности JetBrains PyCharm и Visual Studio Code](https://habrastorage.org/getpro/habr/upload_files/c5f/979/f14/c5f979f148ee6e8bb6da48b946063eea.png)
VSCode и PyCharm сейчас очень популярны, но мир не стоит на месте и уже появляются среды, адаптированные именно для задач анализа данных (например, Spyder IDE или JetBrains DataSpell). Нельзя сказать, что эти инструменты прямо must have, но нужно держать руку на пульсе и наблюдать за тем, какие полезные функции в них появляются.
Версионирование кода и данных
Важный навык для эксперта по анализу данных — умение работать с системами контроля версий. Особенно когда в сложном проекте задействованы несколько специалистов и им нужно делиться друг с другом результатами экспериментов.
Инструменты для работы с кодом более или менее стандартные: наиболее популярны система контроля версий Git и инструмент GitLab для управления жизненным циклом кода. Вопросы версионирования не менее важны и в работе с данными и моделями. Здесь на помощь приходит DVC — один из наиболее известных инструментов версионирования данных. Он помогает не только версионировать датасеты, но и автоматизировать пайплайны обработки данных и управлять проведением экспериментов.
![Табл. 4. Особенности Git, GitLab и DVC Табл. 4. Особенности Git, GitLab и DVC](https://habrastorage.org/getpro/habr/upload_files/51f/e03/654/51fe03654aee3b9f9e04e863cf536cdf.png)
Управление экспериментами
В последнее время отслеживание результатов экспериментов становится неотъемлемой частью работы дата-сайентиста. Сюда также входит ведение реестра экспериментов, сравнение гиперпараметров, метрик и других результатов, возникающих в процессе работы с данными и ML-моделями.
Инструменты для управления экспериментами (experiment tracking) позволяют хранить их результаты и сравнивать их. Примеры таких решений — MLflow, ClearML, Weights & Biases и др.
![Табл 5. Особенности инструментов для управления экспериментами Табл 5. Особенности инструментов для управления экспериментами](https://habrastorage.org/getpro/habr/upload_files/483/5fc/41e/4835fc41e98a54ce469df0e1e85e1ded.png)
Все указанные нами инструменты — это универсальная база. Практика неизменно требует многочисленных дополнительных решений: фреймворков, библиотек анализа данных и машинного обучения. И здесь буквально разверзается бездна, потому что разные библиотеки предназначены для разных задач: одни подходят для работы с таблицами и массивами чисел (Pandas, NumPy), другие содержат базовые реализации алгоритмов (Scikit-learn, SciPy), третьи являются фреймворками для построения и обучения моделей нейронных сетей (Torch, TensorFlow), четвертые содержат реализации готовых архитектур (Timm, Transformers), пятые подходят для визуализации данных. Также есть специализированные инструменты для статистического анализа, работы с разными источниками данных, трансформации данных, работы с классическими алгоритмами компьютерного зрения, анализа временных рядов и т.д.
В следующих постах мы продолжим тему и расскажем об инструментах, не вошедших в этот базовый обзор.
В качестве заключения отмечу, что инструментов много, поскольку повышается уровень специализации и появляется много новых задач. Для успешной работы не требуется детально изучать все существующие в мире инструменты. Специалисту по анализу данных нужно ведь не так уж и много. Достаточно постановки реалистичной задачи и данных. Если все это есть, то остальные проблемы так или иначе решаемы.
Автор: Антон Чикин, руководитель отдела интеллектуального анализа центра машинного обучения "Инфосистемы Джет"