
Представляем книгу “Python — это просто. Пошаговое руководство по программированию и анализу данных“.
Рассмотрены основы синтаксиса языка Python на примере дистрибутива Anaconda. Показаны приложения IPython, Spyder IDE, Jupyter Notebook. Описан синтаксис переменных, функций, циклов. Подробно изучаются структуры данных в Python: строки, списки, кортежи, множества и словари. Объясняется понятие классов и их применение в объектно-ориентированном программировании. Описаны возможности библиотеки обработки изображений Pillow, библиотеки Tkinter для создания приложений с графическим интерфейсом. Отдельный раздел посвящен обработке ошибок и исключений в программах. Рассматриваются библиотеки NumPy и Pandas, приводятся практические примеры их использования для анализа и обработки данных. Описана библиотека Matplotlib и ее возможности в сфере визуализации данных.
Эта книга исповедует активный подход к обучению и вдохновляет читателя исследовать и экспериментировать, а не просто впитывать теорию.
• Исследуйте возможности Python с использованием дистрибутива Anaconda
• Узнайте, как установить и использовать Python на своем компьютере
• Создавайте свои переменные, объекты и изучите их синтаксис
• Изучите встроенные типы объектов Python, такие как строки, списки, кортежи, множества и словари
• Научитесь вызывать встроенные функции, а также писать свои собственные
• Организуйте свой код и другие объекты в более крупные компоненты с помощью модулей
• Исследуйте классы — инструмент объектно-ориентированного программирования
• Пишите сложный код, научитесь обрабатывать ошибки и исключения
• Узнайте о массивах NumPy и операциях с ними
• Изучите анализ данных с помощью Pandas
• Погрузитесь в захватывающий мир визуализации с использованием Matplotlib
• Научитесь создавать приложения Python с графическим интерфейсом
Изучите программирование на Python, начиная с самых основ и заканчивая использованием библиотек для анализа данных и визуализации. Эта книга поможет освоить Python как абсолютным новичкам, так и опытным программистам, знакомым с другими языками. В нее включены все актуальные на сегодняшний день расширения Python.
Предисловие…………………………………………………………………………………………… 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
9.2.3. Форматирование строк вручную………………………………………………………………………………. 210
9.2.4. Функции str() и repr()…………………………………………………………………………………………………… 211
9.2.5. Старое форматирование строки………………………………………………………………………………… 212
9.3. Чтение и запись файлов……………………………………………………………………………………………………. 212
9.3.1. Методы файловых объектов………………………………………………………………………………………. 213
9.3.2. Создание файла и запись в него………………………………………………………………………………… 214
9.3.3. Открытие файла и чтение его содержимого……………………………………………………………… 215
9.3.4. Построчное чтение……………………………………………………………………………………………………… 215
9.3.5. Чтение и запись нетекстовых файлов………………………………………………………………………… 216
9.4. Резюме………………………………………………………………………………………………………………………………… 216
9.5. Упражнения……………………………………………………………………………………………………………………….. 216
9.5.1. Ответьте на вопросы…………………………………………………………………………………………………… 216
9.5.2. Правда или ложь…………………………………………………………………………………………………………. 217
9.5.3. Практические задания………………………………………………………………………………………………… 217
9.5.4. Изучите самостоятельно…………………………………………………………………………………………….. 218
Глава 10. ПРОЕКТ 2: Автоматизация обработки множества изображений 219
10.1. Изменение типа файла (расширения)……………………………………………………………………………. 221
10.2. Изменение размеров фотографий………………………………………………………………………………….. 223
10.3. Преобразование изображений в черно-белые……………………………………………………………… 223
10.4. Поворот изображений…………………………………………………………………………………………………….. 224
10.5. Изменение разрешения изображения……………………………………………………………………………. 225
10.6. Резюме……………………………………………………………………………………………………………………………… 226
10.7. Изучите самостоятельно………………………………………………………………………………………………… 226
Глава 11. Классы………………………………………………………………………………….. 227
11.1. Основные понятия…………………………………………………………………………………………………………… 227
11.1.1. Введение в объектно-ориентированное программирование………………………………… 227
11.1.2. Введение в понятие класса………………………………………………………………………………………. 229
11.2. Объект класса………………………………………………………………………………………………………………….. 229
11.2.1. Метод __init__………………………………………………………………………………………………………….. 230
11.3. Объекты экземпляров……………………………………………………………………………………………………… 231
11.3.1. Создание экземпляров класса………………………………………………………………………………….. 231
11.3.2. Как это работает………………………………………………………………………………………………………. 232
11.3.3. Пример использования экземпляров класса…………………………………………………………… 232
11.4. Объекты методов…………………………………………………………………………………………………………….. 234
11.5. Наследование………………………………………………………………………………………………………………….. 235
11.6. Множественное наследование………………………………………………………………………………………. 236
11.6.1. Переопределение методов……………………………………………………………………………………….. 239
11.7. Полиморфизм…………………………………………………………………………………………………………………… 241
11.8. Абстракция и инкапсуляция…………………………………………………………………………………………… 241
11.9. Как контролировать доступ…………………………………………………………………………………………… 242
11.9.1. Приватные переменные……………………………………………………………………………………………. 242
11.10. Резюме……………………………………………………………………………………………………………………………. 243
11.11. Упражнения…………………………………………………………………………………………………………………… 243
11.11.1. Ответьте на вопросы………………………………………………………………………………………………. 243
11.11.2. Правда или ложь…………………………………………………………………………………………………….. 243
11.11.3. Практические задания……………………………………………………………………………………………. 244
11.11.4. Изучите самостоятельно………………………………………………………………………………………… 245
Глава 12. Ошибки и обработка исключений………………………………………… 247
12.1. Ошибки и исключения…………………………………………………………………………………………………….. 247
12.1.1. Синтаксические ошибки…………………………………………………………………………………………… 247
12.1.2. Исключения……………………………………………………………………………………………………………….. 248
12.2. Вызов исключений………………………………………………………………………………………………………….. 249
12.2.1. Оператор raise…………………………………………………………………………………………………………… 249
12.2.2. Исключение AssertionError………………………………………………………………………………………. 250
12.3. Обработка исключений………………………………………………………………………………………………….. 251
12.3.1. Операторы try и except……………………………………………………………………………………………… 251
12.3.2. Блок else…………………………………………………………………………………………………………………….. 252
12.4. Завершающий блок………………………………………………………………………………………………………… 253
12.5. Резюме……………………………………………………………………………………………………………………………… 255
12.6. Упражнения…………………………………………………………………………………………………………………….. 255
12.6.1. Ответьте на вопросы…………………………………………………………………………………………………. 255
12.6.2. Правда или ложь……………………………………………………………………………………………………….. 255
12.6.3. Практические задания………………………………………………………………………………………………. 256
Глава 13. Модули и пакеты………………………………………………………………….. 257
13.1. Модули…………………………………………………………………………………………………………………………….. 257
13.1.1. Определение модуля…………………………………………………………………………………………………. 257
13.1.2. Подробнее о модулях……………………………………………………………………………………………….. 259
13.2. Импорт модулей……………………………………………………………………………………………………………… 259
13.2.1. Импорт модулей из других модулей……………………………………………………………………….. 259
13.2.2. Импорт имен из модуля напрямую………………………………………………………………………….. 260
13.2.3. Импорт всех имен из модуля……………………………………………………………………………………. 260
13.2.4. Импорт модуля под другим именем………………………………………………………………………… 260
13.3. Стандартные модули……………………………………………………………………………………………………… 261
13.4. Функция dir()……………………………………………………………………………………………………………………. 262
13.5. Пакеты……………………………………………………………………………………………………………………………… 263
13.5.1. Пример пакета sound……………………………………………………………………………………………….. 263
13.5.2. Вызов пакета для дальнейшего использования……………………………………………………… 265
13.5.3. Популярные пакеты в Python…………………………………………………………………………………… 266
13.5.3.1. Сбор данных…………………………………………………………………………………………………….. 266
13.5.3.2. Обработка данных и моделирование…………………………………………………………….. 266
13.5.3.3. Визуализация данных……………………………………………………………………………………… 268
13.6. Резюме……………………………………………………………………………………………………………………………… 269
13.7. Упражнения…………………………………………………………………………………………………………………….. 269
13.7.1. Ответьте на вопросы…………………………………………………………………………………………………. 269
13.7.2. Правда или ложь……………………………………………………………………………………………………….. 269
13.7.3. Изучите самостоятельно………………………………………………………………………………………….. 270
Глава 14. ПРОЕКТ 3: Конвертер валют с графическим интерфейсом…… 271
14.1. Введение в Tkinter…………………………………………………………………………………………………………… 271
14.2. Основные шаги в Tkinter…………………………………………………………………………………………………. 273
14.3. Окно интерфейса конвертера валют……………………………………………………………………………… 274
14.3.1. Использование метода pack()…………………………………………………………………………………… 275
14.3.2. Использование метода grid()……………………………………………………………………………………. 276
14.4. Код для конвертации валют…………………………………………………………………………………………… 277
14.5. Итоговое приложение…………………………………………………………………………………………………….. 279
14.6. Резюме……………………………………………………………………………………………………………………………… 282
14.7. Изучите самостоятельно………………………………………………………………………………………………… 282
Глава 15. Библиотека NumPy……………………………………………………………….. 283
15.1. Введение в NumPy…………………………………………………………………………………………………………… 283
15.1.1. Установка NumPy……………………………………………………………………………………………………… 284
15.1.2. Импорт NumPy………………………………………………………………………………………………………….. 284
15.1.3. Разница между списком Python и массивом NumPy………………………………………………. 284
15.1.4. Зачем нам NumPy?……………………………………………………………………………………………………. 285
15.2. Массив NumPy………………………………………………………………………………………………………………… 286
15.2.1. Размерность массива………………………………………………………………………………………………… 286
15.2.2. Другие атрибуты массива………………………………………………………………………………………… 287
15.3. Создание массива…………………………………………………………………………………………………………… 287
15.3.1. Массивы из нулей, единиц и случайных чисел……………………………………………………… 289
15.3.2. Массив из диапазона значений……………………………………………………………………………….. 290
15.3.3. Указание типа данных массива………………………………………………………………………………. 291
15.3.4. Вывод массивов………………………………………………………………………………………………………… 291
15.4. Сортировка, добавление и удаление элементов массива…………………………………………… 292
15.4.1. Сортировка………………………………………………………………………………………………………………… 292
15.4.2. Сложение (конкатенация)………………………………………………………………………………………… 292
15.4.3. Удаление……………………………………………………………………………………………………………………. 293
15.5. Форма и размер массива………………………………………………………………………………………………… 293
15.6. Изменение формы……………………………………………………………………………………………………………. 294
15.7. Добавление оси……………………………………………………………………………………………………………….. 295
15.8. Индексирование и срезы………………………………………………………………………………………………… 296
15.9. Создание массива из существующих данных……………………………………………………………… 298
15.10. Копии и представления массивов……………………………………………………………………………….. 299
15.10.1. Присваивание без копии…………………………………………………………………………………………. 300
15.10.2. Представление или неглубокая копия…………………………………………………………………… 300
15.10.3. Глубокая копия……………………………………………………………………………………………………….. 301
15.11. Массивы NumPy в реальной жизни…………………………………………………………………………….. 301
15.11.1. Электронные таблицы Excel………………………………………………………………………………….. 302
15.11.2. Аудиофайлы и временные ряды…………………………………………………………………………….. 302
15.11.3. Изображения……………………………………………………………………………………………………………. 303
15.12. Резюме……………………………………………………………………………………………………………………………. 304
Глава 16. Операции в NumPy……………………………………………………………….. 305
16.1. Основные операции над массивами……………………………………………………………………………… 305
16.1.1. Универсальные функции………………………………………………………………………………………….. 307
16.2. Транслирование……………………………………………………………………………………………………………… 308
16.3. Функции агрегирования…………………………………………………………………………………………………. 308
16.4. Двумерные массивы……………………………………………………………………………………………………….. 309
16.5. Уникальные элементы массива……………………………………………………………………………………… 311
16.6. Транспонирование и изменение формы матрицы………………………………………………………… 313
16.7. Обратный порядок элементов массива…………………………………………………………………………. 314
16.8. Сжатие многомерного массива в одномерный…………………………………………………………….. 316
16.9. Работа с математическими формулами………………………………………………………………………… 317
16.10. Сохранение массива в файл и чтение из файла…………………………………………………………. 318
16.11. Резюме……………………………………………………………………………………………………………………………. 319
Глава 17. Библиотека Pandas……………………………………………………………….. 321
17.1. Введение в Pandas…………………………………………………………………………………………………………… 321
17.1.1. Зачем нам Pandas?……………………………………………………………………………………………………. 321
17.1.2. Установка и импорт Pandas……………………………………………………………………………………… 322
17.1.3. Обработка данных в Pandas…………………………………………………………………………………….. 323
17.2. Тип данных DataFrame…………………………………………………………………………………………………… 323
17.2.1. Создание DataFrame…………………………………………………………………………………………………. 323
17.2.2. Индексы в DataFrame……………………………………………………………………………………………….. 324
17.2.3. Series в DataFrame…………………………………………………………………………………………………….. 324
17.3. Столбцы DataFrame……………………………………………………………………………………………………….. 325
17.3.1. Добавление столбца…………………………………………………………………………………………………. 325
17.3.2. Удаление столбца…………………………………………………………………………………………………….. 326
17.3.3. Изменение значений в столбце………………………………………………………………………………… 326
17.4. Строки DataFrame…………………………………………………………………………………………………………… 326
17.4.1. Выбор строки…………………………………………………………………………………………………………….. 326
17.4.2. Срез строки (выбор нескольких строк)……………………………………………………………………. 327
17.5. Операции с DataFrame……………………………………………………………………………………………………. 327
17.6. Чтение данных из файла………………………………………………………………………………………………… 328
17.6.1. Пояснение к данным из примера……………………………………………………………………………… 329
17.7. Запись данных в файл…………………………………………………………………………………………………….. 330
17.8. Проверка DataFrame………………………………………………………………………………………………………. 330
17.8.1. Атрибут dtypes…………………………………………………………………………………………………………… 330
17.8.2. Метод info()……………………………………………………………………………………………………………….. 331
17.8.3. Метод head()……………………………………………………………………………………………………………… 332
17.8.4. Метод tail()………………………………………………………………………………………………………………… 332
17.9. Выбор части DataFrame…………………………………………………………………………………………………. 333
17.9.1. Выбор столбцов………………………………………………………………………………………………………… 333
17.9.2. Выбор строк (фильтрация)……………………………………………………………………………………….. 334
17.9.3. Выбор строк и столбцов…………………………………………………………………………………………… 335
17.10. Резюме……………………………………………………………………………………………………………………………. 337
Глава 18. Pandas в действии…………………………………………………………………. 339
18.1. Добавление столбца……………………………………………………………………………………………………….. 339
18.2. Удаление столбцов…………………………………………………………………………………………………………. 340
18.3. Переименование столбцов……………………………………………………………………………………………… 340
18.4. Сводная статистика………………………………………………………………………………………………………… 341
18.5. Группировка по категориям…………………………………………………………………………………………… 342
18.6. Сортировка строк……………………………………………………………………………………………………………. 345
18.7. Объединение данных из нескольких таблиц………………………………………………………………… 345
18.7.1. Объединение объектов……………………………………………………………………………………………… 346
18.7.2. Объединение с использованием общего идентификатора…………………………………….. 347
18.8. Резюме……………………………………………………………………………………………………………………………… 350
Глава 19. Визуализация в Python………………………………………………………….. 351
19.1. Визуализация данных…………………………………………………………………………………………………….. 351
19.1.1. Важность визуализации данных……………………………………………………………………………… 351
19.1.2. Основы визуализации……………………………………………………………………………………………….. 351
19.1.3. Простой линейный график в Pandas………………………………………………………………………… 352
19.1.4. Базовая диаграмма рассеяния…………………………………………………………………………………. 354
19.1.5. Другие виды графиков………………………………………………………………………………………………. 355
19.1.6. Диаграмма размаха………………………………………………………………………………………………….. 357
19.1.7. Несколько графиков………………………………………………………………………………………………….. 358
19.1.8. Сохранение графика…………………………………………………………………………………………………. 358
19.2. Библиотеки для визуализации данных…………………………………………………………………………. 359
19.2.1. Matplotlib……………………………………………………………………………………………………………………. 359
19.2.2. Seaborn……………………………………………………………………………………………………………………….. 360
19.2.3. ggplot…………………………………………………………………………………………………………………………… 361
19.2.4. Bokeh………………………………………………………………………………………………………………………….. 362
19.2.5. Folium…………………………………………………………………………………………………………………………. 362
19.2.6. Gleam………………………………………………………………………………………………………………………….. 363
19.3. Резюме……………………………………………………………………………………………………………………………… 364
Глава 20. Визуализация с помощью Matplotlib Pyplot…………………………… 365
20.1. Введение и историческая справка…………………………………………………………………………………. 365
20.2. Основные объкты Matplotlib………………………………………………………………………………………….. 366
20.2.1. Иерархия объектов Matplotlib………………………………………………………………………………….. 368
20.2.2. Типы входных данных для графиков………………………………………………………………………. 369
20.3. Элементы рисунка………………………………………………………………………………………………………….. 369
20.3.1. Рисунок (Figure)………………………………………………………………………………………………………… 370
20.3.2. Графики (Axes)…………………………………………………………………………………………………………… 371
20.3.3. Оси (Axis)……………………………………………………………………………………………………………………. 371
20.3.4. Объекты Artist……………………………………………………………………………………………………………. 371
20.4. Два способа использования Matplotlib…………………………………………………………………………. 371
20.4.1. Объектно-ориентированный интерфейс…………………………………………………………………. 371
20.4.2. Интерфейс Pyplot………………………………………………………………………………………………………. 372
20.4.3. Так какой же способ лучше?……………………………………………………………………………………. 373
20.5. Построение схожих графиков с помощью функций…………………………………………………….. 373
20.6. Модуль Pyplot…………………………………………………………………………………………………………………. 375
20.7. Функция plot()………………………………………………………………………………………………………………….. 376
20.7.1. Построение индексированных данных…………………………………………………………………… 377
20.7.2. Построение нескольких наборов данных……………………………………………………………….. 377
20.7.3. Форматирование стиля…………………………………………………………………………………………….. 377
20.8. Параметры функции plot()……………………………………………………………………………………………… 379
20.8.1. Параметры х, у…………………………………………………………………………………………………………… 379
20.8.2. Строка формата (fmt)………………………………………………………………………………………………… 379
20.8.2.1. Маркеры…………………………………………………………………………………………………………… 379
20.8.2.2. Стили линий……………………………………………………………………………………………………… 380
20.8.2.3. Цвета…………………………………………………………………………………………………………………. 380
20.8.3. Данные (data)…………………………………………………………………………………………………………….. 380
20.9. Возвращаемый объект plot()………………………………………………………………………………………….. 381
20.10. Именованные аргументы (**kwargs)…………………………………………………………………………… 381
20.11. Построение графиков по меткам…………………………………………………………………………………. 382
20.12. Построение графиков с категориальными переменными………………………………………….. 383
20.13. Изменение свойств линии…………………………………………………………………………………………….. 383
20.14. Работа с несколькими рисунками и графиками…………………………………………………………. 384
20.15. Вставка текста на график…………………………………………………………………………………………….. 386
20.16. Использование математических выражений в тексте……………………………………………….. 387
20.16.1. Аннотирование текста……………………………………………………………………………………………. 387
20.17. Логарифмические и другие нелинейные оси………………………………………………………………. 388
20.18. Резюме……………………………………………………………………………………………………………………………. 390
Глава 21. Визуализация с помощью объектно-ориентированного интерфейса в Matplotlib 391
21.1. Сравнение объектно-ориентированного API и Pyplot API………………………………………….. 391
21.2. Данные для работы………………………………………………………………………………………………………… 392
21.3. Построение графика по умолчанию……………………………………………………………………………… 392
21.4. Управление стилями……………………………………………………………………………………………………….. 393
21.5. Разные настройки графика…………………………………………………………………………………………….. 394
21.6. Добавление элементов на график………………………………………………………………………………….. 397
21.7. Форматирование текста на графике……………………………………………………………………………… 398
21.7.1. Базовые команды для работы с текстом…………………………………………………………………. 399
21.8. Сохранение графика в файл…………………………………………………………………………………………… 401
21.9. Примеры графиков………………………………………………………………………………………………………….. 402
21.9.1. Гистограмма……………………………………………………………………………………………………………… 402
21.9.2. Кривые и ломаные линии…………………………………………………………………………………………. 403
21.9.3. Трехмерные графики………………………………………………………………………………………………… 404
21.9.4. Круговая диаграмма…………………………………………………………………………………………………. 405
21.9.5. Пример построения нескольких графиков………………………………………………………………. 407
21.10. Резюме……………………………………………………………………………………………………………………………. 407
Ответы на вопросы «Правда или ложь»……………………………………………….. 409
Библиография………………………………………………………………………………………. 411