Магистратура
2019/2020
Программирование и анализ данных
Статус:
Курс обязательный (Журналистика данных)
Направление:
42.04.02. Журналистика
Кто читает:
Институт медиа
Где читается:
Факультет креативных индустрий
Когда читается:
1-й курс, 2-4 модуль
Формат изучения:
без онлайн-курса
Прогр. обучения:
Журналистика данных
Язык:
русский
Кредиты:
7
Контактные часы:
128
Программа дисциплины
Аннотация
Курс «Программирование и анализ данных» является обязательным курсом на образовательной программе «Журналистика данных». Курс состоит из трех блоков. Первый блок включает базовые элементы языка программирования Python, второй блок представляет собой знакомство с инструментами обработки, визуализации и разведывательного анализа данных в Python, третий блок посвящен выгрузке информации из веб-страниц и баз данных, а также основам работы с открытыми данными.
Цель освоения дисциплины
- Целями освоения дисциплины являются овладение навыками программирования на языке Python, овладение методами сбора и обработки данных для решения задач дата-журналистики, овладение элементами веб-дизайна для визуализации данных и создания собственных проектов.
Планируемые результаты обучения
- Умеет работать в среде Jupyter Notebook, создает переменные разных типов, выполняет приведение типов
- Умеет создавать списки, решает прикладные задачи с применением условных конструкций
- Умеет создавать списки, кортежи, множества и словари в Python, обращаться к их элементам и изменять их
- Умеет решать прикладные задачи с применением циклов
- Применяет готовые функции Python, пишет собственные функции на Python, умеет работать с классами, описывает собственные объекты в Python и определяет методы на них
- Умеет загружать и сохранять файлы с данными различных форматов
- Знает этапы предварительной обработки текста и умеет реализовывать их на практике
- Умеет выполнять операции с массивами NumPy
- Умеет строить графики математических функций и визуализировать данные в Python, знает этапы разведывательного анализа данных и умеет реализовывать их на практике
- Умеет загружать файлы с данными; выполняет обработку табличных данных средствами Python
- Знать особенности работы с современными дистрибутивами Python
- Программа на языке Python для работы с базами данных
- Реализация REST интерфейс
- Программа для сбора открытых данных
Содержание учебной дисциплины
- Начало работы в PythonУстановка Python 3 (дистрибутив Anaconda). Знакомство с интерфейсом Jupyter Notebook. Элементы языка разметки Markdown. Установка и импортирование библиотек. Элементарные вычисления в Python. Переменные в Python. Типы данных в Python: числовой, целочисленный, логический, строковый. Преобразование типов.
- Управляющие конструкции в PythonПонятие управляющих конструкций. Построение блок-схемы для понимания структуры кода. Условные конструкции и операторы if-else. Особенности использования оператора elif.
- Структуры данных в PythonСписки, кортежи, множества, словари. Изменяемые и неизменяемые типы данных.
- Циклы в PythonЦиклы for и while Применение циклов к строкам, спискам, кортежам и словарям. Альтернатива коду с циклами: списковые включения.
- Функции и классы в PythonУстройство функций в Python. Написание простейших функций. Lambda-функции. Исключения. Поиск ошибок в коде и отладка. Классы: создание и использование.
- Работа с файламиРабота с файлами в Python: открытие, изменение, сохранение. Разные форматы хранения данных: csv-файлы, json-файлы, txt-файлы.
- Работа с текстамиПредварительная обработка текста. Токенизация, лемматизация, стемминг. Обзор возможностей библиотек pymorphy2 и pymystem3.
- Массивы NumPyМассивы vs списки в Python. Работа с массивами NumPy. Применение массивов в анализе данных.
- Работа с таблицамиРабота с файлами Excel: открытие и сохранение файлов. Обзор возможностей библиотеки pandas. Преобразование датафреймов pandas: добавление строк и столбцов в таблицу, фильтрация строк по условиям. Группировка и агрегирование данных. Объединение таблиц.
- Визуализация и разведывательный анализ данныхПостроение графиков функций средствами библиотеки matplotlib. Визуализация качественных и количественных данных с помощью библиотек matplotlib и seaborn. Облака слов и возможности библиотеки wordcloud.
- Высокопроизводительные дистрибутивы PythonДистрибутивы Python от Intel и Nvidia. Особенности установки и использования. Внутреннее хранение данных. Параллельные вычисления.
- Веб-программирование с помощью PythonПротокол HTTP. Клиент-серверное взаимодействие. Понятие веб-сервера. Клиенты для работы с веб-сервером. Веб-сервер с помощью Python. Библиотека requests. REST интерфейс. JSON схема.
- Открытые данныеОткрытые данные: принципы, виды, способы работы. Библиотеки Python для сбора данных. Визуальные инструменты сбора данных. Облачные платформы сбора данных.
- Современные СУБДТипы СУБД. Характеристики СУБД. Типы клиентов СУБД. Этапы взаимодействия с СУБД. Протоколы взаимодействия с БД. Основы языка SQL. Язык манипулирования данными SQL. Подъязыки DDL и DML. Структура запросов на выборку (SELECT). Современные реляционные системы управления базами данных. Хранилища больших данных. NoSQL и конвергенция технологий доступа к данным. Способы построения выборок из гетерогенных данных. Работа с Microsoft Access и Microsoft SQL Server. Разработка Python программ для взаимодействия с БД.
Элементы контроля
- Домашние заданияДомашние задания предполагают решение задач по программированию по пройденным темам. С учетом разного уровня подготовки студентов домашние задания представляют собой набор задач разной сложности, которые весят разное количество баллов. В начале каждого домашнего задания указано общее число баллов, которое нужно набрать, чтобы получить оценку 10. Таким образом, студент может выбирать, какие задачи ему решать. Например, если за все домашнее задание нужно набрать 8 баллов, чтобы получить оценку 10, студент может решить 8 задач по одному баллу или 4 задачи по одному баллу и одну задачу на 4 балла. Кроме того, студент может решить больше задач, чтобы потренироваться. Все задачи будут проверены и оценены, но получить оценку выше 10 за домашнее задание невозможно. Оценка за домашние задания, которая подставляется в формулу оценивания, определяется как округленное до целого среднее арифметическое оценок, полученных за домашние работы (способ округления – стандартный арифметический). Домашние задания, сданные после срока, оцениваются с использованием понижающих коэффициентов: опоздание в пределах часа – штраф 10% от полученной оценки, в пределах суток – штраф 20%, в пределах недели – штраф 50%. Домашние задания, сданные через неделю после указанного срока и позже, не принимаются и не оцениваются.
- ТестыТесты представляют собой набор открытых вопросов и вопросов с выбором ответа по пройденным темам (разобранным очно или онлайн на платформе DataCamp). Тесты направлены на проверку теоретических знаний студентов по программированию в Python: назначение и особенности работы операторов, устройство управляющих конструкций и циклов, особенности типов и структур данных, типы ошибок. Тесты проводятся в начале семинара и рассчитаны на 10-15 минут. Во время теста пользоваться какими-либо материалами нельзя. Оценка за тесты, которая подставляется в формулу оценивания, представляет собой округленное среднее арифметическое за все тесты (способ округления – стандартный арифметический).
- ПроектПроект представляет собой написание корректно работающей программы прикладного назначения с последующей устной защитой в виде презентации. Проект включает в себя следующие части: программа Python (файл с расширением .py или файл Jupyter Notebook с расширением .ipynb), самостоятельно созданная веб-страница и презентация, включающая публичную демонстрацию работы программы. Проект обязательно должен включать использование навыков, полученных в результате прохождения тем второго и третьего модулей, то есть работу с веб-страницами, сохранение данных в датафрейм pandas с последующей их обработкой или анализом, визуализацию данных. Проект выполняется индивидуально. Оценка за проект определяется по следующей формуле (способ округления – стандартный арифметический): Проект = Округление(0.4 * Программа + 0.3 * Веб-страница + 0.3 * Презентация). - Программа: сама программа (файл .py или .ipynb); оценивается по следующим критериям: работоспособность кода, соответствие используемых инструментов заявленной цели, применение при ее написании навыков, изученных в течение курса, корректное оформление кода. - Веб-страница: интерактивная страница с необходимым оформлением и функционалом для взаимодействия с пользователем. - Презентация: устная защита проекта в любом формате; обязательно включает демонстрацию работы программы; оценивается по следующим критериям: наличие объяснения цели программы, ее принципа работы и получаемых результатов, способность корректно ответить на вопросы по работе программы в рамках тем, изученных на курсе, объяснить ограничения работы программы и потенциальные проблемы.
- Домашнее задание: Python программа для работы с БДСоздание программы взаимодействия с БД на языке Python
- Домашнее задание: Cоздание базы данных и таблиц в нейCоздание базы данных и таблиц в ней
- Домашнее задание: создание программы для сбора данных и сохранения данных в БДДомашнее задание: создание программы для сбора данных и сохранения данных в БД
- Проект 4 модульЦель Отработка навыков программирования, предобработки и первичного анализа данных Описание проекта за 4 модуль Проект состоит из следующих частей: 1. Подпрограмма для загрузки данных из файла в Pandas Dataframe 2. Подпрограмма предобработки и очистки данных средствами Python 3. Подпрограмма визуализации данных 4. Отчет Условия · В команде может быть от одного до 4 человек · Датасет может быть предложен студентами («инициативный датасет») или выбран стандартный датасет · Инициативный датасет требует согласования с преподавателем Формат отчета · Подпрограммы и отчет должны быть в одном файле в формате .ipynb. Файл должен быть загружен в репозиторий на github. Cсылка на репозиторий на github должна быть указана на странице Elections. · Все подпрограммы должны быть оформлены в виде функций. · Отчет должен включать следующие части: 1. Цель проекта 2. Программа загрузки, предобработки и очистки данных 3. Корреляционный анализ 4. Кластерный анализ 5. Визуализация данных 6. Выводы 7. Информационные источники
Промежуточная аттестация
- Промежуточная аттестация (3 модуль)0.3 * Домашние задания + 0.45 * Проект + 0.25 * Тесты
- Промежуточная аттестация (4 модуль)0.5 * Домашнее задание: Cоздание базы данных и таблиц в ней + 0.5 * Домашнее задание: создание программы для сбора данных и сохранения данных в БД
Список литературы
Рекомендуемая основная литература
- Nelli, F. (2018). Python Data Analytics : With Pandas, NumPy, and Matplotlib (Vol. Second edition). New York, NY: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1905344
- Федоров Д. Ю. - ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ВЫСОКОГО УРОВНЯ PYTHON 2-е изд. Учебное пособие для СПО - М.:Издательство Юрайт - 2019 - 161с. - ISBN: 978-5-534-11961-9 - Текст электронный // ЭБС ЮРАЙТ - URL: https://urait.ru/book/programmirovanie-na-yazyke-vysokogo-urovnya-python-446505
Рекомендуемая дополнительная литература
- Perkins, J. (2014). Python 3 Text Processing with NLTK 3 Cookbook. Birmingham: Packt Publishing. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=836632