• A
  • A
  • A
  • АБВ
  • АБВ
  • АБВ
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Язык программирования Python

2026/2027
Учебный год
RUS
Обучение ведется на русском языке
3
Кредиты
Статус:
Курс обязательный
Когда читается:
3-й курс, 1, 2 модуль

Преподаватели

Программа дисциплины

Аннотация

Язык Python рассматривается с двух позиций: как инструмент для анализа данных и для разработки веб-приложений. С точки зрения основы для анализа данных рассматривается основной стек модулей: Numpy, Matplotlib, Pandas. С точки зрения разработки веб-приложений рассматриваются средства для организации процесса разработки, фреймворки и технологии для создания бэкенда и фронтенда, а также их взаимодействия: GitLab, PyCharm/VS Code, FastAPI, Pydantic, SQLAlchemy, Numba, Redis, Celery, Shiny, Docker и др.
Цель освоения дисциплины

Цель освоения дисциплины

  • Получение знаний и навыков использования базового стека модулей для анализа данных: Numpy, Matplotlib, Pandas.
  • Получение знаний и навыков разработки веб-приложений на Python с использованием средств, фреймворков и технологий: GitLab, PyCharm/VS Code, FastAPI, Pydantic, SQLAlchemy, Numba, Redis, Celery, Shiny, Docker и др.
Планируемые результаты обучения

