{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Основы программирования в Python\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "### Домашнее задание 7\n", "\n", "Файл с решениями нужно загрузить на Dropbox по [ссылке](https://www.dropbox.com/request/KcKFkKeDqoJZEcimik59). " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Часть 1\n", "\n", "1. Загрузите csv-файл с таблицей по [ссылке](http://math-info.hse.ru/f/2017-18/py-prog/Fishing.csv). Описание базы см. [здесь](https://vincentarelbundock.github.io/Rdatasets/doc/Ecdat/Fishing.html).\n", "2. Выведите описательные статистики для всех количественных (*integer*, *float*) переменных в базе. \n", "3. Выберите из таблицы только строки, которые соответствуют респондентам, которые выбрали рыбалку на берегу (beach).\n", "4. Выберите из таблицы строки, которые соответствуют респондентам, которые предпочитают рыбачить на лодке (boat) с доходом (*income*) ниже 3500. Сохраните результат в переменную `d`. \n", "5. Переименуйте столбец *catch* в *c_rate*. \n", "6. Добавьте в таблицу столбец *log_income*, содержащий натуральный логарифм доходов респондентов.\n", "7. Сгруппируйте наблюдения в таблице по признаку *тип рыбалки* (*mode*) и выведите для каждого типа среднюю цену (*price*), которую респонденты готовы заплатить за рыбалку.\n", "8. Постройте гистограмму для показателя *pboat*, поменяйте ее цвет и добавьте название графика. \n", "9. Выведите на экран первые 8 строк таблицы. А теперь последние 8.\n", "10. Сохраните датафрейм в csv-файл." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Часть 2\n", "\n", "**Файл для работы:**\n", "\n", "`polit.xlsx` ([ссылка](http://math-info.hse.ru/f/2018-19/comm-math/polit.xlsx) на файл)\n", "\n", "**Описание файла:**\n", "\n", "сокращенная версия файла `PetersMcGuireData.xlsx`, взятого [отсюда](http://jmcguire.faculty.wesleyan.edu/welcome/data/#20LActries) (страница James W.McGuire, Data used in “Authoritarianism in the Middle East”).\n", "\n", "**Переменные:**\n", "\n", "* `ctry` – country\n", "* `fh09` – Freedom House index (ranging from 1 (most) to 7 (fewest) political rights and civil liberties), 2009\n", "* `polity09` – Polity2 score (ranging from -10 to +10, latter most democratic), 2009\n", "* `gini` – Gini index of income inequality, 2000-2010\n", "* `fparl08` – female share of seats in parliament (%), 2008\n", "* `mena` – Middle East and North Africa (1 - yes, 0 - no)\n", "* `lati` – Latin America (1 - yes, 0 - no)\n", "* `cari` – Caribbean, former British, French, Dutch colony\n", "* `east` – East Asia\n", "* `sov`i – Former Soviet Bloc\n", "* `afri` – Africa\n", "* `corr0509` – Control of Corruption, average 2005-2009 (expert rating)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "1. Загрузите таблицу из файла `polit.xlsx` и сохраните ее в переменную `df`. Используйте функцию `read_excel()`.\n", "2. Выведите общую информацию по таблице: число строк и столбцов, типы данных в таблице. Есть ли в таблице пропущенные значения?\n", "3. Если в таблице есть строки с пропущенными значениями, удалите их. Сохраните изменения в `df`.\n", "4. Выведите на экран описательные статистики по всем количественным переменным в таблице. Выберите какой-нибудь интересующий вас столбец и проинтерпретируйте описательные статистики по нему (т.е. опишите «обычными» словами, что значат значения типа `min`, `std`, `50%` и так далее).\n", "5. Выберите в таблице строки, которые соответствуют странам со значениями Freedom House (`fh09`) выше 5. Сохраните их в переменную `not_free`.\n", "6. Выберите в таблице строки, которые соответствуют странам Африки (`afri`) с процентом женщин в парламенте выше 30%.\n", "7. Выберите в таблице строки, которые соответствуют странам Африки или Латинской Америки (`afri` и `lati`) со значением `polity09` больше или равным 8.\n", "8. Отсортируйте строки в таблице в соответствии со значениями столбца со средними значениями индекса *Control of Corruption* (`corr0509`) по убыванию и выведите: первые 10 строк; последние 10 строк. Используйте метод `.sort_values()`. \n", "\n", " *Пример:*\n", "\n", " df.sort_values('column_name', ascending = False) # ascend - возрастать\n", " \n", "9. Добавьте в `df` столбец `corr_round`, в котором будут храниться округленные до 2 знака после запятой значения индекса Control of Corruption (`corr0509`).\n", "10. Добавьте в `df` столбец `fh_status`, в котором будут храниться типы стран в зависимости от значения индекса Freedom House (значения `free`, `partly free`, `not free`). Соответствие значений `fh09` с типами стран см. [здесь](https://freedomhouse.org/report/freedom-world-2016/methodology) (в конце, Table 3).\n", "11. Сгруппируйте строки в таблице в соответствии со значениями столбца `fh_status`, полученного в предыдущей части и выведите минимальное, среднее и максимальное значение показателя `gini` (индекс Джини) по каждой группе.\n", "12. Сгруппируйте строки в таблице в соответствии со значениями столбца `fh_status` и запишите строки, относящиеся к разным группам, в отдельные csv-файлы.\n", "\n", " *Подсказка:* используйте цикл `for` и перебирайте в нем пары название группы-датафрейм. Попробуйте прогнать следующий код и посмотреть, что получится:\n", "\n", " for name, table in df.groupby('fh_status'):\n", " print(name, table.head(2))\n", " \n", "13. Сочетая функционал `pandas` и `matplotlib`, постройте диаграмму рассеяния (scatterplot, функция `scatter()`) для пары показателей `fh09` и `corr0509`. Поменяйте тип точек (маркер) и цвет точек. Добавьте заголовок к графику." ] } ], "metadata": { "celltoolbar": "Create Assignment", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }