Магистратура
2025/2026




Программирование на Python
Статус:
Курс обязательный (Аналитика больших данных)
Где читается:
Факультет компьютерных наук
Когда читается:
1-й курс, 1, 2 модуль
Охват аудитории:
для своего кампуса
Преподаватели:
Паточенко Евгений Анатольевич
Язык:
русский
Кредиты:
6
Контактные часы:
56
Программа дисциплины
Аннотация
Дисциплина предназначена для освоения студентами основ программирования на языке Python. В ходе обучения студенты изучат основные концепции языка программирования Python, включая работу с переменными, условиями, циклами и функциями. Особое внимание будет уделено изучению библиотек для анализа данных, визуализации и обработки файлов. Для обеспечения практического опыта и эффективного освоения учебного материала предусмотрено выполнение заданий на удаленном сервере. Это обеспечит студентам возможность применять полученные знания на практике и приобрести опыт работы в реальных условиях.
Цель освоения дисциплины
- Сформировать у студентов базовые и продвинутые навыки работы с данными на Python, включая использование библиотек Pandas, NumPy и инструментов для их эффективной обработки.
- Научить применять методы агрегации, группировки, фильтрации, объединения данных и расчёта метрик для решения аналитических и продуктовых задач.
- Развить умение визуализировать данные с помощью matplotlib, seaborn и plotly, создавать понятные графики и диаграммы для анализа и презентации результатов.
- Ознакомить с принципами работы с «грязными» данными, временными рядами, оконными функциями и подходами к оптимизации обработки больших массивов информации.
- Дать навыки автоматизации аналитических задач с использованием API и интеграций с внешними сервисами, а также опыта в построении аналитических пайплайнов.
- Подготовить студентов к выполнению сквозного проекта по анализу данных, обеспечив комплексное понимание всех этапов работы — от загрузки и очистки данных до визуализации и интерпретации результатов.
Планируемые результаты обучения
- – Понимает, что такое переменная в Python
- – Знаком с базовыми типами данных: int, float, str, bool
- – Умеет создавать переменные и проводить с ними операции
- – Знает, что такое списки и кортежи и чем они отличаются.
- – Умеет применять методы списков и кортежей
- – Знаком с индексами, умеет обращаться к элементам списка и кортежа
- – Умеет создавать списки и множества и проводить над ними операции: сортировать, добавлять элементы, объединять
- – Умеет работать со строками и знает основные методы строк.
- – Понимает, что строка — это последовательность символов, которую можно конвертировать в массив
- – Знает, что такое множества и словари, понимает, для каких задач они подходят
- – Может выполнять простые операции с множествами
- – Умеет обращаться к ключам и значениям по ключам в словаре
- – Умеет создавать последовательности чисел с помощью range и преобразовывать их в списки
- – Знает, что существует тип данных None
- – Знает, что такое условная конструкция и понимает связь между условными конструкциями и логическими выражениями
- – Знает структуру условных конструкций, правила отступов и оформления блоков кода в Python
- – Знаком с операторами if, elif, else, pass
- – Знает как работать с тернарным оператором (if else в одну строку)
- – Понимает, что такое циклы в Python и для каких задач они применяются
- – Знает структуру циклов, знаком с понятиями итерации и переменной в цикле
- – Знает два типа циклов (через for и while)
- – Умеет управлять циклами с помощью операторов break и continue
- – Знаком с функциями enumerate и zip, умеет итерироваться сразу по нескольким структурам
- – Умеет создавать списки на основе других списков с помощью краткой записи list comprehensions
- – Знает, что аналогичным образом можно создавать множества и словари
- – Владеет конструкцией with open() as file
- – Умеет считывать файлы из директории в Jupyter ноутбуке и записывать данные в файл
- – Понимает, зачем нужны функции и как выглядит их структура: ключевое слово def, название функции, аргументы функции, тело функции, оператор return
- – Знает, что аргументы бывают именованные и неименованные (порядковые), понимает, что сначала идут неименованные, потом именованные
- – Понимает, как работает ключевое слово return и умеет присваивать переменной значение, которое возвращает функция
- – Имеет представление о пространстве имен и области видимости функции
- – Умеет упаковывать возвращаемые значения в tuple и распаковывать результат функции в несколько переменных
- – Умеет применять конструкции *args и **kwargs для передачи аргументов в функцию
- – Знает, зачем нужны генераторы и чем они отличаются от функций
- – Умеет писать простые генераторы, использовать ключевое слово yield и функцию next()
- – Понимает, зачем нужны lambda функции и знает их синтаксис
- – Умеет применять функции map и filter
- – Знает, как загрузить файл в память машины, на которой работает код Python
- – Знает про формат csv и функции из библиотеки pandas для чтения файлов с разными расширениями
- – Понимает, что такое метод и атрибут в Python
- – Умеет использовать методы и атрибуты датафреймов
- – Может с их помощью описать свойства таблицы
- – Знает, как работают методы group и agg
- – Умеет агрегировать данные в таблице для подсчета метрик
- – Способен предоставлять достоверные результаты расчетов заказчику
- – Умеет задавать правильные вопросы к качеству расчетов и получать результат несколькими способами, разница между которыми может быть сравнима
- – Может комбинировать все полученные знания, чтобы автоматизировать повторяющиеся задачи
- Поймёт принципы импорта библиотек и модулей в Python, включая работу с алиасами, импорт отдельных функций и правила оформления импортов по PEP8.
- Освоит установку и обновление библиотек с помощью pip, а также базовые возможности NumPy и Pandas для анализа данных.
- Научится загружать, просматривать, фильтровать, сортировать и модифицировать табличные данные в Pandas, включая работу с пропущенными значениями и присвоением новых значений.
- Сможет выполнять агрегацию и группировку данных, вычислять статистические показатели и применять методы для анализа временных и строковых данных.
- Освоит базовые приёмы подготовки данных для аналитических задач, в том числе расчёт пользовательских метрик (например, Churn Rate) и объединение переменных.
- Получит опыт анализа реального датасета (бронирования отелей) для выявления ключевых закономерностей и ответов на бизнес-вопросы.
- – Понимает связь навыков работы в Python и роль аналитика в команде
- – Может брать инициативу на себя для решения задач, которые требуют знаний языка программирования
- – Понимает, что для максимально эффективной работы сырые данные необходимо структурировать
- – Умеет преобразовывать данные для расчета метрик и построения графиков
- – Знает кейсы, в которых можно применять метод apply
- – Умеет применять метод apply в различных сценариях обработки данных
- – Знает, как работать с массивами внутри датафреймов
- – Понимает разницу между обычными функциями и lambda функциями
- – Умеет писать кастомные lambda функции и применять их к данным в каждой ячейке
- – Понимает, какие задачи аналитик может решить с помощью Python
- – Умеет представлять в голове алгоритм решения задачи и реализовывать его в коде
- – Понимает, что получается при объединении таблиц
- – Понимает разницу между разными видами merge (join)
- – Понимает логику пересечения двух таблиц при объединении по ключу
- – Понимает, как через данные и расчеты выразить ту ли иную сущность, чтобы ответить на вопросы бизнеса
- – Умеет создавать метрики, позволяющие измерять и оценивать необходимые бизнесу сущности
- – Понимает, зачем нужна визуализация и как она упрощает анализ данных
- – Умеет использовать различные инструменты визуализации в Python для анализа данных
- – Знает, как импортировать нужные библиотеки и быстро построить нужный график
- – Понимает принцип работы со сводными таблицами
- – Умеет использовать методы pivot, pivot_table
- – Умеет объединять данные из нескольких датафреймов
- – Знает, что данные можно объединять по вертикали и горизонтали
- – Владеет методом pd.merge, понимает, что такое ключ объединения и за что отвечают аргументы how, on, left_on, right_on (горизонтальное объединение)
- – Владеет методом pd.concat (вертикальное объединение)
- – Знает, как импортируется библиотека
- – Знает примерную структуру графика и базовые параметры для настройки
- – Знает, как использовать метод plot и подавать в него данные для отрисовки графиков
- – Может построить простой график и настроить базовые параметры (подписи осей, заголовок, размер графика)
- – Знает основные типы графиков (лайнплот, барплот, гистограмма, точечная диаграмма и т.д.)
- – Имеет на руках готовые примеры построения графиков и код, который можно переиспользовать в своих задачах
- – Знает основные объекты библиотеки (Figure, Axes)
- – Может построить несколько графиков на одной сетке
- – Имеет готовые примеры построения продвинутых графиков на одной сетке
- – Понимает, чем seaborn отличается от matplotlib и как с ней связана
- – Умеет строить простые графики в seaborn с помощью displot, scatterplot и т.д.
- – Знает, какие задачи решают аналитики и какими способами достигается результат
- – Имеет опыт применения всех ранее полученных знаний для решения задачи по анализу данных рекламной сети
- – Ищет баги в аналитических логах
- – Понимает, что данные не всегда бывают точными и правильными
- – Умеет обнаружить проблемы в данных и знает, как с ними справляться
- – Знает статистические метрики центральной тенденции (медиана, процентиль), умеет их рассчитывать
- – Может визуализировать распределение изучаемой метрики с помощью Python
- – Умеет делать продвинутую фильтрацию данных и применять сразу несколько фильтров к таблице
- – Понимает, как визуализация помогает анализировать данные
- – Знает основные библиотеки для визуализации в Python (seaborn,matplotlib, plotly) Скользящее среднее и оконные функции
- – Понимает логику работы оконных функций в Python
- – Умеет эффективно фильтровать и агрегировать данные внутри групп
- – Знаком с базовыми возможностями по улучшению отображения и читаемости графиков в Jupyter Notebook
- – Умеет масштабировать оси, изменять цвета и заголовки графиков
- – Понимает синтаксис Plotly для отображения интерактивных графиков
- – Ориентируется в документации библиотеки
- – Может самостоятельно пройти путь от неструктурированных данных до понятной визуализации рассчитанной статистики при помощи гистограммы и Bar Chart
- – Знает о модуле os
- – Умеет применять конструкцию list comprehension для быстрого формирования списков
- – Умеет работать с файловыми системами внутри Jupyter Notebook с помощью модуля os
- – Умеет читать разные форматы и расширения данных из локальной директории
- – Умеет применять построчное чтение файлов при помощи методов open().readlines()
- – Ориентируется в в файловой системе
- – Умеет навигироваться по файлам и папкам в рабочей директории
- – Знает, как учитывать тип разделителя при чтении файлов формата csv и txt.
- – Понимает, как отображается табуляция в текстовых файлах
- – Понимает, как считать только часть файла при помощи цикла, переменных True/False и построчного чтения файлов
- – Знает, как прочитать только часть колонок в файле
- – Знает о типе данных DateTime
- – Умеет конвертировать String и Int типы данных в DateTime
- – Умеет выполнять арифметические операции с датами (поиск временного интервала между двумя датами)
- Освоит сбор и объединение данных из разрозненной файловой структуры — научится считывать данные из нескольких CSV-файлов, расположенных в папках по датам, категориям и менеджерам, объединять их в единые датафреймы и добавлять вычисляемые колонки.
- Научится анализировать временные ряды и выявлять аномалии — сможет рассчитывать динамику заказов по дням, находить выбросы, определять сезонность и аномальные дни, интерпретировать причины их появления.
- Освоит интеграцию данных из разных источников — будет объединять заказы, статусы, продукты и курс валюты в единый датафрейм, проводить агрегацию и фильтрацию по условиям задачи.
- Научится рассчитывать ключевые бизнес-метрики — общую выручку, средний чек, долю отменённых заказов, динамику метрик по дням и в разрезе брендов, товаров и менеджеров.
- Освоит приёмы бренд-анализа и товарного ассортимента — определит, какие бренды приносят наибольшую выручку, какие товары востребованы, а какие не заказываются, и сможет сделать выводы для оптимизации «виртуальной полки».
- Разовьёт навык построения наглядных визуализаций для управленческих решений — подготовит графики и сводные таблицы, отражающие результаты анализа по статусам заказов, брендам и менеджерам, и оформит их в отчёт.
- – Понимает смысл API, разбирается в понятиях POST и GET в контексте работы интернет-сервисов
- – Умеет авторизироваться в API сервисах и понимает, что означает наличие аккаунта для подключения к API
- – Знает, как создавать ботов ВКонтакте, от имени которых можно автоматически отправлять сообщения
- – Умеет пользоваться python библиотекой vk_api
- – Имеет опыт работы с библиотеками requests, json и random
- – Может создать бота, подключиться к нему и отправить результаты расчетов текстовым сообщением ВКонтакте
- – Понимает, как и зачем применяется Google API
- – Умеет проходить авторизацию в Google API
- – Умеет подключаться к таблицам и скачивать их через библиотеку к себе Jupyter Notebook
- – Умеет выгружать данные о действиях на сайте в Яндекс.Метрике с помощью библиотеки requests
- Освоит разные способы итерации по DataFrame (iterrows, itertuples, apply) и сравнит их эффективность с помощью замеров времени выполнения.
- Научится применять векторизацию и работу с NumPy массивами для ускорения обработки больших объёмов данных.
- Получит опыт написания пользовательских функций (на примере haversine) и их интеграции в Pandas-процессы для вычисления новых признаков.
- Научится выявлять и обрабатывать аномалии в данных с помощью фильтрации, условий и визуализации (boxplot).
- Освоит методы работы с мультииндексами (stack, unstack, xs) и преобразования форматов данных (melt, wide_to_long) для подготовки датасетов к анализу.
- Сможет объединять приёмы оптимизации и преобразования данных для подготовки «чистого» набора с минимальными затратами по времени.
- Освоит продвинутые приёмы работы с Pandas для группировки, агрегации, расчёта скользящих показателей и подготовки данных к анализу.
- Научится строить и кастомизировать графики в Seaborn (catplot, FacetGrid, pairplot) для выявления закономерностей и сравнений по категориям и регионам.
- Получит навыки применения техник векторизации и пайплайнов в Pandas для повышения эффективности кода.
- Сможет визуализировать тренды, распределения и взаимосвязи показателей, а также оформлять графики с нужным порядком категорий, палитрами и аннотациями.
- Научится связывать выводы из визуализации с бизнес-задачами и формулировать инсайты для принятия решений.
- Познакомимся с интерфейсом Google Colab и узнаем, как устроена эта среда.
- Научимся создавать и запускать ячейки с кодом и текстом.
- Разберёмся, в чём плюсы и минусы работы в Google Colab.
- Освоим работу с панелью инструментов и другими элементами интерфейса.
- Попробуем подключать библиотеки и использовать встроенные ИИ-инструменты.
- Научимся загружать файлы в Colab и работать с данными из Google Диска.
- Поймем, в чем отличие БД и СУБД и какие возможности предоставляют базы данных
- Узнаем, как устроены базы данных, что такое сущности и отношения между ними
- Научимся писать основные SQL-запросы и объединять таблицы через JOIN
- Научимся подключаться к PostgreSQL через python и оперировать данными из базы данных
- Познакомимся с понятием «класс» и философией ООП.
- Рассмотрим основные принципы построения классов
- Научимся создавать классы и объекты, добавлять методы
- Научимся реализовывать наследование
- Научимся использовать магические методы
- Научимся импортировать встроенные и ставить сторонние библиотеки
- Научимся устанавливать конкретные версии сторонних пакетов с помощью pip и разберем ситуации, когда необходимо фиксировать версии
- Научимся изолировать друг от друга проекты, которые имеют разные и противоречащие зависимости
- Познакомимся с теорией клиент-серверного взаимодействия и узнаем, какая информация передается в http-протоколе
- Научимся отправлять запрос серверу и возвращать ответ от сервера
- Разберемся что такое api, что такое фреймворк, REST api и fastapi
- Научимся писать endpoint-ы с и принимать параметры для веб-сервиса на fastapi
- Научимся разрабатывать веб-сервис на базе FAST API, который будет обрабатывать HTTP-запросы к базе данных и возвращать посты с наибольшим числом лайков.
- Узнаем, какие существуют best practices для разработки веб-приложений
- Получить опыт установки Python локально на свой компьютер
- Познакомимся с концепцией ORM
- Научимся работать с базой данных через SQLAlchemy
- Поймёт, как работает веб-сервер на низком уровне: от открытия сокета до отправки ответа клиенту.
- Сможет вручную реализовать простой REST API без фреймворка, а затем переписать его с использованием FastAPI, сравнив подходы.
- Разберётся в процессе обработки HTTP-запроса: разбор заголовков, парсинг тела, валидация данных и формирование ответа.
- Освоит базовые конструкции FastAPI: создание объектов приложения, объявление маршрутов с декораторами, валидация и сериализация данных через Pydantic.
- Поймёт преимущества и ограничения ручного подхода и фреймворка, сможет обосновать выбор подхода для разных задач.
- Сможет запускать и тестировать веб-приложения на FastAPI, понимать, как работает автодокументация и встроенная валидация.
Содержание учебной дисциплины
- Начало работы в Python
- Условия и циклы
- Функции
- Первые аналитические задачи
- Еще больше о Pandas
- Исследование данных и создание метрик
- Продвинутые расчёты и визуализация
- Решение продуктовых задач
- Оконные функции и интерактивные графики
- Работа с грязными данными
- Проект по Python №1
- API (Google Spreadsheets, Яндекс.Метрика)
- Дополнительные возможности Pandas
- Практикум по Python: работа с данными в pandas и построение визуализаций
- Google Colab, обзор инструмента
- Базы данных в Python: основы
- Классы и ООП
- Библиотеки и виртуальное окружение
- Backend-разработка: что это такое. Фреймворк FastAPI для прототипирования backend-сервера
- Проект по Python №2
- Полезные вещи в разработке
- Установка Анаконды: необязательный урок
- Бонусный урок. Базы данных в Python: ORM
- Вебинар "Написание веб-сервер с нуля, сравнение с FastAPI”
Элементы контроля
- Домашнее задание к разделам (урокам) 1-19. Квиз на закрепление основных понятий урока.44 тестовых задания: 1 урок - 11 заданий, 2 урок - 10 заданий, 3 урок - 10 заданий, 7 урок - 3 задания, 13 урок - 1 задание, 15 урок - 6 заданий, 16 урок - 1 задание, 19 урок - 2 задания.
- Домашнее задание к разделам (урокам) 1-23. Практические задания по Python.211 практических задач: 1 урок - 22 задания, 2 урок - 29 заданий, 3 урок - 9 заданий, 4 урок - 11 заданий, 5 урок - 12 заданий, 6 урок - 18 заданий, 7 урок - 6 заданий, 8 урок - 12 заданий, 9 урок - 7 заданий, 10 урок - 8 заданий, 12 урок - 11 заданий, 13 урок - 21 задание, 15 урок - 5 заданий, 16 урок - 14 заданий, 17 урок - 5 заданий, 18 урок - 9 заданий, 19 урок - 9 заданий, 23 урок - 3 задания.
- Финальный проект по Python (урок 11 и урок 20).Студентам предоставляется 3 варианта финального проекта на выбор, каждая из которых подразумевает выполнение практического задания.
Промежуточная аттестация
- 2025/2026 2nd moduleИтоговая оценка соответствует сумме баллов за выполненные задания на LMS karpov.courses, приведенные к 10-балльной шкале (см. таблицу). Для каждого задания на LMS-платформе karpov.courses определён дедлайн в 14 календарных дней, после наступления которого студенту начисляется 70% от итогового балла за задание.