{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Программирование для всех (основы работы с Python)\n", "\n", "*Алла Тамбовцева, НИУ ВШЭ*\n", "\n", "## Домашнее задание 8\n", "\n", "За разные задачи можно получить разное число баллов. Максимум за ДЗ можно набрать 14 баллов.\n", "\n", "Чтобы сдать ДЗ, его надо загрузить на Dropbox в виде `ipynb`-файла. Получить `ipynb`-файл можно, выбрав в Jupyter пункт меню *File → Download as... → Notebook (.ipynb)*.\n", "\n", "Алгоритм работы:\n", "\n", "1. Скачать `ipynb`-файл с домашним заданием.\n", "2. Загрузить скачанный файл в Jupyter Notebook через *Upload*.\n", "3. Вписать решения задач в ячейки с комментарием `# YOUR CODE HERE`.\n", "4. Сохранить изменения и загрузить файл с решениями на Dropbox." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Файл для работы\n", "\n", "Файл `polit.xlsx` — сокращенная версия файла `PetersMcGuireData.xlsx`, взятого со [страницы](http://jmcguire.faculty.wesleyan.edu/welcome/data/#20LActries) James W.McGuire, *Data used in “Authoritarianism in the Middle East”*. Файл можно скачать по [ссылке](https://www.dropbox.com/s/j24ucowd1t238ij/polit.xlsx?dl=0).\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 in %, 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 (1 – yes, 0 – no);\n", "* `east`: East Asia (1 – yes, 0 – no);\n", "* `sovi`: Former Soviet Bloc (1 – yes, 0 – no);\n", "* `afri`: Africa (1 – yes, 0 – no);\n", "* `corr0509` – Control of Corruption, average 2005-2009." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 1 (1 балл)\n", "\n", "Загрузите таблицу из файла `polit.xlsx` и сохраните ее в переменную `df`. Используйте функцию `read_excel()`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 2 (1 балл)\n", "\n", "Выведите общую информацию по таблице: число строк и столбцов, типы данных в таблице. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 3 (1 балл)\n", "\n", "Если в таблице есть строки с пропущенными значениями, удалите их. Сохраните изменения в `df`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 4 (1 балл)\n", "\n", "Выведите на экран описательные статистики по всем количественным переменным в таблице. Выберите какой-нибудь интересующий вас столбец и проинтерпретируйте описательные статистики по нему (т.е. опишите «обычными» словами, что значат значения типа `min`, `std`, `50%` и так далее)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 5 (1 балл)\n", "\n", "Выберите в таблице строки, которые соответствуют странам со значениями индекса от *Freedom House* (`fh09`) выше 5. Сохраните их в переменную `not_free`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 6 (1 балл)\n", "\n", "Выберите в таблице строки, которые соответствуют странам Африки (`afri`) с процентом женщин в парламенте выше 30% (`fparl08`)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 7 (1 балл)\n", "\n", "Выберите в таблице строки, которые соответствуют странам Африки или Латинской Америки (`afri` и `lati`) со значением `polity09` больше или равным 8." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 8 (1 балл) \n", "\n", "Отсортируйте строки в таблице в соответствии со значениями столбца со средними значениями индекса *Control of Corruption* (`corr0509`) по убыванию и выведите: первые 10 строк; последние 10 строк. Используйте метод `.sort_values()`.\n", "\n", "*Пример:*\n", "\n", " df.sort_values('column_name', ascending = False) # ascend - возрастать" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 9 (1 балл)\n", "\n", "Добавьте в `df` столбец `corr_round`, в котором будут храниться округленные до 2 знака после запятой значения индекса *Control of Corruption* (`corr0509`)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 10 (2 балла) \n", "\n", "Добавьте в `df` столбец `fh_status`, в котором будут храниться типы стран в зависимости от значения индекса *Freedom House* (значения *free*, *partly free*, *not free*). Соответствие значений `fh09` с типами стран см. [здесь](https://freedomhouse.org/sites/default/files/2020-02/Methodology_FIW_2018_for_website.pdf) на стр. 18." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 11 (1 балл) \n", "\n", "Сгруппируйте строки в таблице в соответствии со значениями столбца `fh_status`, полученного в предыдущей задаче и выведите минимальное, среднее и максимальное значение показателя `gini` (индекс Джини) по каждой группе." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 12 (1 балл)\n", "\n", "Сгруппируйте строки в таблице в соответствии со значениями столбца `fh_status` и запишите строки, относящиеся к разным группам, в отдельные csv-файлы.\n", "\n", "*Подсказка:* используйте цикл `for` и перебирайте в нем пары «название группы-датафрейм». Попробуйте запустить следующий код и посмотреть, что получится:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "for name, table in df.groupby('fh_status'):\n", " print(name, table.head(2))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задача 13 (1 балл)\n", "\n", "Сочетая функционал `pandas` и `matplotlib`, постройте диаграмму рассеяния (*scatterplot*) для пары показателей `fh09` и `corr0509`. Поменяйте тип точек (маркер) и цвет точек. Добавьте заголовок к графику." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "### YOUR CODE HERE" ] } ], "metadata": { "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.7.4" } }, "nbformat": 4, "nbformat_minor": 2 }