/
icef_hw4.ipynb
113 lines (113 loc) · 8.58 KB
/
icef_hw4.ipynb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Python для сбора данных\n",
"\n",
"*Алла Тамбовцева, НИУ ВШЭ*\n",
"\n",
"## Домашнее задание 4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Часть 1: файл `csv`\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. Сохраните результат в переменную `dat`.\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: файл Excel\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",
"* `sovi` – Former Soviet Bloc\n",
"* `afri` – Africa\n",
"* `corr0509` – Control of Corruption, average 2005-2009 (expert rating).\n",
"\n",
"**Задания**\n",
"\n",
"1. Загрузите таблицу из файла `polit.xlsx` (воспользуйтесь функцией `pd.read_excel`) и сохраните ее в переменную `df`. \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",
"7. Отсортируйте строки в таблице в соответствии со значениями столбца со средними значениями индекса Control of Corruption (`corr0509`) по убыванию и выведите: первые 10 строк; последние 10 строк. Используйте метод `.sort_values()`.\n",
"\n",
"*Пример:*\n",
"\n",
" df.sort_values('column_name', ascending = False) # ascend - возрастать\n",
"\n",
"8. Добавьте в `df` столбец `corr_round`, в котором будут храниться округленные до 2 знака после запятой значения индекса Control of Corruption (`corr0509`).\n",
"\n",
"9. Добавьте в `df` столбец `fh_status`, в котором будут храниться типы стран в зависимости от значения индекса Freedom House (значения free, partly free, not free). Соответствие значений `fh09` с типами стран см. [здесь](https://freedomhouse.org/report/freedom-world-2016/methodology) (в конце, Table 3).\n",
"10. Сгруппируйте строки в таблице в соответствии со значениями столбца `fh_status`, полученного в предыдущей части и выведите минимальное, среднее и максимальное значение показателя `gini` (индекс Джини) по каждой группе.\n",
"11. Сгруппируйте строки в таблице в соответствии со значениями столбца `fh_status` и запишите строки, относящиеся к разным группам, в отдельные csv-файлы.\n",
"\n",
"*Подсказка:* используйте цикл for и перебирайте в нем пары название группы-датафрейм. Попробуйте прогнать следующий код и посмотреть, что получится:\n",
"\n",
" for name, table in df.groupby('fh_status'):\n",
" print(name, table.head(2))\n",
"\n",
"Сочетая функционал `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
}