Планируемые результаты обучения

  • Умеет создавать массив Numpy вручную, генерировать различными способами. Умеет обращаться с атрибутами массива, изменять его форму.
  • Осуществляет выборку элементов из массива Numpy используя индексацию, срезы, маскирование, специальное индексирование.
  • Генерирует массивы Numpy из псевдослучайных чисел согласно основным законам распределения.
  • Выполняет арифметические операции над массивами Numpy одинаковых размеров. Применяет броадкастинг для выполнения арифметических и других операций над массивами Numpy разных размеров.
  • Выполняет матричные операции и операции линейной алгебры над массивами Numpy.
  • Загружает массивы Numpy из текстовых и бинарных файлов. Сохраняет массивы Numpy в текстовые и бинарные файлы.
  • Создает таблицу и ряд Pandas вручную и генерирует различными способами, обращается к атрибутам.
  • Загружает таблицу Pandas из текстовых и бинарных файлов и по URL. Сохраняет таблицу Pandas в текстовый и бинарный файл.
  • Выполняет выбор элементов из таблицы Pandas используя индексирование, срезы, маскирование и специальное индексирование. Применяет селекторы loc и iloc для выбора элементов.
  • Применяет операции удаления и добавления строк и столбцов, склейки таблиц и рядов Pandas.
  • Применяет к таблице Pandas операцию GroupBy для вычисления агрегированных величин по группам. Применяет различные агрегирующие функции.
  • Применяет операции pivot и melt для преобразований между вытянутой и сводной таблицей Pandas. Применяет метод pivot_table для построения сводной таблицы используя различные агрегирующие функции.
  • Выполняет все виды слияния таблиц Pandas. Объясняет разницу между различными видами слияния.
  • Выполняет простой разведочный анализ данных загрузив таблицу или несколько таблиц из файлов при помощи Pandas.
  • Строит графики Matplotlib, настраивая стиль линий и маркеры, выводя подписи к осям и заголовок, управляя засечками и подписями к ним, выводя легенду, цветовую шкалу.
  • Строит точечные, линейные и столбчатые графики Matplotlib: набор линий, диаграмма рассеяния, гистограмма.
  • Строит графики Matplotlib с цветовыми шкалами: диаграмма рассеяния, тепловая карта, контурные карты.
  • Строит и настраивает несколько графиков на одном рисунке Matplotlib.
  • Строит трехмерные графики Matplotlib: диаграмма рассеяния, поверхность.
  • Сохраняет рисунок Matplotlib в растровых и векторных форматах. Управляет разрешением растрового изображения и шириной полей.
  • Выполняет основные операции по работе с Git-репозиторием используя функции PyCharm / VS Code: клонирование, создание ветки, переключение в другую ветку, добавление файлов в коммит, отмена изменений, выполнение коммита, использование полки (Shelf).
  • Создает и выполняет базовую настройку проекта в GitLab. Создает и выполняет базовую настройку Issue и Merge request. Привязывает Merge request к Issue. Связывает несколько Issue. Анализирует Merge request и выполняет ревью кода. Подтверждает Merge request (выполняет слияние). Отслеживает развитие проекта по графу репозитория.
  • Реализует цикл разработки новой функции или исправления ошибки в GitLab: от получения требований до слияния Merge request.
  • Разрешает конфликты в коде используя инструментарий PyCharm/VS Code. Выполняет обратное слияние и разрешение конфликтов перед завершением работы с Merge request.
  • Умеет создавать минимальное работоспособное приложение используя фреймворк Shiny.
  • Использует лейауты, контейнеры и элементы визуального интерфейса для создания одностраничного приложения на основе фреймворка Shiny.
  • Использует модульную архитектуру Shiny для повторного использования типовых частей приложения.
  • Выполняет контейнеризацию приложения Shiny с использованием Docker.
  • Создает минимальное работоспособное приложение на основе фреймворка FastAPI.
  • Создает эндпоинты для основных типов запросов (GET, POST, ...) на основе FastAPI. Управляет передачей параметров в эндпоинт (через адресную строку или тело запроса).
  • Использует аннотацию типов и модели Pydantic для валидации запросов и ответов в FastAPI.
  • Использует механизм инъекции зависимостей (DI) фреймворка FastAPI для создания сессии с БД и др.
  • Создает и использует Middleware для дополнительной обработки запросов в FastAPI.
  • Формирует и использует интерактивную документацию API на основе FastAPI
  • Создает простые модели данных Pydantic. Использует класс Field или Annotated для задания значений по-умолчанию и дополнительных ограничений.
  • Создает сложные модели данных Pydantic: root-модели, вложенные модели. Использует специальные типы данных, например Email, HttpUrl, RedisDsn и др.
  • Создает валидаторы для пре и пост валидации полей и моделей Pydantic. Создает сериализаторы для специальной сериализации моделей Pydantic.
  • Создает функции для преобразования моделей данных Pydantic в модели таблиц SQLAlchemy и обратно.
  • Применяет Pydantic для валидации вызовов функций. Применяет модели данных Pydantic для валидации запросов в FastAPI.
  • Использует декоратор jit из модуля Numba для компиляции функций. Настраивает компиляцию через параметры декоратора jit. Измеряет время выполнения до и после компиляции.
  • Создает функции, пригодные для компиляции при помощи декоратора jit в режиме nopython. Использует хорошие практики для создания таких функций. Использует массивы и операции с ними из модуля Numpy.
  • Реализует алгоритмы, пригодные для простого распараллеливания. Использует декоратор jit и генератор prange для ускорения расчетов путем их распараллеливания на несколько ядер CPU.
  • Создает задачи Celery на основе класса Task.
  • Создает и настраивает приложение на основе фреймворка Celery. Использует Redis как брокер сообщений и бэкенд результатов Celery.
  • Использует Flower для контроля за выполнением задач в приложении Celery.
  • Создает docker-контейнер, выполняющий задачи Celery в фоновом (асинхронном) режиме. Создает docker-compose.yaml для оркестрации взаимодействующих контейнеров на основе Celery, Redis, Flower.
  • Использует основные операции и создает Dockerfile для контейнеризации приложения на Python. Выполняет построение образа, запуск контейнера и его остановку.
  • Использует основные операции и создает docker-compose.yaml файл для управления несколькими взаимодействующими контейнерами. Выполняет построение образов, запуск и перезапуск контейнеров и их остановку.
  • Создает модели таблиц SQLAlchemy. Использует основные типы данных. Указывает первичный ключ.
  • Создает отношение типа 1-к-N между таблицами SQLAlchemy. Указывает внешние ключи.
  • Создает отношение между таблицами SQLAlchemy типа N-к-N на основе ассоциативной таблицы. Корректно настраивает отношения между исходными таблицами и ассоциативной таблицей.
  • Создает класс для подключения к БД и создания сессий. Использует СУБД SQLite или PostgreSQL для добавления, удаления и изменения записей.
  • На основе паттерна репозиторий создает класс для базовой работы с любой сущностью (таблицей) SQLAlchemy. Реализует операции CRUD. Реализует простой фильтр для операций чтения.
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Numpy / многомерные массивы
  • Pandas / таблицы данных
  • Matplotlib / графики
  • GitLab / процесс разработки ПО
  • Shiny / фронтенд на Python
  • Работа с БД / SQLAlchemy
  • FastAPI / бэкенд на Python
  • Pydantic / валидация данных
  • Celery / фоновые задачи
  • Numba / ускорение расчетов
  • Docker / контейнеризация
Элементы контроля

Элементы контроля

  • неблокирующий Домашнее задание 1
  • неблокирующий Домашнее задание 2
  • неблокирующий Домашнее задание 3
  • неблокирующий Домашнее задание 4
  • неблокирующий Дополнительные задания сверх объема курса
  • неблокирующий Тесты
Промежуточная аттестация

Промежуточная аттестация

  • 2026/2027 2nd module
    0.18 * Домашнее задание 4 + 0.129 * Тесты + 0.18 * Домашнее задание 3 + 0.18 * Домашнее задание 2 + 0.18 * Домашнее задание 1 + 0.151 * Дополнительные задания сверх объема курса
Список литературы

Список литературы

Рекомендуемая основная литература

  • Python for data analysis : data wrangling with pandas, numPy, and IPhython, Mckinney, W., 2017
  • Использование Docker : разработка и внедрение программного обеспечения при помощи технологии контейнеров, Моуэт, Э., 2017

Рекомендуемая дополнительная литература

  • Pandas for everyone : Python data analysis, Chen, D. Y., 2023
  • Python и анализ данных : первичная обработка данных с применением pandas, NumPy и Jupiter, Маккинни, У., 2023

Авторы

  • Князева Ирина Васильевна
  • Бобер Станислав Алексеевич