{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Основы анализа данных в Python\n", "\n", "## Домашнее задание №2А\n", "\n", "### Формат сдачи задания\n", "\n", "Для сдачи задания необходимо добавить в текущий ipynb-файл ячейки с кодом (и текстом, если требуются содержательные ответы на вопросы) после каждого задания, сохранить изменения и загрузить итоговый файл через запрос Dropbox по ссылке, предложенной преподавателем.\n", "\n", "Всего за задание можно получить 20 баллов. \n", "\n", "Дедлайн: 4 октября 23:59." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Часть 1 (12 баллов)\n", "\n", "В файле `responses_py.csv` сохранены результаты опроса пользователей, которые используют продукты проекта Jupyter в преподавании курсов по программированию. Основные столбцы в датафрейме:\n", "\n", "* `timestamp`: отметка времени;\n", "* `course`: название курса;\n", "* `school`: название университета;\n", "* `webpage_url`: ссылка на официальную страницу курса;\n", "* `materials_url`: ссылка на материалы курса в открытом доступе;\n", "* `instructor`: имена преподавателей;\n", "* `how_often`: как часто проходят занятия;\n", "* `students`: примерное число студентов на курсе;\n", "* `level`: уровень курса;\n", "* `prog_level`: уровень владения программированием, необходимый для курса;\n", "* `field`: к какой области наук относится курс;\n", "* `big_pain_run`: наибольшая проблема при проведении курса;\n", "* `tools`: ресурсы проекта Jupyter, используемые на курсе;\n", "* `assign_types`: типы заданий на курсе;\n", "* `assign_quest`: типы задач в заданиях;\n", "* `assign_grade`: способы проверки заданий;\n", "* `assign_eval`: критерии оценивания заданий;\n", "* `big_pain_grade`: наибольшая проблема при проверке заданий.\n", " \n", "Опрос был проведен в мае 2016 года Джессикой Хэмрик (Jessica Hamrick), список вопросов и оригинальный датафрейм с более длинными названиями столбцов можно найти в [репозитории](https://github.com/jupyter/surveys/tree/master/surveys/2016-05-education-survey) на Github." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 0 (0.5 балла)\n", "\n", "Загрузите данные из файла `responses_py.csv` и сохраните их в датафрейм `resp`. Выведите техническое описание датафрейма с типами всех столбцов, посмотрите на типы данных, с которыми вам предстоит работать." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 1 (1 балл)\n", "\n", "Выведите описательные статистики для всех столбцов. Проинтерпретируйте результаты для столбца `students`. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 2 (1 балл)\n", "\n", "Удалите строки датафрейма, которые содержат пропущенные значения в столбце с названием курса (`course`) и столбце со способами проверки заданий (`assign_grade`). Строки с пропусками в других столбцах должны остаться в датафрейме." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 3 (2 балла)\n", "\n", "Посмотрите на уникальные значения в столбце `assign_grade`. Добавьте в датафрейм столбец `nbgrader` со значениями 0 и 1, где 1 соответствует респондентам, которые указали в качестве используемых способов проверки заданий по программированию расширение *nbgrader*, а 0 – всем остальным респондентам. \n", "\n", "Обратите внимание: нас интересуют не только те респонденты, кто использует *nbgrader* и больше ничего, но и те, кто указал его как один из возможных способов проверки. Другими словами, тут надо учесть, что слово *nbgrader* может либо присутствовать в ячейке с ответом, либо отсутствовать." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 4 (3 балла)\n", "\n", "Вычислите долю респондентов, которые для проверки заданий по программированию используют расширение *nbgrader*. Постройте 95%-ный доверительный интервал для доли преподавателей, которые используют этот ресурс для проверки заданий. Проинтерпретируйте полученный доверительный интервал." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание 5 (0.5 балла)\n", "\n", "Запустите строки кода ниже, чтобы добавить в датафрейм столбцы с минимальным и максимальным числом студентов, которые обучаются на курсах по Python (предполагается, что датафрейм назван `resp`, как было указано в самом первом задании):" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | 0 | \n", "1 | \n", "
---|---|---|
0 | \n", "100 | \n", "250 | \n", "
2 | \n", "10 | \n", "25 | \n", "
3 | \n", "10 | \n", "25 | \n", "
6 | \n", "10 | \n", "25 | \n", "
7 | \n", "Less than 10 | \n", "None | \n", "