Программирование для всех (основы работы с Python)

Алла Тамбовцева, НИУ ВШЭ

Домашнее задание 8

За разные задачи можно получить разное число баллов. Максимум за ДЗ можно набрать 14 баллов.

Чтобы сдать ДЗ, его надо загрузить на Dropbox в виде ipynb-файла. Получить ipynb-файл можно, выбрав в Jupyter пункт меню File → Download as... → Notebook (.ipynb).

Алгоритм работы:

  1. Скачать ipynb-файл с домашним заданием.
  2. Загрузить скачанный файл в Jupyter Notebook через Upload.
  3. Вписать решения задач в ячейки с комментарием # YOUR CODE HERE.
  4. Сохранить изменения и загрузить файл с решениями на Dropbox.

Файл для работы

Файл polit.xlsx — сокращенная версия файла PetersMcGuireData.xlsx, взятого со страницы James W.McGuire, Data used in “Authoritarianism in the Middle East”. Файл можно скачать по ссылке.

Переменные:

  • ctry: Country;
  • fh09: Freedom House Index, ranging from 1 (most) to 7 (fewest) political rights and civil liberties, 2009;
  • polity09: Polity2 score, ranging from -10 to +10, latter most democratic, 2009;
  • gini: Gini index of income inequality, 2000-2010;
  • fparl08: Female share of seats in parliament in %, 2008;
  • mena: Middle East and North Africa (1 – yes, 0 – no);
  • lati: Latin America (1 – yes, 0 – no);
  • cari: Caribbean, former British, French, Dutch colony (1 – yes, 0 – no);
  • east: East Asia (1 – yes, 0 – no);
  • sovi: Former Soviet Bloc (1 – yes, 0 – no);
  • afri: Africa (1 – yes, 0 – no);
  • corr0509 – Control of Corruption, average 2005-2009.

Задача 1 (1 балл)

Загрузите таблицу из файла polit.xlsx и сохраните ее в переменную df. Используйте функцию read_excel().

In [ ]:
### YOUR CODE HERE

Задача 2 (1 балл)

Выведите общую информацию по таблице: число строк и столбцов, типы данных в таблице.

In [ ]:
### YOUR CODE HERE

Задача 3 (1 балл)

Если в таблице есть строки с пропущенными значениями, удалите их. Сохраните изменения в df.

In [ ]:
### YOUR CODE HERE

Задача 4 (1 балл)

Выведите на экран описательные статистики по всем количественным переменным в таблице. Выберите какой-нибудь интересующий вас столбец и проинтерпретируйте описательные статистики по нему (т.е. опишите «обычными» словами, что значат значения типа min, std, 50% и так далее).

In [ ]:
### YOUR CODE HERE

Задача 5 (1 балл)

Выберите в таблице строки, которые соответствуют странам со значениями индекса от Freedom House (fh09) выше 5. Сохраните их в переменную not_free.

In [ ]:
### YOUR CODE HERE

Задача 6 (1 балл)

Выберите в таблице строки, которые соответствуют странам Африки (afri) с процентом женщин в парламенте выше 30% (fparl08).

In [ ]:
### YOUR CODE HERE

Задача 7 (1 балл)

Выберите в таблице строки, которые соответствуют странам Африки или Латинской Америки (afri и lati) со значением polity09 больше или равным 8.

In [ ]:
### YOUR CODE HERE

Задача 8 (1 балл)

Отсортируйте строки в таблице в соответствии со значениями столбца со средними значениями индекса Control of Corruption (corr0509) по убыванию и выведите: первые 10 строк; последние 10 строк. Используйте метод .sort_values().

Пример:

df.sort_values('column_name', ascending = False) # ascend - возрастать
In [ ]:
### YOUR CODE HERE

Задача 9 (1 балл)

Добавьте в df столбец corr_round, в котором будут храниться округленные до 2 знака после запятой значения индекса Control of Corruption (corr0509).

In [ ]:
### YOUR CODE HERE

Задача 10 (2 балла)

Добавьте в df столбец fh_status, в котором будут храниться типы стран в зависимости от значения индекса Freedom House (значения free, partly free, not free). Соответствие значений fh09 с типами стран см. здесь на стр. 18.

In [ ]:
### YOUR CODE HERE

Задача 11 (1 балл)

Сгруппируйте строки в таблице в соответствии со значениями столбца fh_status, полученного в предыдущей задаче и выведите минимальное, среднее и максимальное значение показателя gini (индекс Джини) по каждой группе.

In [ ]:
### YOUR CODE HERE

Задача 12 (1 балл)

Сгруппируйте строки в таблице в соответствии со значениями столбца fh_status и запишите строки, относящиеся к разным группам, в отдельные csv-файлы.

Подсказка: используйте цикл for и перебирайте в нем пары «название группы-датафрейм». Попробуйте запустить следующий код и посмотреть, что получится:

In [ ]:
for name, table in df.groupby('fh_status'):
    print(name, table.head(2))
In [ ]:
### YOUR CODE HERE

Задача 13 (1 балл)

Сочетая функционал pandas и matplotlib, постройте диаграмму рассеяния (scatterplot) для пары показателей fh09 и corr0509. Поменяйте тип точек (маркер) и цвет точек. Добавьте заголовок к графику.

In [ ]:
### YOUR CODE HERE