Предисловие…………………………………………………………………………………………… 19
О книге………………………………………………………………………………………………………………………………………… 19
Как получить максимум от этой книги…………………………………………………………………………………….. 19
Структура книги………………………………………………………………………………………………………………………… 20
Об авторе……………………………………………………………………………………………….. 23
Благодарности……………………………………………………………………………………….. 27
Глава 1. Введение в Data Science и основы программирования………………. 29
1.1. Введение в Data Science……………………………………………………………………………………………………… 29
1.1.1. Зачем нам Data Science?……………………………………………………………………………………………….. 30
1.1.2. История Data Science…………………………………………………………………………………………………….. 31
1.1.2.1. Данные в древности…………………………………………………………………………………………….. 31
1.1.2.2. Появление статистики…………………………………………………………………………………………. 32
1.1.2.3. Зарождение современного хранения данных……………………………………………………. 32
1.1.2.4. Появление больших центров обработки данных……………………………………………… 33
1.1.2.5. Появление Интернета………………………………………………………………………………………….. 33
1.1.3. Настоящее и будущее Data Science…………………………………………………………………………….. 34
1.1.4. Чем занимается специалист по Data Science?…………………………………………………………….. 35
1.1.5. Как это делается?………………………………………………………………………………………………………….. 35
1.1.6. Предпосылки для Data Science…………………………………………………………………………………….. 35
1.1.7. Профессии в области Data Science………………………………………………………………………………. 36
1.2. От Data Science к программированию………………………………………………………………………………. 37
1.3. Основы компьютерного программирования…………………………………………………………………….. 38
1.3.1. Что такое программирование?…………………………………………………………………………………….. 38
1.3.2. Компьютерный алгоритм……………………………………………………………………………………………… 39
1.3.2.1. Последовательные операторы……………………………………………………………………………. 40
1.3.2.2. Условные операторы…………………………………………………………………………………………… 41
1.3.2.3. Цикл или итерации………………………………………………………………………………………………. 41
1.3.3. Блок-схемы…………………………………………………………………………………………………………………….. 41
1.3.4. Что такое язык программирования?……………………………………………………………………………. 42
1.3.5. Что такое исходный код?……………………………………………………………………………………………… 44
1.3.6. Как запустить исходный код?……………………………………………………………………………………… 45
1.3.7. Компилятор……………………………………………………………………………………………………………………. 45
1.3.8. Интерпретатор………………………………………………………………………………………………………………. 46
1.3.8.1. Сравнение компилятора и интерпретатора………………………………………………………. 47
1.3.9. Что такое интегрированная среда разработки (IDE)?……………………………………………….. 47
1.3.10. Spyder IDE……………………………………………………………………………………………………………………. 48
1.4. Резюме………………………………………………………………………………………………………………………………….. 49
1.5. Упражнения…………………………………………………………………………………………………………………………. 49
1.5.1. Ответьте на вопросы…………………………………………………………………………………………………….. 49
1.5.2. Правда или ложь…………………………………………………………………………………………………………… 49
1.5.3. Практические задания………………………………………………………………………………………………….. 50
1.5.4. Изучите самостоятельно………………………………………………………………………………………………. 50
Глава 2. Введение в Python…………………………………………………………………….. 51
2.1. Что такое Python?……………………………………………………………………………………………………………….. 51
2.1.1. Почему именно Python?………………………………………………………………………………………………… 51
2.1.2. Появление Python………………………………………………………………………………………………………….. 52
2.1.3. Python и другие языки программирования…………………………………………………………………. 53
2.1.4. Философия Python…………………………………………………………………………………………………………. 55
2.2. Преимущества Python по сравнению с другими языками……………………………………………….. 55
2.2.1. Простота………………………………………………………………………………………………………………………… 55
2.2.2. Легкость в изучении………………………………………………………………………………………………………. 55
2.2.3. Свободный и открытый исходный код……………………………………………………………………….. 55
2.2.4. Высокоуровневость………………………………………………………………………………………………………. 56
2.2.5. Портативность………………………………………………………………………………………………………………. 56
2.2.6. Интерпретируемость…………………………………………………………………………………………………….. 56
2.2.7. Интерпретаторы Python……………………………………………………………………………………………….. 56
2.2.7.1. IPython………………………………………………………………………………………………………………….. 57
2.2.7.2. CPython…………………………………………………………………………………………………………………. 57
2.2.7.3. IronPython…………………………………………………………………………………………………………….. 58
2.2.7.4. Jython…………………………………………………………………………………………………………………….. 58
2.2.7.5. PyPy……………………………………………………………………………………………………………………….. 58
2.2.7.6. PythonNet………………………………………………………………………………………………………………. 59
2.2.7.7. Stackless Python……………………………………………………………………………………………………. 59
2.2.8. Объектная ориентированность……………………………………………………………………………………. 59
2.2.9. Расширяемость………………………………………………………………………………………………………………. 60
2.2.10. Встраиваемость…………………………………………………………………………………………………………… 60
2.2.11. Внушительные библиотеки………………………………………………………………………………………… 60
2.2.12. Python для начинающих…………………………………………………………………………………………….. 61
2.3. Версии Python……………………………………………………………………………………………………………………… 62
2.3.1. Python 2………………………………………………………………………………………………………………………….. 62
2.3.2. Python 2.7……………………………………………………………………………………………………………………….. 62
2.3.3. Python 3………………………………………………………………………………………………………………………….. 62
2.3.4. Ключевые отличия версий……………………………………………………………………………………………. 63
2.4. Как установить и использовать Python…………………………………………………………………………….. 63
2.4.1. Дистрибутив Anaconda………………………………………………………………………………………………… 63
2.4.2. Почему именно Anaconda?…………………………………………………………………………………………… 64
2.4.3. Установка Anaconda в Windows………………………………………………………………………………….. 64
2.4.4. Установка Anaconda в MacOS…………………………………………………………………………………….. 68
2.5. Запуск Python через командную строку…………………………………………………………………………… 71
2.6. Приложения Anaconda……………………………………………………………………………………………………….. 73
2.7. Консоль IPython Qt……………………………………………………………………………………………………………… 73
2.8. Spyder IDE……………………………………………………………………………………………………………………………. 75
2.8.1. Компоненты Spyder IDE……………………………………………………………………………………………….. 76
2.8.1.1. Редактор текста……………………………………………………………………………………………………. 76
2.8.1.2. IPython консоль……………………………………………………………………………………………………. 77
2.8.1.3. Обозреватель переменных………………………………………………………………………………….. 77
2.8.1.4. Справка…………………………………………………………………………………………………………………. 79
2.9. Jupyter Notebook………………………………………………………………………………………………………………….. 80
2.9.1. Приложение Jupyter Notebook……………………………………………………………………………………… 80
2.9.2. Основные возможности веб-приложения……………………………………………………………………. 80
2.9.3. Документы Notebook…………………………………………………………………………………………………….. 80
2.9.4. Запуск сервера Notebook……………………………………………………………………………………………… 81
2.9.5. Создание нового документа Notebook………………………………………………………………………… 82
2.9.6. Открытие документа Notebook……………………………………………………………………………………. 82
2.9.7. Интерфейс документа Notebook………………………………………………………………………………….. 82
2.9.8. Структура документа Notebook………………………………………………………………………………….. 83
2.9.9. Ячейки кода…………………………………………………………………………………………………………………… 83
2.9.10. Ячейки Markdown……………………………………………………………………………………………………….. 83
2.9.11. Неформатированные ячейки……………………………………………………………………………………… 84
2.9.12. Рабочий процесс…………………………………………………………………………………………………………. 84
2.9.13. Горячие клавиши………………………………………………………………………………………………………… 84
2.9.14. Построение графиков………………………………………………………………………………………………….. 85
2.9.15. Совместимость с браузерами…………………………………………………………………………………….. 85
2.10. Что лучше использовать?…………………………………………………………………………………………………. 85
2.11. Резюме………………………………………………………………………………………………………………………………… 86
2.12. Упражнения……………………………………………………………………………………………………………………….. 87
2.12.1. Ответьте на вопросы…………………………………………………………………………………………………… 87
2.12.2. Правда или ложь…………………………………………………………………………………………………………. 87
2.12.3. Изучите самостоятельно…………………………………………………………………………………………….. 88
Глава 3. Основы Python…………………………………………………………………………. 89
3.1. Запуск Python………………………………………………………………………………………………………………………. 89
3.1.1. Использование Spyder IDE…………………………………………………………………………………………… 89
3.1.2. Использование Jupyter Notebook…………………………………………………………………………………. 91
3.2. Начнем с «Hello World!»……………………………………………………………………………………………………… 92
3.3. Использование Python как калькулятора…………………………………………………………………………. 93
3.3.1. Числа………………………………………………………………………………………………………………………………. 93
3.3.2. Строки……………………………………………………………………………………………………………………………. 94
3.3.2.1. Конкатенация и повторение……………………………………………………………………………….. 95
3.3.2.2. Индексирование…………………………………………………………………………………………………… 95
3.3.2.3. Срезы…………………………………………………………………………………………………………………….. 96
3.4. Синтаксис кода Python……………………………………………………………………………………………………….. 97
3.4.1. Выражения…………………………………………………………………………………………………………………….. 97
3.4.1.1. Окончание выражений………………………………………………………………………………………… 98
3.4.2. Переменные и присваивание значений……………………………………………………………………….. 99
3.4.3. Имена переменных и ключевые слова………………………………………………………………………… 99
3.4.4. Выполнение выражений…………………………………………………………………………………………….. 100
3.5. Первые шаги в программировании………………………………………………………………………………….. 101
3.5.1. Подробнее о функции print()………………………………………………………………………………………. 102
3.5.2. Форматированный вывод…………………………………………………………………………………………… 104
3.5.3. Простейшая геометрия и print()…………………………………………………………………………………. 104
3.6. Поиск ошибок……………………………………………………………………………………………………………………. 105
3.6.1. Синтаксические ошибки…………………………………………………………………………………………….. 105
3.6.2. Ошибки времени выполнения…………………………………………………………………………………….. 106
3.6.3. Семантические ошибки………………………………………………………………………………………………. 106
3.6.4. Когда никакие средства не помогают……………………………………………………………………….. 107
3.7. Резюме………………………………………………………………………………………………………………………………… 108
3.8. Упражнения……………………………………………………………………………………………………………………….. 108
3.8.1. Ответьте на вопросы…………………………………………………………………………………………………… 108
3.8.2. Правда или ложь…………………………………………………………………………………………………………. 108
3.8.3. Практические задания………………………………………………………………………………………………… 109
3.8.4. Изучите самостоятельно…………………………………………………………………………………………….. 110
Глава 4. Объекты и операторы в Python………………………………………………. 111
4.1. Переменные……………………………………………………………………………………………………………………….. 111
4.1.1. Оператор присваивания……………………………………………………………………………………………… 112
4.1.2. Имена переменных……………………………………………………………………………………………………… 112
4.2. Структура программы……………………………………………………………………………………………………… 112
4.3. Объекты……………………………………………………………………………………………………………………………… 113
4.3.1. Классификация объектов……………………………………………………………………………………………. 113
4.3.2. Преимущества встроенных типов……………………………………………………………………………… 114
4.3.3. Идентификаторы, значения и типы объектов…………………………………………………………… 116
4.3.4. Изменяемые и неизменяемые объекты………………………………………………………………………. 117
4.4. Стандартная иерархия типов………………………………………………………………………………………….. 117
4.4.1. Встроенные константы………………………………………………………………………………………………. 118
4.4.2. Числовые типы…………………………………………………………………………………………………………….. 118
4.4.3. Последовательности…………………………………………………………………………………………………… 119
4.4.3.1. Неизменяемые последовательности………………………………………………………………… 119
4.4.3.2. Изменяемые последовательности…………………………………………………………………….. 121
4.4.4. Множества…………………………………………………………………………………………………………………… 121
4.4.5. Сопоставления…………………………………………………………………………………………………………….. 122
4.4.6. Вызываемые типы……………………………………………………………………………………………………….. 122
4.4.7. Модули………………………………………………………………………………………………………………………… 123
4.5. Операции с объектами в Python………………………………………………………………………………………. 124
4.6. Операторы…………………………………………………………………………………………………………………………. 124
4.6.1. Арифметические операторы………………………………………………………………………………………. 125
4.6.2. Операторы присваивания…………………………………………………………………………………………… 126
4.6.3. Операторы сравнения…………………………………………………………………………………………………. 127
4.6.4. Логические операторы……………………………………………………………………………………………….. 128
4.6.5. Операторы идентификации и вхождения………………………………………………………………….. 128
4.7. Отступы……………………………………………………………………………………………………………………………… 129
4.8. Комментарии в Python……………………………………………………………………………………………………… 130
4.9. Порядок выполнения………………………………………………………………………………………………………… 130
4.9.1. Изменение порядка выполнения………………………………………………………………………………… 131
4.9.2. Ассоциативность…………………………………………………………………………………………………………. 131
4.9.3. Площадь прямоугольника………………………………………………………………………………………….. 132
4.10. Динамическая типизация……………………………………………………………………………………………….. 132
4.11. Строгая типизация………………………………………………………………………………………………………….. 133
4.12. Логическая и физическая строка…………………………………………………………………………………… 133
4.13. Резюме……………………………………………………………………………………………………………………………… 134
4.14. Упражнения…………………………………………………………………………………………………………………….. 134
4.14.1. Ответьте на вопросы…………………………………………………………………………………………………. 134
4.14.2. Правда или ложь……………………………………………………………………………………………………….. 135
4.14.3. Практические задания………………………………………………………………………………………………. 135
4.14.4. Изучите самостоятельно………………………………………………………………………………………….. 136
Глава 5. Операторы управления потоком…………………………………………….. 137
5.1. Управление потоком…………………………………………………………………………………………………………. 137
5.2. Операторы if……………………………………………………………………………………………………………………… 137
5.2.1. Простой оператор if……………………………………………………………………………………………………. 137
5.2.2. Оператор if-else…………………………………………………………………………………………………………… 139
5.2.3. Оператор if–elif–else…………………………………………………………………………………………………… 140
5.3. Оператор цикла for…………………………………………………………………………………………………………… 142
5.3.1. Цикл for с блоком else…………………………………………………………………………………………………. 143
5.4. Функция range()…………………………………………………………………………………………………………………. 144
5.5. Цикл while………………………………………………………………………………………………………………………….. 145
5.6. Операторы break и continue…………………………………………………………………………………………….. 146
5.6.1. Оператор break……………………………………………………………………………………………………………. 146
5.6.2. Оператор continue………………………………………………………………………………………………………. 148
5.7. Оператор pass……………………………………………………………………………………………………………………. 149
5.8. Резюме………………………………………………………………………………………………………………………………… 150
5.9. Упражнения……………………………………………………………………………………………………………………….. 150
5.9.1. Ответьте на вопросы…………………………………………………………………………………………………… 150
5.9.2. Правда или ложь…………………………………………………………………………………………………………. 151
5.9.3. Практические задания………………………………………………………………………………………………… 152
Глава 6. Функции………………………………………………………………………………… 153
6.1. Определение функций………………………………………………………………………………………………………. 153
6.2. Типы функций……………………………………………………………………………………………………………………. 153
6.3. Встроенные функции………………………………………………………………………………………………………… 154
6.3.1. Описание некоторых встроенных функций………………………………………………………………. 154
6.4. Пользовательские функции………………………………………………………………………………………………. 156
6.4.1. Зачем создавать функции?…………………………………………………………………………………………. 156
6.4.2. Создание и вызов функций…………………………………………………………………………………………. 157
6.4.3. Входные параметры и аргументы…………………………………………………………………………….. 158
6.4.3.1. Параметры………………………………………………………………………………………………………….. 159
6.4.3.2. Аргументы………………………………………………………………………………………………………….. 160
6.4.3.3. Количество аргументов…………………………………………………………………………………….. 161
6.4.4. Возврат значений из функций……………………………………………………………………………………. 162
6.5. Варианты передачи аргументов……………………………………………………………………………………… 164
6.5.1. Аргументы со значением по умолчанию………………………………………………………………….. 164
6.5.2. Произвольное число аргументов (*args)…………………………………………………………………… 164
6.5.3. Именованные аргументы……………………………………………………………………………………………. 165
6.5.4. Произвольное число именованных аргументов (**kwargs)……………………………………. 166
6.6. Генераторы……………………………………………………………………………………………………………………….. 167
6.6.1. Определение генератора……………………………………………………………………………………………. 167
6.6.2. Пояснение к примеру………………………………………………………………………………………………….. 168
6.7. Резюме………………………………………………………………………………………………………………………………… 168
6.8. Упражнения……………………………………………………………………………………………………………………….. 169
6.8.1. Ответьте на вопросы…………………………………………………………………………………………………… 169
6.8.2. Правда или ложь…………………………………………………………………………………………………………. 169
6.8.3. Практические задания………………………………………………………………………………………………… 169
6.8.4. Изучите самостоятельно…………………………………………………………………………………………….. 170
Глава 7. ПРОЕКТ 1: Рисунки из символов с помощью циклов и функций 171
7.1. Рисунки с помощью символа * (звездочка)…………………………………………………………………….. 171
7.1.1. Прямоугольный треугольник……………………………………………………………………………………… 171
7.1.2. Перевернутый прямоугольный треугольник…………………………………………………………….. 172
7.1.3. Равносторонний треугольник…………………………………………………………………………………….. 174
7.1.4. Прямоугольный треугольник вверх ногами……………………………………………………………… 175
7.1.5. Стрелка вправо……………………………………………………………………………………………………………. 175
7.1.6. Практические задания………………………………………………………………………………………………… 176
7.2. Рисунки с помощью цифр…………………………………………………………………………………………………. 177
7.2.1. Прямоугольный треугольник……………………………………………………………………………………… 177
7.2.2. Прямоугольный треугольник 2………………………………………………………………………………….. 177
7.2.3. Прямоугольный треугольник вверх ногами……………………………………………………………… 178
7.2.4. Треугольник из обратных чисел………………………………………………………………………………… 179
7.2.5. Треугольник из квадратов обратных чисел……………………………………………………………… 179
7.2.6. Ромб……………………………………………………………………………………………………………………………… 179
7.2.7. Ромб с другим направлением чисел………………………………………………………………………….. 181
7.2.8. Стрелка влево……………………………………………………………………………………………………………… 182
7.2.9. Практические задания………………………………………………………………………………………………… 183
7.3. Резюме………………………………………………………………………………………………………………………………… 184
Глава 8. Структуры данных и последовательности……………………………… 185
8.1. Строки………………………………………………………………………………………………………………………………… 185
8.1.1. Строковые операции…………………………………………………………………………………………………… 186
8.1.2. Форматирование…………………………………………………………………………………………………………. 187
8.1.3. Методы split() и join()…………………………………………………………………………………………………. 188
8.2. Списки………………………………………………………………………………………………………………………………… 189
8.2.1. Индексы и срезы………………………………………………………………………………………………………….. 191
8.2.2. Методы списков………………………………………………………………………………………………………….. 192
8.2.3. Списковые включения………………………………………………………………………………………………… 193
8.2.4. Оператор del………………………………………………………………………………………………………………… 194
8.3. Кортежи……………………………………………………………………………………………………………………………… 195
8.3.1. Методы кортежей……………………………………………………………………………………………………….. 196
8.4. Множества…………………………………………………………………………………………………………………………. 196
8.4.1. Операции над множествами………………………………………………………………………………………. 197
8.4.2. Методы множеств……………………………………………………………………………………………………….. 198
8.5. Словари……………………………………………………………………………………………………………………………… 199
8.5.1. Методы словарей………………………………………………………………………………………………………… 200
8.6. Перебор последовательностей в цикле…………………………………………………………………………… 201
8.7. Резюме………………………………………………………………………………………………………………………………… 202
8.8. Упражнения……………………………………………………………………………………………………………………….. 202
8.8.1. Ответьте на вопросы…………………………………………………………………………………………………… 202
8.8.2. Правда или ложь…………………………………………………………………………………………………………. 203
8.8.3. Практические задания………………………………………………………………………………………………… 203
8.8.4. Изучите самостоятельно…………………………………………………………………………………………….. 204
Глава 9. Ввод-вывод данных и работа с файлами………………………………… 205
9.1. Ввод данных……………………………………………………………………………………………………………………… 205
9.2. Форматированный вывод данных…………………………………………………………………………………… 207
9.2.1. Форматированные строки………………………………………………………………………………………….. 207
9.2.2. Строковый метод format()…………………………………………………………………………………………… 208