• A
  • A
  • A
  • ABC
  • ABC
  • ABC
  • А
  • А
  • А
  • А
  • А
Regular version of the site

Programming and Data Analysis

2019/2020
Academic Year
RUS
Instruction in Russian
7
ECTS credits
Delivered at:
Institute of Media
Course type:
Compulsory course
When:
1 year, 2-4 module

Instructors

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

Аннотация

Курс «Программирование и анализ данных» является обязательным курсом на образовательной программе «Журналистика данных». Курс состоит из трех блоков. Первый блок включает базовые элементы языка программирования 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