Опубликовано

Новинка: “Python. Красивые задачи для начинающих”

Python. Красивые задачи для начинающих

В книге приведены примеры решения различных практических задач на языке Python и предложено детальное пошаговое описание процесса написания программы для каждой из них. Подобраны задачи, которые имеют несколько вариантов решений и формируют алгоритмическое мышление. Показаны основы структурного, динамического, объектно-ориентированного, функционального программирования. Приведены способы работы с функциями, алгоритмы поиска в длину, в ширину, бэктрекинга, рекурсии. Материал расположен по возрастанию сложности, код программ снабжен комментариями, разъясняющими все языковые конструкции Python.

Для начинающих программистов

Python — это красиво!

Главная причина популярности языка Python — его лаконичность, простота и выразительность. Один и тот же алгоритм на этом языке можно запрограммировать по-разному – так, что будет казаться, будто программа написана на разных языках. В этой книге приводятся алгоритмы решения задач на Python, которые автор считает красивыми — все они имеют несколько вариантов решений и формируют алгоритмическое мышление. Эти алгоритмы – часть хорошего IT-образования. Рассмотрев предложенные задачи, знакомый с основами Python читатель сможет проверить, действительно ли он умеет программировать, а изучив их решения, значительно улучшит свои алгоритмические навыки. Ценность книги состоит в том, что в ней приводится детальное пошаговое описание процесса написания программы для решения каждой поставленной задачи.

  • Структурное программирование
  • Динамическое программирование
  • Объектно-ориентированное программирование
  • Функциональное программирование

Книгу “Python. Красивые задачи для начинающих” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………….. 7

На кого рассчитана эта книга?………………………………………………………………………………………………… 10

Структура книги………………………………………………………………………………………………………………………… 11

Благодарности…………………………………………………………………………………………………………………………… 12

Глава 1. Условия……………………………………………………………………………………. 13

1.1. Квадратное уравнение, комплексные корни…………………………………………………………………….. 13

Задача………………………………………………………………………………………………………………………………….. 13

1.2. Кирпич и дыра в стене………………………………………………………………………………………………………… 18

Задача………………………………………………………………………………………………………………………………….. 18

Версия 1……………………………………………………………………………………………………………………… 19

Версия 2……………………………………………………………………………………………………………………… 20

Версия 3……………………………………………………………………………………………………………………… 21

Глава 2. Структурное программирование………………………………………………. 23

2.1. Полупроходной балл………………………………………………………………………………………………………….. 23

Задача 1………………………………………………………………………………………………………………………………. 23

Версия 1……………………………………………………………………………………………………………………… 24

Версия 2……………………………………………………………………………………………………………………… 25

Задача 2………………………………………………………………………………………………………………………………. 28

Версия 3……………………………………………………………………………………………………………………… 28

Версия 4……………………………………………………………………………………………………………………… 29

Задача 3………………………………………………………………………………………………………………………………. 31

Версия 5……………………………………………………………………………………………………………………… 32

2.2. Метеостанция……………………………………………………………………………………………………………………… 33

Задача………………………………………………………………………………………………………………………………….. 33

Версия 1……………………………………………………………………………………………………………………… 34

Версия 2……………………………………………………………………………………………………………………… 37

2.3. Седловина матрицы……………………………………………………………………………………………………………. 40

Задача………………………………………………………………………………………………………………………………….. 40

2.4. Максимальный квадрат в матрице, заполненный нулями………………………………………………. 43

Задача………………………………………………………………………………………………………………………………….. 43

2.5. Чемпионат по игре в тетрис……………………………………………………………………………………………….. 46

Задача………………………………………………………………………………………………………………………………….. 46

2.6. Проверка правильности расстановки скобок…………………………………………………………………… 51

Задача………………………………………………………………………………………………………………………………….. 51

Глава 3. Функции………………………………………………………………………………….. 57

3.1. Решето Эратосфена и числа-близнецы…………………………………………………………………………….. 57

Задача………………………………………………………………………………………………………………………………….. 57

3.2. Решето Сундарама……………………………………………………………………………………………………………… 65

Задача………………………………………………………………………………………………………………………………….. 65

3.3. Лесенка………………………………………………………………………………………………………………………………… 67

Задача………………………………………………………………………………………………………………………………….. 67

3.4. Линейный и медианный фильтры………………………………………………………………………………………. 73

Задача 1………………………………………………………………………………………………………………………………. 73

Задача 2………………………………………………………………………………………………………………………………. 84

3.5. Алгоритм Евклида………………………………………………………………………………………………………………. 85

Задача………………………………………………………………………………………………………………………………….. 85

3.6. Гипероператоры…………………………………………………………………………………………………………………. 91

Задача………………………………………………………………………………………………………………………………….. 91

3.7. Ханойские башни……………………………………………………………………………………………………………… 102

Задача……………………………………………………………………………………………………………………………….. 102

3.8. Отображения списков……………………………………………………………………………………………………….. 109

Задача……………………………………………………………………………………………………………………………….. 109

Глава 4. Поиск в длину и ширину, бэктрекинг,
динамическое программирование………………………………………………………… 119

4.1. Лабиринт……………………………………………………………………………………………………………………………. 119

Задача 1…………………………………………………………………………………………………………………………….. 120

Версия 1…………………………………………………………………………………………………………………… 120

Версия 2…………………………………………………………………………………………………………………… 125

Версия 3…………………………………………………………………………………………………………………… 130

Версия 4…………………………………………………………………………………………………………………… 134

Задача 2…………………………………………………………………………………………………………………………….. 139

4.2. Задача о восьми ферзях……………………………………………………………………………………………………. 143

Задача……………………………………………………………………………………………………………………………….. 143

Версия 1…………………………………………………………………………………………………………………… 143

Версия 2…………………………………………………………………………………………………………………… 156

4.3. Поиск индекса элемента в списке……………………………………………………………………………………. 161

Задача……………………………………………………………………………………………………………………………….. 161

Версия 1…………………………………………………………………………………………………………………… 161

Версия 2…………………………………………………………………………………………………………………… 162

Версия 3…………………………………………………………………………………………………………………… 163

4.4. Сжатие строки…………………………………………………………………………………………………………………… 167

Задача……………………………………………………………………………………………………………………………….. 167

4.5. Укладка рюкзака………………………………………………………………………………………………………………. 176

Задача……………………………………………………………………………………………………………………………….. 176

4.6. Подпоследовательность максимальной длины……………………………………………………………… 180

Задача……………………………………………………………………………………………………………………………….. 181

Версия 1…………………………………………………………………………………………………………………… 181

Версия 2…………………………………………………………………………………………………………………… 184

Версия 3…………………………………………………………………………………………………………………… 186

Версия 4…………………………………………………………………………………………………………………… 191

4.7. Палиндром наибольшей длины……………………………………………………………………………………….. 199

Задача……………………………………………………………………………………………………………………………….. 199

4.8. Гиперсфера………………………………………………………………………………………………………………………… 208

Задача……………………………………………………………………………………………………………………………….. 209

Глава 5. Объектно-ориентированное программирование…………………….. 219

5.1. Графы с помощью словарей…………………………………………………………………………………………….. 219

Задача 1…………………………………………………………………………………………………………………………….. 220

Задача 2…………………………………………………………………………………………………………………………….. 220

Задача 3…………………………………………………………………………………………………………………………….. 224

Задача 4…………………………………………………………………………………………………………………………….. 225

Задача 5…………………………………………………………………………………………………………………………….. 226

Задача 6…………………………………………………………………………………………………………………………….. 227

Задача 7…………………………………………………………………………………………………………………………….. 228

Задача 8…………………………………………………………………………………………………………………………….. 228

5.2. Родословное древо……………………………………………………………………………………………………………. 230

Задача 1…………………………………………………………………………………………………………………………….. 230

Задача 2…………………………………………………………………………………………………………………………….. 238

Задача 3…………………………………………………………………………………………………………………………….. 243

5.3. Период в числовой последовательности………………………………………………………………………… 252

Задача……………………………………………………………………………………………………………………………….. 252

Версия 1…………………………………………………………………………………………………………………… 252

Версия 2…………………………………………………………………………………………………………………… 253

Версия 3…………………………………………………………………………………………………………………… 254

5.4. Треугольник Паскаля и сочетания………………………………………………………………………………….. 257

Задача 1…………………………………………………………………………………………………………………………….. 257

Задача 2…………………………………………………………………………………………………………………………….. 259

Отступление про функторы……………………………………………………………………………………. 262

5.5. Гиперкуб в многомерном пространстве………………………………………………………………………….. 266

Задача……………………………………………………………………………………………………………………………….. 266

Глава 6. Функциональное программирование……………………………………… 287

6.1. Интеграл…………………………………………………………………………………………………………………………….. 288

Задача……………………………………………………………………………………………………………………………….. 288

6.2. Отображения, сохраняющие внутреннюю структуру…………………………………………………… 298

Общая задача……………………………………………………………………………………………………………………. 298

Задача 1…………………………………………………………………………………………………………………………….. 299

Задача 2…………………………………………………………………………………………………………………………….. 302

Задача 3…………………………………………………………………………………………………………………………….. 304

6.3. Цепочки функций………………………………………………………………………………………………………………. 305

Задача……………………………………………………………………………………………………………………………….. 305

6.4. Монады……………………………………………………………………………………………………………………………… 309

Задача……………………………………………………………………………………………………………………………….. 309

6.5. Карринг……………………………………………………………………………………………………………………………… 319

Задача……………………………………………………………………………………………………………………………….. 319

6.6. Функторы…………………………………………………………………………………………………………………………… 331

Задача……………………………………………………………………………………………………………………………….. 331

Выводы по главам 3, 4 и 6……………………………………………………………………………………………………….. 342

Глава 7. Сюрреализм……………………………………………………………………………. 345

7.1. Фрактальные списки…………………………………………………………………………………………………………. 345

7.2. Фрактальный словарь………………………………………………………………………………………………………. 346

7.3. Бесконечные вызовы функции…………………………………………………………………………………………. 346

7.4. Функтор с бесконечными вызовами………………………………………………………………………………… 347

Заключение………………………………………………………………………………………….. 349

Предметный указатель…………………………………………………………………………. 351

Добряк Павел Вадимович

Добряк Павел Вадимович — кандидат технических наук, преподаватель Уральского федерального университета. Проводит занятия по различным языкам программирования, базам данных, искусственному интеллекту и проектированию информационных систем. Репетитор по математике и информатике.

Опубликовано

Вышла книга Дуга Фаррелла “Python. Как стать профессионалом”

Python. Как стать профессионалом

Книга ориентирована на читателей, имеющих базовый опыт программирования на языке Python и желающих быстро научиться применять его в реальных проектах или изучить Python в качестве второго языка. Рассмотрен широкий круг тем от соблюдения чистоты кода и грамотного именования функций и переменных, до проектирования API, правил объектно-ориентированного программирования, обеспечения безопасности (аутентификация, авторизация) и взаимодействия с базами данных. Затронут широкий круг вопросов, связанных с программированием модулей на Python, автоматизацией задач, использования веб-фреймворков, в частности Flask.

Для программистов на Python

Разработка приложений с Python и Flask

Программисту-новичку не терпится увидеть, как его код заработает. В свою очередь, разработчик-профессионал обязан писать софт, который был бы максимально надёжен. Хороший код должен работать быстро, легко масштабироваться, не доставлять проблем с поддержкой. Наконец, код должен быть безопасен, качественно спроектирован и документирован, его должно быть легко обновлять и версионировать.

Эта книга поможет вам пройти путь от начинающего Python-программиста до уверенного Python-разработчика.

Книга помогает понять, почему Python – самый популярный язык в мире – необыкновенно хорош для профессиональной разработки. Работая с этим языком, легко приобрести важные профессиональные навыки – научиться именовать переменные, функции и классы, продумывать и писать качественные API, пользоваться объектами. Также в ней объяснено, как справляться с неизбежными отказами, в особенности сетевыми, соблюдать ключевые правила обеспечения безопасности, подключаться к базам данных и научиться профессионально решать конкретные задачи в рамках больших проектов на Python.

Значительная часть книги посвящена Python-фреймворку Flask, упрощающему и ускоряющему серверную веб-разработку на Python, поддерживающему создание статических веб-страниц и способствующему интеграции серверной и клиентской частей веб-приложения.

Книгу “Python. Как стать профессионалом” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие. 13

Введение. 15

Благодарности. 17

Об этой книге. 19

Для кого предназначена данная книга. 19

Структура книги: ее дорожная карта. 20

О коде. 22

Об авторе. 23

Глава 1. Становление питониста. 25

1.1. Стремление к обучению.. 26

1.2. Достижение целей. 27

1.2.1. Стиль мышления разработчика. 27

1.2.2. Создание приложений. 28

1.3. Использование языка Python. 28

1.3.1. Парадигмы программирования. 28

1.3.2. Создание сопровождаемого кода. 29

1.3.3. Производительность. 30

1.3.4. Сообщество приверженцев языка. 32

1.3.5. Инструментарий разработчика. 33

1.4. Выбор используемой версии Python. 34

1.5. Заключительные размышления. 35

1.6. Резюме. 35

Часть I. Закладка фундамента. 37

Глава 2. Подходящие имена. 39

2.1. Имена. 39

2.1.1. Присвоение имен. 41

2.1.2. Эксперимент по присвоению имен. 44

2.2. Пространства имен. 46

2.3. Пространства имен в языке Python. 47

2.3.1. Уровень встроенных модулей. 48

2.3.2. Уровень модуля. 49

2.3.3. Уровень функций. 53

2.3.4. Область видимости пространства имен. 54

2.3.5. Эксперимент с пространством имен. 56

2.4. Резюме. 60

Глава 3. API: давайте пообщаемся. 61

3.1. Начало разговора. 62

3.1.1. Соглашение, заключаемое между частями кода. 63

3.1.2. Что передается в качестве входных данных. 64

3.1.3. Что ожидается на выходе. 66

3.2. Работа API 69

3.2.1. Именование. 69

3.2.2. Параметры. 70

3.2.3. Возвращаемое значение. 73

3.2.4. Единственная ответственность. 73

3.2.5. Длина функции. 74

3.2.6. Идемпотентность. 75

3.2.7. Побочные эффекты. 75

3.3. Документация. 77

3.4. Заключительные размышления. 78

3.5. Резюме. 78

Глава 4. Объект разговора. 80

4.1. Объектно-ориентированное программирование. 80

4.1.1. Определение класса. 81

4.1.2. Рисование с помощью класса. 83

4.1.3. Наследование. 94

4.1.4. Полиморфизм. 102

4.1.5. Композиция. 103

4.2. Заключительные размышления. 107

4.3. Резюме. 107

Глава 5. Исключительные события. 109

5.1. Исключения. 111

5.2. Обработка исключений. 113

5.2.1. Обработка исключения, если код способен как-то исправить ситуацию.. 114

5.2.2. Предоставление исключениям возможности перемещаться вверх
по коду ваших программ. 114

5.2.3. Информирование пользователя. 115

5.2.4. Не стоит замалчивать исключения. 115

5.3. Выдача исключений. 120

5.4. Создание пользовательских исключений. 121

5.5. Заключительные размышления. 124

5.6. Резюме. 124

Часть II. Работа над конкретным заданием.. 125

Глава 6. Обмен информацией по Интернету. 127

6.1. Делитесь своей работой с другими. 127

6.1.1. Преимущества веб-приложений. 128

6.1.2. Сложности, связанные с использованием веб-приложений. 128

6.2. Серверы. 129

6.2.1. Модель “запрос — ответ”. 130

6.3. Веб-серверы. 131

6.4. Flask. 134

6.4.1. Почему именно Flask?. 134

6.4.2. Ваш первый веб-сервер. 135

6.4.3. Обслуживание содержимого. 138

6.4.4. Дополнительные функции Jinja2. 141

6.5. Запуск веб-сервера. 153

6.5.1. Gunicorn. 154

6.5.2. Коммерческий хостинг. 154

6.6. Заключительные размышления. 155

6.7. Резюме. 155

Глава 7. Работа со стилем.. 157

7.1. Стилизация приложения. 157

7.1.1. Создание привлекательных стилей. 158

7.1.2. Согласованность стилей. 158

7.1.3. Нормализация стилей. 159

7.1.4. Адаптивный дизайн. 159

7.2. Встраивание Bootstrap. 160

7.2.1. Предыдущий пример, теперь с Bootstrap. 160

7.3. Помощь в развитии приложения MyBlog. 169

7.3.1. Экземпляр приложения Flask. 169

7.4. Пространства имен. 174

7.4.1. Flask Blueprints 174

7.4.2. Добавление Blueprints в MyBlog. 175

7.4.3. Создание страницы “О сайте”. 179

7.4.4. Реструктуризированный app-экземпляр. 181

7.5. Навигация. 181

7.5.1. Создание навигационной информации. 182

7.5.2. Отображение навигационной информации. 183

7.5.3. Текущий вид MyBlog. 184

7.6. Конфигурация приложения. 186

7.6.1. Файлы конфигурации. 186

7.6.2. Закрытая информация. 186

7.7. Панель инструментов отладки Flask. 187

7.7.1. FlaskDynaConf 187

7.8. Регистрационная информация. 192

7.8.1. Конфигурация. 192

7.9. Добавление фавикона. 196

7.10. Заключительные размышления. 198

7.11. Резюме. 198

Глава 8. А я тебя знаю? Аутентификация. 200

8.1. Протокол HTTP, не имеющий состояния. 200

8.1.1. Сессии. 201

8.2. Запоминание пользователя. 202

8.2.1. Аутентификация. 203

8.2.2. Вход в систему. 213

8.3. Экстренные сообщения. 219

8.3.1. Усовершенствование формы входа. 220

8.4. Расширение круга друзей. 223

8.4.1. Blueprint-схема аутентификации. 224

8.4.2. Новая форма для пользователя. 225

8.4.3. Ах да: выход из системы. 228

8.5. Что дальше. 229

8.6. Резюме. 229

Глава 9. Какие действия вам разрешены? Авторизация. 230

9.1. Переход ко входу и выходу. 230

9.2. Подтверждение новых друзей. 232

9.2.1. Отправка электронной почты. 233

9.3. Сброс паролей. 239

9.4. Профили пользователей. 243

9.5. Безопасность. 246

9.5.1. Защита маршрутов. 246

9.6. Роли пользователей, задаваемые авторизацией. 247

9.6.1. Создание ролей. 247

9.6.2. Авторизация маршрутов. 250

9.7. Защита форм. 253

9.8. Заключительные размышления. 253

9.9. Резюме. 254

Глава 10. Выгоды от постоянства: базы данных. 255

10.1. Вторая половина дела. 255

10.1.1. Долговременное хранение информации. 256

10.2. Доступ к данным. 256

10.3. Системы управления базами данных. 262

10.3.1. Таблицы. 262

10.3.2. Отношения. 263

10.3.3. База данных транзакций. 266

10.3.4. Язык структурированных запросов SQL. 268

10.4. Использование SQLite в качестве базы данных. 271

10.5. SQLAlchemy. 271

10.5.1. Преимущества. 272

10.6. Моделирование базы данных. 272

10.6.1. Определение классов. 273

10.7. Создание и использование базы данных. 277

10.7.1. Добавление данных. 277

10.7.2. Использование данных. 280

10.8. Заключительные размышления. 283

10.9. Резюме. 283

Глава 11. Мне есть что сказать. 285

11.1. Публикации в MyBlog. 285

11.1.1. Моделирование баз данных. 286

11.2. Изменение порядка изложения материала. 289

11.3. Blueprint-схема контента. 289

11.4. Отображение и создание публикаций. 290

11.4.1. Обработчик отображения. 290

11.4.2. Шаблон отображения. 291

11.5. Создание публикаций. 292

11.5.1. Обработчик создания. 292

11.5.2. Форма создания. 293

11.5.3. Шаблон создания. 294

11.6. Отображение и редактирование публикации. 295

11.6.1. Обработчик отображения. 295

11.6.2. Шаблон отображения. 296

11.6.3. Обработчик обновления. 298

11.6.4. Форма обновления. 299

11.6.5. Шаблон обновления. 300

11.7. Иерархия контента для комментариев. 301

11.7.1. Изменение класса сообщения. 304

11.7.2. Обработчик отображения. 305

11.7.3. Шаблон отображения. 308

11.8. Создание комментариев. 310

11.8.1. Шаблон создания. 310

11.8.2. Форма создания. 311

11.8.3. Обработчик создания. 311

11.9. Уведомление пользователей. 312

11.10. Обработка ошибок сайта. 314

11.11. Заключительные размышления. 317

11.12. Резюме. 317

Глава 12. И что, на этом всё?. 319

12.1. Тестирование. 319

12.1.1. Модульное тестирование. 320

12.1.2. Функциональное тестирование. 321

12.1.3. Сквозное тестирование. 321

12.1.4. Интеграционное тестирование. 321

12.1.5. Нагрузочное тестирование. 321

12.1.6. Тестирование производительности. 321

12.1.7. Регрессионное тестирование. 322

12.1.8. Тестирование доступности. 322

12.1.9. Приемочное тестирование. 322

12.2. Отладка. 323

12.2.1. Воспроизведение ошибок. 323

12.2.2. Точки останова. 323

12.2.3. Ведение журнала. 324

12.2.4. Неприемлемые результаты. 324

12.2.5. Процесс исключения. 325

12.2.6. Проговаривание проблемы. 325

12.3. Инструменты. 325

12.3.1. Управление исходным кодом. 325

12.3.2. Оптимизация. 326

12.3.3. Контейнеры. 327

12.3.4. Базы данных. 327

12.3.5. Языки. 328

12.4. Среды операционных систем. 329

12.5. Облачные вычисления. 329

12.6. Сеть. 330

12.7. Сотрудничество. 330

12.8. Заключительные размышления. 331

12.9. Резюме. 331

Приложение. Ваша среда разработки. 333

П1. Установка Python. 333

П1.1. Windows 334

П1.2. Mac. 334

П1.3. Linux. 335

П2. Виртуальная среда Python. 336

П2.1. Windows 337

П2.2. Mac и Linux. 338

П3. Настройка Visual Studio Code. 339

П3.1. Установка Visual Studio Code. 339

П3.2. Установка Python-расширения. 340

П3.3. Другие полезные расширения. 340

П3.4. Запуск из командной строки. 341

П3.5. Запуск проекта. 341

П4. Ряд полезных советов. 343

Предметный указатель. 345

Doug Farrell

Дуг Фаррелл (Doug Farrell) занимается разработкой программных средств с 1983 года, хотя имеет степени бакалавра по двум явно смежным областям — по физике и по прикладному искусству. Дуг — программист-самоучка, на протяжении многих лет использовавший немало языков во многих отраслях: Pascal, Fortran, C/C++, PHP, Python и JavaScript. С Python он работает с 2000 года, а с 2006 года Python стал его основным языком. Дуг написал множество статей для RealPython.com. Он также преподавал в центре STEM, где использовалась существенная часть материалов разработанного им обучающего курса.

Опубликовано

Новинка: “Обработка данных на Python. Data Wrangling и Data Quality”

Обработка данных на Python. Data Wrangling и Data Quality

Книга посвящена первичной обработке данных (Data Wrangling) на Python  и  оценке их качества (Data Quality). Материал содержит основополагающие концепции, экспертные советы и  ресурсы, необходимые для первичной обработки, извлечения, оценки и анализа данных. Все темы раскрыты на простых и наглядных примерах из практики. Даны необходимые и достаточные сведения о языке программирования  Python 3.8+ для чтения, записи и преобразования данных из различных источников, а также  для обработки данных в больших масштабах. Приведены лучшие практики  документирования и структурирования кода. Описан сбор данных из файлов, веб-страниц и API. Рассмотрены приемы проведения базового статистического анализа наборов данных, а также наглядные и убедительные способы визуализации и представления  данных. Изложение рассчитано как на новичков по обработке данных, так и на профессионалов. Электронный архив на сайте издательства содержит цветные иллюстрации к книге.

Для специалистов по обработке данных

Начните работу с чтения, очистки и анализа данных

Мир вокруг нас полон данных, которые содержат уникальные и ценные сведения, но полезную информацию из этих «сырых» данных нужно уметь извлечь!

Книга содержит основополагающие концепции, экспертные советы и  ресурсы, необходимые для первичной обработки, извлечения, оценки и анализа данных, а также инструменты для эффективного представления выводов. Она предназначена для специалистов по обработке данных любого уровня — от новичков до опытных профессионалов — и предлагает простые, понятные всем и эффективные  способы обработки.

В этой книге ярко проявляется опыт Сьюзан Макгрегор в преподавании журналистики данных (data journalism) студентам всех уровней. Она приводит примеры из реальной жизни и объясняет, как подходить к поиску, проверке и анализу данных доступным способом.
 Джоанна С. Као , технический руководитель журналистики данных в газете Файнэншл Таймс

  • Применяйте Python 3.8+ для чтения, записи и преобразования данных из различных источников, а также для обработки данных в больших масштабах.
  • Организуйте, документируйте и структурируйте свой код, используя лучшие практики
  • Собирайте данные из файлов, веб-страниц и API
  • Проводите базовый статистический анализ, чтобы осмыслить наборы данных
  • Визуализируйте и представляйте данные наглядным и убедительным образом

Книгу “Обработка данных на Python. Data Wrangling и Data Quality” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Введение. 11

Для кого предназначена эта книга?. 12

Поедете сами или возьмете такси?. 12

Кому не следует читать эту книгу?. 13

Что ожидать от этой книги. 13

Типографские соглашения. 14

Использование примеров кода. 15

Цветные иллюстрации. 16

Возможности онлайнового обучения от компании O’Reilly. 16

Как связаться с нами. 16

Благодарности. 17

ГЛАВА 1. Введение в первичную обработку (выпас) и качество данных. 19

Что такое выпас данных?. 20

Что такое качество данных?. 22

Целостность данных. 23

Соответствие данных. 23

Почему мы выбрали Python?. 25

Универсальность. 25

Доступность. 25

Удобочитаемость. 26

Сообщество. 26

Альтернативы языку Python. 27

Написание и исполнение программ на языке Python. 27

Работа с кодом Python на локальном устройстве. 30

Введение в работу с командной строкой. 30

Установка языка Python, среды Jupyter Notebook и редактора кода. 33

Работа с кодом Python в режиме онлайн. 39

Hello World! 39

Создание файла автономного сценария Python при помощи Atom.. 39

Создание блокнота кода Python в Jupyter Notebook. 41

Создание блокнота кода Python в Google Colab. 42

Создаем программу. 43

В файле автономного сценария. 43

В блокноте. 43

Исполняем программу. 43

В файле автономного сценария. 43

В блокноте. 44

Документирование, сохранение и управление версиями своего кода. 44

Документирование. 44

Сохранение. 46

Управление версиями. 46

Заключение. 56

ГЛАВА 2. Введение в Python. 57

“Части речи” языков программирования. 58

Существительные ≈ переменные. 59

Важно ли конкретное имя?. 61

Наилучшие практики для именования переменных. 62

Глаголы ≈ функциям. 62

Применение пользовательских функций. 67

Библиотеки: занимаем пользовательские функции у других программистов. 68

Структуры управления: циклы и условные операторы. 69

Циклы. 69

Условные операторы. 72

Понимание ошибок. 77

Синтаксические ошибки. 78

Ошибки времени исполнения. 79

Логические ошибки. 83

Отправляемся в путь с данными Citi Bike. 85

Начинаем с создания псевдокода. 86

Масштабирование. 92

Заключение. 93

ГЛАВА 3. Понимание качества данных. 95

Оценка соответствия данных. 97

Достоверность данных. 98

Надежность данных. 100

Репрезентативность данных. 101

Оценка целостности данных. 104

Необходимые, но недостаточные. 106

Важные. 108

Достижимость. 111

Улучшение качества данных. 114

Очистка данных. 115

Аугментация данных. 115

Заключение. 116

ГЛАВА 4. Работа с файловыми и канальными данными
на языке Python. 117

Структурированные и неструктурированные данные. 119

Работа со структурированными данными. 123

Файловые табличные форматы данных. 124

Выпас табличных данных посредством языка Python. 126

Выпас реальных данных: понимание безработицы. 133

XLSX, ODS и все остальные. 136

Данные фиксированной ширины. 143

Канальные данные — интерактивные обновления через Интернет. 147

Выпас канальных данных средствами языка Python. 150

Формат JSON: данные следующего поколения. 160

Работа с неструктурированными данными. 165

Текст на основе изображений: доступ к данным в формате PDF. 165

Выпас PDF-данных, используя Python. 166

Обращение к таблицам PDF посредством Tabula. 171

Заключение. 171

ГЛАВА 5. Доступ к интернет-данным.. 173

Доступ к веб-данным XML и JSON.. 175

Знакомство с API-интерфейсами. 178

Базовые API-интерфейсы на примере поисковой системы. 179

Специализированные API-интерфейсы: добавление простой
аутентификации. 181

Получение ключа для API-интерфейса FRED.. 181

Использование ключа API для запроса данных. 182

Чтение документации по API-интерфейсу. 183

Защита своего ключа API при использовании сценариев Python. 186

Создание файла учетных данных. 188

Использование учетных данных в отдельном сценарии. 189

Основы работы с файлом .gitignore. 190

Специализированные API-интерфейсы: работа с протоколом OAuth. 193

Получение учетной записи разработчика Twitter 194

Создание приложения и учетных данных Twitter 196

Кодирование ключа API и ключа секрета API 201

Запрос токена доступа и данных из API-интерфейса Twitter 202

Этические нормы при работе с API-интерфейсами. 206

Извлечение веб-данных: источник данных последней надежды. 207

Осторожно извлекаем данные с веб-сайта УГПТ. 210

Использование средств инспектирования браузера. 211

Решение Python для извлечения данных из веб-страницы:
библиотека Beautiful Soup. 214

Заключение. 218

ГЛАВА 6. Оценка качества данных. 219

Пандемия и программа PPP. 221

Оценка целостности данных. 222

Имеют ли данные известное происхождение?. 223

Актуальны ли данные?. 223

Полные ли данные?. 224

Хорошо ли данные аннотированы?. 236

Являются ли данные крупномасштабными?. 242

Непротиворечивы ли данные?. 244

Многомерны ли наши данные?. 248

Атомарны ли данные?. 250

Понятны ли данные?. 250

Размерностно структурированы ли данные?. 252

Оценка соответствия данных. 253

Достоверность данных. 253

Надежность данных. 257

Репрезентативность данных. 258

Заключение. 259

ГЛАВА 7. Очистка, преобразование и дополнение данных. 261

Выбор подмножества данных системы Citi Bike. 262

Простое разбиение. 263

Регулярные выражения: супермощное средство сопоставления строк. 265

Создание дат. 270

Удаление хлама из файлов данных. 272

Декодирование дат Excel 276

Создание настоящих данных CSV из данных фиксированной ширины. 279

Исправление разнообразности написаний. 282

Тернистый путь к “простым” решениям. 288

Опасные подводные камни. 290

Дополнение данных. 292

Заключение. 294

ГЛАВА 8. Структурирование и рефакторинг кода. 296

Обзор пользовательских функций. 296

Многократное использование кода. 297

Аккуратное и понятное документирование. 297

Недостаточная функциональность по умолчанию.. 298

Область видимости. 298

Определение параметров функции. 301

Доступные опции. 302

Предоставление аргументов. 303

Возвращаемые значения. 303

Работа со стеком. 305

Рефакторинг для получения удовольствия и прибыли. 306

Функция для определения рабочих дней. 306

Опрятные метаданные. 309

Использование pydoc для документирования сценариев и пользовательских функций. 317

О полезности аргументов командной строки. 321

Отличия во взаимодействии со сценариями в автономных файлах и блокнотах. 325

Заключение. 325

ГЛАВА 9. Введение в анализ данных. 327

Вся суть — в контексте. 328

Одинаковые, но не совсем. 329

Что типично? Оценка центральной тенденции. 329

Что это значит?. 330

Поразмыслим нестандартно: выявляем выбросы. 332

Визуализация для анализа данных. 332

Какова форма наших данных? Учимся понимать гистограммы. 336

Вопрос за $2 миллиона. 346

Пропорциональный ответ. 359

Заключение. 362

ГЛАВА 10. Представление данных. 364

Основы визуального красноречия. 365

Сформулируйте свои данные. 367

Диаграммы, графики и картограммы — вот это да! 368

Круговые диаграммы. 369

Линейчатые и столбчатые диаграммы. 372

Линейные диаграммы. 377

Диаграмма рассеяния. 380

Картограммы. 383

Элементы красноречивых визуальных эффектов. 386

“Мелкие” детали действительно имеют значение. 386

Доверяйте своим глазам (и экспертам) 387

Выбор масштаба. 388

Выбор цветовой гаммы. 389

Прежде всего делайте аннотации! 389

От базового к красивому: настройка визуализации с помощью seaborn и matplotlib. 390

Выйдите за рамки основ. 395

Заключение. 396

ГЛАВА 11. За пределами Python. 397

Дополнительные инструменты для анализа данных. 398

Программы для работы с электронными таблицами. 398

OpenRefine. 399

Дополнительные инструменты для обмена и представления данных. 402

Редактирование изображений в форматах JPG, PNG и GIF. 402

Программное обеспечение для редактирования SVG и других векторных форматов. 402

Размышления об этике. 404

Заключение. 405

Приложение А. Другие ресурсы по программированию на Python. 406

Официальная документация Python. 406

Установка ресурсов Python. 407

Где искать библиотеки. 407

Следите за остротой своих инструментов. 408

Где получить больше информации. 409

Приложение Б. Еще несколько слов о Git 410

Вы запускаете команду git push/pull и оказываетесь в странном текстовом редакторе. 410

Ваша команда git push/pull отклоняется. 412

Выполните команду git pull 412

Краткое руководство по Git 414

приложение В. Поиск данных. 416

Репозитории данных и API 416

Эксперты по предметным вопросам. 417

Запросы FOIA/L. 418

Кастомные методы сбора данных. 419

приложение Г. Ресурсы для визуализации и информационного дизайна. 421

Основополагающие книги по визуализации информации. 421

Краткое руководство, за которым вы потянетесь. 422

Источники вдохновения. 422

Об авторе. 423

Колофон. 424

Предметный указатель. 425

Susan McGregor

Сьюзен Макгрегор (Susan McGregor) — исследователь Института науки о данных Колумбийского университета. На протяжении более десяти лет она применяет свой успешный подход к преподаванию программирования и анализа данных для студентов нетехнических специальностей.

Опубликовано

Встречайте: Сетевое программирование на Python

Сетевое программирование на Python

Книга посвящена разработке серверных приложений и клиент-серверных архитектур на Python. Рассказано о поддержке SSL в Python 3, представлены примеры работы с протоколами TCP, UDP, HTTP, SMTP, IMAP, FTP, RPC, взаимодействия с сервисами DNS. Освещена работа с электронной почтой в приложениях. Описаны цели протокола TLS и методы их достижения на Python. Подробно описаны возможности модуля asyncio, входящего в состав Python 3.4, даны рекомендации по разработке сетевых приложений с использованием веб-фреймворков Flask и Django.

Для программистов

ПОДРОБНОЕ РУКОВОДСТВО ПО СЕТЕВОМУ ПРОГРАММИРОВАНИЮ НА PYTHON

Книга рассказывает о разработке на языке Python клиент-серверных проектов, взаимодействующих с сетью и веб-приложениями. Всесторонне рассматривается поддержка SSL, показаны примеры работы с протоколами TCP, UDP, HTTP, SMTP, IMAP, FTP, RPC и взаимодействия с сервисами DNS. Рассказано об использовании входящего в состав Python 3.4 модуля asyncio, о сетевых возможностях веб-фреймворков Flask и Django.

В книге описаны
ключевые возможности SSL в Python 3,
цели протокола TLS и методы их достижения на Python,
архитектура серверов и создание серверных приложений,
работа с электронной почтой в приложениях,
применение Flask и Django для создания сетевых веб-приложений.

Книгу “Сетевое программирование на Python” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Об авторе. 14

О рецензенте. 15

Благодарности. 16

Предисловие. 17

Пакет кода. 19

ГЛАВА 1. Введение в сетевое взаимодействие между клиентом и сервером.. 21

Содержание главы. 21

Цель  22

Основы: стеки и библиотеки. 22

Уровни приложения. 25

Что такое протокол. 26

Сетевое взаимодействие. 28

Слой за слоем. 30

Кодирование и декодирование. 32

Протокол IP. 33

IP-адреса. 34

Маршрутизация. 35

Фрагментация пакетов. 37

Подробно об IP. 38

Резюме. 38

ГЛАВА 2. Протокол UDP. 41

Содержание главы. 42

Цель  42

Множество сервисов в одной системе. 42

Сокет — точка соединения. 44

Клиенты, принимающие любые пакеты. 48

Отсрочка, блокировка и время ожидания. 50

UDP-сокеты. 54

Идентификаторы запросов. 56

От привязки до интерфейсов. 57

Фрагментация UDP. 59

Параметры сокетов. 61

Широковещание. 62

Сценарии применения UDP. 64

Резюме. 64

ГЛАВА 3. Протокол TCP. 67

Содержание главы. 67

Цель  68

Как работает TCP. 68

Когда использовать TCP. 69

Сокеты TCP. 70

TCP-клиент и TCP-сервер. 71

Одно взаимодействие — один сокет. 75

Адрес. 77

От привязки до интерфейсов. 78

Взаимоблокировка. 79

Полуоткрытые соединения, закрытые соединения. 84

Потоки TCP для передачи файлов. 86

Резюме. 86

ГЛАВА 4. DNS и имена сокетов. 89

Содержание главы. 89

Цель  89

Имена сокетов и хостов. 90

Пять координат сокетов. 91

IPv6  92

Современное разрешение адресов. 93

Привязка сервера к порту с помощью getaddrinfo() 94

Метод getaddrinfo() для привязки к сервису. 95

Получение канонического имени хоста с помощью getaddrinfo() 96

Другие флаги getaddrinfo() 98

Примитивные процедуры службы имен. 99

Метод getsockaddr() 100

Протокол DNS. 101

Почему не стоит использовать DNS напрямую.. 104

Python для DNS-запросов. 105

Разрешение почтовых доменов. 106

Резюме. 109

ГЛАВА 5. Данные и ошибки в Интернете. 111

Содержание главы. 111

Цель  111

Строки и байты. 111

Строки символов. 113

Сетевой порядок байтов и двоичные числа. 116

Кадрирование. 119

Pickle и форматы с разделителями. 125

JSON и XML. 126

Сжатие. 127

Исключения в сети. 128

Специфические исключения. 130

Исключения в сети: обнаружение и сообщение об ошибках. 131

Резюме. 133

ГЛАВА 6. Протокол SSL/TLS. 135

Содержание главы. 135

Цель  136

От чего не защищает TLS. 136

Что худшее может случиться?. 137

Создание сертификатов. 139

TLS Offloading. 141

Контексты по умолчанию в Python 3.4. 142

Подходы к обертке сокетов. 146

Выбор шифров вручную и Perfect Forward Security. 147

Поддержка протокола TLS. 149

Дальнейшее изучение. 151

Резюме. 157

ГЛАВА 7. Архитектура сервера. 159

Содержание главы. 159

Цель  160

Несколько слов о развертывании. 160

Базовый протокол. 162

Однопоточный сервер. 166

Многопроцессорный и многопоточный серверы. 169

Фреймворк SocketServer из прошлого. 171

Асинхронные серверы. 172

Фреймворк asyncio с обратными вызовами. 177

Фреймворк asyncio с сопрограммами. 179

Устаревший модуль asyncore. 181

Комбинированный подход. 182

Под влиянием inetd. 183

Резюме. 185

ГЛАВА 8. Очереди сообщений и кеши. 187

Содержание главы. 187

Цель  188

Использование Memcached (кеширование в памяти) 188

Хеширование и сегментирование. 191

Очереди сообщений. 194

Очереди сообщений в Python. 196

Резюме. 201

ГЛАВА 9. HTTP-клиенты.. 203

Содержание главы. 203

Цель  204

Библиотеки клиентов Python. 204

Кадрирование, шифрование и порты. 206

Методы. 208

Хосты и пути. 209

Коды состояний. 210

Валидация и кеширование. 213

Кодирование содержимого. 216

Согласование содержимого. 216

Тип содержимого. 218

Аутентификация по HTTP. 219

Файлы cookie. 221

Поддержание соединения и httplib. 222

Резюме. 223

ГЛАВА 10. Серверы для работы с HTTP. 225

Содержание главы. 225

Цель  226

Стандарт WSGI 226

Серверные фреймворки для асинхронной обработки. 228

Прямые и обратные прокси. 229

Четыре архитектурных стиля. 230

Python на Apache. 232

HTTP-серверы на Python. 232

Преимущество обратных прокси. 233

Платформа как услуга. 234

REST и паттерны GET и POST. 236

WSGI без фреймворка. 238

Резюме. 242

ГЛАВА 11. Всемирная паутина. 245

Содержание главы. 245

Цель  246

URL и гипермедиа. 246

Создание и парсинг URL. 247

Относительные URL. 250

Язык гипертекстовой разметки HTML. 251

Чтение и запись с использованием базы данных. 253

Ужасное веб-приложение на Flask. 255

Методы и формы HTTP. 261

Когда формы используют неподходящие методы. 263

Опасные и безопасные сookie. 264

Непостоянный межсайтовый скриптинг. 266

Постоянный межсайтовый скриптинг. 268

Подделка межсайтовых запросов. 269

Улучшенная программа. 270

Приложение для оплаты на Django. 273

Выбор фреймворка для веб-сайта. 277

Веб-сокеты. 279

Веб-скрейпинг. 279

Получение страниц. 281

Страницы для веб-скрейпинга. 285

Рекурсивный веб-скрейпинг. 287

Резюме. 291

ГЛАВА 12. Составление и парсинг сообщений электронной почты.. 293

Содержание главы. 293

Цель  294

Форматирование электронного письма. 294

Составление электронного письма. 296

HTML и мультимедиа. 298

Создание контента. 303

Парсинг электронного письма. 305

Использование MIME. 307

Кодирование заголовков. 309

Парсинг дат. 311

Резюме. 312

ГЛАВА 13. Протокол SMTP. 313

Содержание главы. 313

Цель  314

Веб-сервисы электронной почты и почтовые клиенты. 314

Все началось с командной строки. 314

Развитие клиентов. 315

Переход на веб-сервисы электронной почты. 317

Функции SMTP. 318

Передача электронной почты. 319

Получатель на конверте и заголовки. 320

Несколько прыжков. 320

Библиотека для работы с протоколом SMTP. 322

Обработка ошибок и отладка. 323

EHLO для сбора информации. 326

SSL и TLS. 329

Аутентификация SMTP. 332

Советы по SMTP. 333

Резюме. 334

ГЛАВА 14. Протокол POP. 335

Содержание главы. 335

Цель  336

Серверы POP и стандарты. 336

Аутентификация и подключение. 336

Получение информации о почтовом ящике. 339

Загрузка и удаление писем. 340

Резюме. 343

ГЛАВА 15. Протокол IMAP. 345

Содержание главы. 346

Цель  347

Реализация IMAP в Python. 347

Клиент IMAP. 349

Просмотр папок. 351

UID и номера писем. 351

Интервалы между письмами. 352

Общая информация. 352

Получение всего почтового ящика. 354

Загрузка отдельных писем. 356

Добавление и удаление флагов. 363

Удаление писем. 364

Поиск. 364

Работа с папками. 366

Асинхронность. 367

Резюме. 367

ГЛАВА 16. Протоколы SSH и Telnet 369

Содержание главы. 369

Цель  370

Автоматизация с помощью командной строки. 370

Раскрытие выражения и экранирование в командной строке. 371

Аргументы в командах UNIX.. 372

Экранирование символов. 374

Ужасная командная строка Windows 376

Терминал. 377

Терминалы и буферизация. 380

Telnet 381

SSH: безопасная оболочка. 386

SSH: краткий обзор. 386

Ключи хоста для SSH.. 387

Аутентификация в SSH.. 390

Отдельные команды и сеансы. 391

Протокол SFTP. 396

Дополнительные возможности. 399

Резюме. 399

ГЛАВА 17. Протокол FTP. 401

Содержание главы. 402

Цель  402

Что делать, если невозможно использовать FTP. 402

Каналы коммуникации. 403

FTP в Python. 404

Двоичные файлы и файлы ASCII 405

Расширенная загрузка двоичных файлов с сервера. 407

Отправка данных на удаленный компьютер. 409

Расширенная отправка двоичных данных. 410

Обработка ошибок. 411

Поиск по каталогам. 412

Обнаружение каталогов и загрузка в рекурсивном режиме. 414

Создание и удаление каталогов. 416

Безопасное использование FTP. 416

Резюме. 416

ГЛАВА 18. RPC — удаленный вызов процедур. 419

Содержание главы. 420

Цель  421

Характеристики RPC. 421

XML-RPC. 422

JSON-RPC. 429

Самодокументируемые данные. 432

Объекты: Pyro и RPyC. 434

Пример RPyC. 435

Очереди сообщений, RPC и веб-фреймворки. 438

Восстановление после ошибок в сети. 438

Резюме. 439

Предметный указатель. 441

Опубликовано

Удивительная книга для детей: “Мама, не отвлекай. Я Python учу!”

Мама, не отвлекай. Я Python учу!

Эта книга + телефон – все, что нужно ребенку, чтобы полностью самостоятельно без помощи взрослых освоить основы программирования на языке Python, написать десятки игр, интерактивных программ и поделиться ими в любых привычных мессенджерах и соцсетях.
Книгу отличает сверхбыстрый старт, удобство обучения, легкость изложения и авторский юмор, .
При этом новички узнают о командах, циклах, типах данных, переменных, условных выражениях, графических примитивах и координатах. Освоят игры и анимацию, работу со строками, комментарии, методы (функции), операторы сравнения, случайные числа, условные выражения и многое другое. Электронный архив на сайте издательства содержит коды примеров и изображения эмодзи.

Для детей младшего и среднего школьного возраста

Читать и программировать можно весело и непринужденно

Телефон есть практически у каждого ребенка 10+ лет. Осталось только купить эту книгу, чтобы ребенок полностью самостоятельно смог изучить основы самого популярного языка программирования Python.

Читать и программировать можно весело и непринужденно: сидя на диване, на даче у бабушки, на прогулке или на переменках в школе – в одной руке телефон, в другой эта книга.

Первую программу на Python можно выполнить за пару минут, еще даже не открыв книгу, а только считав телефоном QR-код с ее обложки!

Прочитав всю книгу, ребенок

  • напишет несколько десятков игр и интерактивных программ,
  • поделится ими со своими друзьями в привычных мессенджерах и соцсетях,
  • отправится в увлекательное путешествие в профессиональное программирование.

Книгу “Мама, не отвлекай. Я Python учу!” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Лазаревский Игорь Вадимович

Лазаревский Игорь Вадимович – программист, автор книг и курсов, преподаватель Американского университета в Центральной Азии, основатель онлайн-школы по программированию Khasang со стажем преподавания современных языков программирования более 10 лет, вырастивший десятки высококлассных Senior-разработчиков с полного нуля. Ведет личный блог igor.kg.

Опубликовано

Супер бестселлер: “Python для гиков”

Python для гиков

Книга подробно рассказывает о разработке, развертывании и поддержке крупномасштабных проектов на Python. Представлены такие концепции, как итераторы, генераторы, обработка ошибок и исключений, обработка файлов и ведение журналов. Приведены способы автоматизации тестирования приложений и разработки через тестирование (TDD). Рассказано о написании приложений с использованием кластера Apache Spark для обработки больших данных, о разработке и развертывании бессерверных программ в облаке на примере Google Cloud Platform (GCP), о создании веб-приложений и REST API, использовании среды Flask. Показаны способы применения языка для создания, обучения и оценки моделей машинного обучения, а также их развертывания в облаке, описаны приемы использования Python для извлечения данных с сетевых устройств и систем управления сетью (NMS).

Для программистов

Создавайте эффективные приложения, используя лучшие практики программирования.

Гик — человек, глубоко погруженный в мир компьютерных технологий, стремящийся досконально разобраться в наиболее важных мелочах и нюансах. Эта книга написана для гиков, увлеченных программированием на Python.

Книга раскрывает методы оптимального использования Python как с точки зрения проектирования, так и реализации практических задач. В ней подробно описан жизненный цикл крупномасштабного проекта на Python, показаны различные способы создания модульной архитектуры Python-проекта. Вы изучите лучшие практики и паттерны проектирования, узнаете, как масштабировать приложения на Python, как реализовать многопроцессорность и многопоточность. Вы поймете, как можно использовать Python не только для развертывания на одной машине, но также в частных и публичных облачных средах. Вы изучите методы обработки данных, сосредоточитесь на создании микросервисов и научитесь использовать Python для автоматизации сетей и машинного обучения. Наконец, вы узнаете, как применять описанные методы и практики в веб-разработке.

Вы изучите:

  • Принципы разработки и управления сложными проектами
  • Способы автоматизации тестирования приложений и разработки через тестирование (TDD)
  • Многопоточность и многопроцессорность в Python
  • Написание приложений с использованием кластера Apache Spark для обработки больших данных
  • Разработку и развертывание бессерверных программ в облаке на примере Google Cloud Platform (GCP)
  • Создание на Python веб-приложений и REST API, использование среды Flask
  • Использование Python для извлечения данных с сетевых устройств и систем управления сетью (NMS)
  • Применение Python для анализа данных и машинного обучения

Книгу “Python для гиков” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Об авторе. 14

О рецензентах. 15

Предисловие. 16

Для кого предназначена эта книга. 16

О чем эта книга. 17

Как получить максимальную отдачу от книги. 18

Загрузка файлов с примерами кода. 18

Условные обозначения. 19

Раздел 1. Python помимо основ. 21

Глава 1. Оптимальный жизненный цикл разработки на Python. 23

Культура и сообщество Python. 23

Этапы проекта Python. 26

Стратегия процесса разработки. 27

Итерация по этапам. 28

Стремление к MVP в первую очередь. 28

Стратегия разработки для специализированных предметных областей. 29

Эффективное документирование кода Python. 32

Комментарии Python. 32

Docstring. 32

Документация на уровне функций или классов. 34

Разработка эффективной схемы именования. 35

Методы. 36

Переменные. 36

Константы. 37

Классы. 37

Пакеты. 38

Модули. 38

Соглашения об импорте. 38

Аргументы. 38

Полезные инструменты. 38

Системы контроля версий. 39

Что не стоит хранить в репозитории системы контроля версий. 39

Понимание стратегий развертывания кода. 40

Пакетная разработка. 40

Среды разработки Python. 42

IDLE. 42

Sublime Text 42

Atom.. 42

PyCharm.. 42

Visual Studio Code. 43

PyDev. 43

Spyder 43

Заключение. 43

Вопросы. 44

Дополнительные ресурсы. 44

Ответы. 44

Глава 2. Использование модулей для сложных проектов. 45

Технические требования. 46

Знакомство с модулями и пакетами. 46

Импорт модулей. 46

Оператор import 48

Оператор __import__. 52

Инструмент importlib.import_module. 52

Абсолютный и относительный импорт. 53

Загрузка и инициализация модуля. 55

Загрузка модуля. 55

Установка параметров для специальных переменных. 55

Выполнение кода. 56

Стандартные модули. 57

Написание многоразовых модулей. 58

Независимая функциональность. 58

Генерализация функционала. 59

Традиционный стиль программирования. 60

Четко определенная документация. 61

Сборка пакетов. 62

Именование. 63

Файл инициализации пакета. 63

Сборка пакета. 63

Доступ к пакетам из любого расположения. 66

Общий доступ к пакету. 70

Создание пакета в соответствии с рекомендациями PyPA.. 70

Установка из локального исходного кода с помощью pip. 73

Публикация пакета в Test PyPI 75

Установка пакета из PyPI 76

Заключение. 77

Вопросы. 77

Дополнительные ресурсы. 77

Ответы. 78

Глава 3. Расширенное объектно-ориентированное программирование
на Python. 79

Технические требования. 80

Знакомство с классами и объектами. 80

Различия между атрибутами класса и атрибутами экземпляра. 80

Конструкторы и деструкторы классов. 83

Различия между методами класса и методами экземпляра. 84

Специальные методы. 85

Принципы ООП.. 86

Инкапсуляция данных. 87

Объединение данных и действий. 87

Сокрытие информации. 89

Защита данных. 91

Традиционный подход к использованию геттеров и сеттеров. 91

Использование декоратора property. 92

Расширение классов с помощью наследования. 94

Простое наследование. 94

Множественное наследование. 96

Полиморфизм. 97

Перегрузка метода. 97

Переопределение метода. 98

Абстракция. 100

Композиция как альтернативный подход к проектированию.. 102

Утиная типизация в Python. 104

Когда не стоит использовать ООП в Python. 105

Заключение. 106

Вопросы. 106

Дополнительные ресурсы. 107

Ответы. 107

Раздел 2. Расширенные концепции программирования. 109

Глава 4. Библиотеки Python для продвинутого программирования. 111

Технические требования. 111

Введение в контейнеры данных Python. 112

Строки. 112

Списки. 113

Кортежи. 114

Словари. 114

Множества. 115

Итераторы и генераторы для обработки данных. 116

Итераторы. 116

Генераторы. 120

Обработка файлов в Python. 122

Операции с файлами. 123

Обработка ошибок и исключений. 126

Работа с исключениями в Python. 127

Вызов исключений. 129

Определение пользовательских исключений. 130

Модуль logging в Python. 131

Основные компоненты системы логирования. 132

Работа с модулем logging. 134

Что стоит и не стоит записывать в журнал. 140

Заключение. 141

Вопросы. 141

Дополнительные ресурсы. 141

Ответы. 141

Глава 5. Тестирование и автоматизация с помощью Python. 143

Технические требования. 144

Понимание различных уровней тестирования. 144

Модульное тестирование. 145

Интеграционное тестирование. 145

Системное тестирование. 145

Приемочное тестирование. 146

Работа с тестовыми фреймворками Python. 146

Работа с фреймворком unittest 148

Фреймворк тестирования pytest 157

Разработка через тестирование. 165

Красный. 165

Зеленый. 166

Рефакторинг. 166

Автоматизированная непрерывная интеграция. 167

Заключение. 168

Вопросы. 168

Дополнительные ресурсы. 168

Ответы. 169

Глава 6. Дополнительные советы и приемы Python. 170

Технические требования. 170

Расширенные приемы использования функций в Python. 171

Функции counter, itertools и zip для итерационных задач. 171

Использование методов filter, map и reduce для преобразования данных. 175

Создание лямбда-функций. 178

Внедрение одной функции в другую.. 179

Изменение поведения функции с помощью декораторов. 181

Расширенные концепции структур данных. 187

Внедрение словаря в словарь. 187

Использование включений. 190

Введение в Pandas DataFrame. 192

Операции с объектом DataFrame. 193

Сложные случаи использования DataFrame. 198

Заключение. 203

Вопросы. 204

Дополнительные ресурсы. 204

Ответы. 204

Раздел 3. Масштабирование за пределы одного потока. 205

Глава 7. Многопроцессорная обработка, многопоточность
и асинхронное программирование. 207

Технические требования. 208

Многопоточность в Python и ее ограничения. 208

Слепое пятно Python. 209

Ключевые компоненты многопоточного программирования на Python. 210

Практический пример: многопоточное приложение для загрузки файлов
с Google Диска. 218

Многопроцессорная обработка. 221

Создание нескольких процессов. 221

Обмен данными между процессами. 224

Обмен объектами между процессами. 228

Синхронизация процессов. 230

Практический пример: многопроцессорное приложение
для загрузки файлов с Google Диска. 231

Асинхронное программирование для адаптивных систем. 233

Модуль asyncio. 234

Распределение задач с помощью очередей. 236

Практический пример: асинхронное приложение для загрузки файлов
с Google Диска. 238

Заключение. 240

Вопросы. 240

Дополнительные ресурсы. 241

Ответы. 241

Глава 8. Масштабирование Python с помощью кластеров. 242

Технические требования. 243

Возможности кластеров для параллельной обработки. 243

Hadoop MapReduce. 244

Apache Spark. 246

Устойчивые распределенные наборы данных (RDD) 249

Операции с RDD.. 249

Создание RDD.. 250

PySpark для параллельной обработки данных. 251

Создание программ SparkSession и SparkContext 253

PySpark для операций с RDD.. 254

PySpark DataFrames 257

PySpark SQL. 261

Практические примеры использования Apache Spark и PySpark. 262

Пример 1: калькулятор числа π в Apache Spark. 262

Заключение. 268

Вопросы. 269

Дополнительные ресурсы. 269

Ответы. 270

Глава 9. Программирование на Python для облака. 271

Технические требования. 271

Знакомство с облачными возможностями для приложений Python. 272

Среды разработки Python для облака. 272

Облачные среды выполнения для Python. 274

Создание веб-сервисов Python для облачного развертывания. 276

Использование Google Cloud SDK.. 277

Использование веб-консоли GCP. 284

Использование Google Cloud Platform для обработки данных. 287

Введение в основы Apache Beam.. 287

Конвейеры Apache Beam.. 289

Создание конвейеров для Cloud Dataflow.. 294

Заключение. 298

Вопросы. 299

Дополнительные ресурсы. 299

Ответы. 300

Раздел 4. Python для веб-разработки, облака и сети. 301

Глава 10. Использование Python для разработки веб-приложений
и REST API 303

Технические требования. 304

Требования к веб-разработке. 304

Веб-фреймворки. 304

Пользовательский интерфейс. 305

Веб-сервер/сервер приложений. 306

База данных. 307

Безопасность. 307

API 307

Документация. 307

Знакомство с фреймворком Flask. 308

Создание базового веб-приложения с маршрутизацией. 308

Обработка запросов с разными типами HTTP-методов. 310

Отображение статического и динамического контента. 312

Извлечение параметров из HTTP-запроса. 313

Взаимодействие с системами управления базами данных. 315

Обработка ошибок и исключений в веб-приложениях. 318

Создание REST API 321

Использование Flask для REST API 322

Разработка REST API для доступа к базе данных. 324

Пример: создание веб-приложения с помощью REST API 326

Заключение. 331

Вопросы. 332

Дополнительные ресурсы. 332

Ответы. 332

Глава 11. Разработка микросервисов на Python. 334

Технические требования. 334

Введение в микросервисы. 335

Практические рекомендации по созданию микросервисов. 337

Создание приложений на базе микросервисов. 338

Варианты разработки микросервисов на Python. 339

Варианты развертывания микросервисов. 340

Разработка приложения на основе микросервисов. 341

Заключение. 352

Вопросы. 352

Дополнительные ресурсы. 352

Ответы. 353

Глава 12. Создание бессерверных функций на Python. 354

Технические требования. 355

Знакомство с бессерверными функциями. 355

Преимущества бессерверных функций. 356

Варианты использования. 356

Варианты развертывания бессерверных функций. 357

Написание бессерверных функций. 358

Создание облачной функции на основе HTTP с помощью консоли GCP. 359

Практический пример: создание приложения для уведомлений
о событиях в облачном хранилище. 363

Заключение. 367

Вопросы. 367

Дополнительные ресурсы. 367

Ответы. 367

Глава 13. Python и машинное обучение. 369

Технические требования. 370

Введение в машинное обучение. 370

Использование Python для машинного обучения. 372

Библиотеки машинного обучения в Python. 372

Рекомендации по обучающим данным. 374

Создание и оценка модели машинного обучения. 375

Процесс построения модели машинного обучения. 375

Создание примера машинного обучения. 376

Оценка модели с помощью кросс-валидации и тонкой настройки гиперпараметров. 381

Сохранение ML-модели в файл. 384

Развертывание и прогнозирование ML-модели в GCP Cloud. 385

Заключение. 388

Вопросы. 388

Дополнительные ресурсы. 388

Ответы. 389

Глава 14. Python для автоматизации сети. 390

Технические требования. 391

Введение в автоматизацию сети. 391

Плюсы и минусы автоматизации сети. 392

Варианты использования. 393

Взаимодействие с сетевыми устройствами. 394

Протоколы для взаимодействия с сетевыми устройствами. 394

Взаимодействие с сетевыми устройствами с помощью библиотек Python
на основе SSH.. 397

Взаимодействие с сетевыми устройствами с помощью NETCONF. 404

Интеграция с системами управления сетью.. 408

Использование конечных точек сервиса определения местоположения. 409

Получение токена аутентификации. 410

Получение сетевых устройств и инвентаризация интерфейсов. 411

Обновление порта на сетевом устройстве. 412

Интеграция с событийно-ориентированными системами. 414

Создание подписок для Apache Kafka. 416

Обработка событий от Apache Kafka. 417

Продление и удаление подписки. 418

Заключение. 418

Вопросы. 419

Дополнительные ресурсы. 419

Ответы. 420

 

Предметный указатель. 421

Азиф Мухаммад

Мухаммад Азиф — программный архитектор, обладающий обширным опытом в области веб-разработки, автоматизации сетей и облаков, виртуализации и машинного обучения. ,Возглавлял многие крупномасштабные проекты в различных коммерческих компаниях. В 2012 году, получил степень доктора философии в области компьютерных систем в Карлтонском университете (Оттава, Канада) и в настоящее время работает в компании Nokia в качестве ведущего специалиста.

Опубликовано

“Основы искусственного интеллекта в примерах на Python. Самоучитель. 2-е изд.”

Основы искусственного интеллекта в примерах на Python. Самоучитель. 2-е изд.

Описаны инструментальные средства для разработки приложений искусственного интеллекта. Даны основы языка программирования Python. Раскрыты основные понятия и определения искусственного интеллекта. Рассмотрены вопросы программной реализации элементов нейронной сети и построения многослойных нейронных сетей. Большое внимание уделено применению специализированных библиотек PyBrain, Scikit-learn, Keras, TensorFlow для формирования структуры нейронных сетей и их обучения, и библиотек ImageAI и OpenCV для обработки изображений. Материал иллюстрирован простыми и понятными примерами, демонстрирующими использование предварительно обученных нейронных сетей для распознавания объектов на изображениях, создания собственных наборов данных, формирования структуры сети, ее обучения и практического применения. Во 2-м издании обновлены программные коды и версии библиотек, улучшены рисунки, учтены пожелания читателей и исправлены ошибки.
Электронное приложение-архив, доступное на сайте издательства, содержит листинги описанных в книге примеров.
издании обновлены программные коды и версии библиотек, улучшены рисунки, учтены пожелания читателей и исправлены ошибки.

Для программистов

  • Необходимые основы языка Python
  • Элементы искусственного интеллекта
  • Разработка приложений искусственного интеллекта
  • Инструментальные средства и полезные библиотеки
  • Новые версии ПО и библиотек
  • Программная реализация нейронных сетей
  • Библиотеки PyBrain, Scikit-learn, Keras, TensorFlow, ImageAI, OpenCV
  • Наглядные примеры нейронных сетей, их обучения и использования

Книгу “Основы искусственного интеллекта в примерах на Python. Самоучитель. 2-е изд.” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………….. 9

Глава 1. Инструментальные средства для разработки приложений искусственного интеллекта           15

1.1. Интерпретатор Python………………………………………………………………………………………………………… 16

1.1.1. Установка Python в Windows…………………………………………………………………………………… 17

1.1.2. Установка Python в Linux………………………………………………………………………………………… 19

1.1.3. Проверка интерпретатора Python…………………………………………………………………………… 20

1.2. Интерактивная среда разработки программного кода PyCharm…………………………………… 20

1.2.1. Установка PyCharm в Windows……………………………………………………………………………….. 21

1.2.2. Установка PyCharm в Linux…………………………………………………………………………………….. 23

1.2.3. Проверка PyCharm……………………………………………………………………………………………………. 24

1.3. Установка пакетов в Python с использованием менеджера пакетов pip………………………… 26

1.3.1. Где взять отсутствующий пакет?…………………………………………………………………………….. 27

1.3.2. Менеджер пакетов pip в Python……………………………………………………………………………….. 27

1.3.3. Использование pip…………………………………………………………………………………………………….. 28

Установка пакета……………………………………………………………………………………………………… 28

Удаление пакета………………………………………………………………………………………………………. 29

Обновление пакетов…………………………………………………………………………………………………. 29

Просмотр установленных пакетов…………………………………………………………………………. 29

Поиск пакета в репозитории……………………………………………………………………………………. 29

1.4. Интерактивная среда разработки интерфейса PyQt………………………………………………………… 30

1.5. Краткие итоги главы…………………………………………………………………………………………………………… 33

Глава 2. Основы языка программирования Python………………………………… 34

2.1. Первая программа в среде интерпретатора Python…………………………………………………………. 35

2.2. Оконная форма как основа интерфейса……………………………………………………………………………. 39

2.3. Подключение Windows-формы к программе на Python…………………………………………………… 43

2.4. Сборка исполняемого файла на Python под Windows……………………………………………………… 47

2.5. Базовые конструкции языка Python…………………………………………………………………………………… 51

2.5.1. Переменные……………………………………………………………………………………………………………….. 51

2.5.2. Функции…………………………………………………………………………………………………………………….. 53

2.5.3. Массивы (списки)……………………………………………………………………………………………………… 58

2.5.4. Условия и циклы……………………………………………………………………………………………………….. 60

Условия……………………………………………………………………………………………………………………… 60

Циклы………………………………………………………………………………………………………………………… 61

2.5.5. Классы и объекты…………………………………………………………………………………………………….. 64

Классы………………………………………………………………………………………………………………………. 65

Объекты…………………………………………………………………………………………………………………….. 67

2.5.6. Создание классов и объектов на примере автомобиля…………………………………………. 69

2.5.7. Программные модули………………………………………………………………………………………………. 72

Установка модуля…………………………………………………………………………………………………….. 72

Подключение и использование модуля………………………………………………………………….. 73

2.6. Краткие итоги главы…………………………………………………………………………………………………………… 74

Глава 3. Элементы искусственного интеллекта……………………………………… 75

3.1. Основные понятия и определения искусственного интеллекта………………………………………. 76

3.2. Искусственный нейрон как основа нейронных сетей………………………………………………………. 77

3.2.1. Функция единичного скачка……………………………………………………………………………………. 83

3.2.2. Сигмоидальная функция активации……………………………………………………………………….. 85

3.2.3. Гиперболический тангенс………………………………………………………………………………………… 87

3.3. Нейронные сети…………………………………………………………………………………………………………………… 88

3.3.1. Однослойные нейронные сети…………………………………………………………………………………. 90

3.3.2. Многослойные нейронные сети………………………………………………………………………………. 90

3.4. Обучение нейронных сетей………………………………………………………………………………………………… 92

3.4.1. Что такое обучение сети?………………………………………………………………………………………… 92

3.4.2. Обучающая выборка………………………………………………………………………………………………… 93

3.4.3. Тестовая выборка……………………………………………………………………………………………………… 94

3.4.4. Обучение с учителем………………………………………………………………………………………………… 94

3.4.5. Обучение без учителя………………………………………………………………………………………………. 95

3.5. Краткие итоги главы…………………………………………………………………………………………………………… 95

Глава 4. Программная реализация элементов нейронной сети……………….. 96

4.1. Персептроны……………………………………………………………………………………………………………………….. 96

4.2. Классификация персептронов…………………………………………………………………………………………. 100

4.2.1. Персептрон с одним скрытым слоем…………………………………………………………………….. 100

4.2.2. Однослойный персептрон……………………………………………………………………………………… 100

4.2.3. Виды персептронов………………………………………………………………………………………………… 105

4.3. Роль персептронов в нейронных сетях……………………………………………………………………………. 106

4.4. Линейная разделимость объектов…………………………………………………………………………………… 109

4.5. Решение задач классификации объектов на основе логических функций…………………… 112

4.6. Урок 1. Учим персептрон понимать изображения…………………………………………………………. 117

4.6.1. Распознавание цифр……………………………………………………………………………………………….. 119

4.7. Урок 2. Учим персептрон подбирать веса связей…………………………………………………………… 123

4.8. Дельта-правило…………………………………………………………………………………………………………………. 139

4.9. Линейная аппроксимация………………………………………………………………………………………………… 142

4.10. Учим персептрон классифицировать объекты. Обучение без учителя……………………… 148

4.11. Адаптивные линейные нейроны……………………………………………………………………………………. 157

4.12. Краткие итоги главы………………………………………………………………………………………………………. 171

Глава 5. Построение многослойных нейронных сетей………………………….. 172

5.1. Исследуем простейший искусственный нейрон…………………………………………………………….. 172

5.2. Программируем простейший искусственный нейрон……………………………………………………. 177

5.3. Строим сеть из нейронов………………………………………………………………………………………………….. 179

5.4. Обучаем нейронную сеть…………………………………………………………………………………………………. 182

5.5. Последовательность шагов проектирования нейронных сетей……………………………………. 193

5.6. Краткие итоги главы…………………………………………………………………………………………………………. 196

Глава 6. Полезные библиотеки для создания нейронных сетей на Python 197

6.1. Виды специализированных библиотек…………………………………………………………………………… 198

6.1.1. NumPy……………………………………………………………………………………………………………………… 198

6.1.2. Pandas………………………………………………………………………………………………………………………. 198

6.1.3. matplotlib…………………………………………………………………………………………………………………. 198

6.1.4. Theano……………………………………………………………………………………………………………………… 199

6.1.5. TensorFlow……………………………………………………………………………………………………………….. 199

6.1.6. Keras…………………………………………………………………………………………………………………………. 199

6.1.7. PyBrian…………………………………………………………………………………………………………………….. 200

6.2. Библиотека для построения нейронных сетей PyBrain…………………………………………………. 200

6.2.1. Общие сведения о библиотеке PyBrain…………………………………………………………………. 200

6.2.2. Термины и определения в библиотеке PyBrain……………………………………………………. 203

6.2.3. Установка (подключение) библиотеки PyBrain…………………………………………………… 205

6.2.4. Основы работы с библиотекой PyBrain………………………………………………………………… 207

6.2.5. Работа с наборами данных в библиотеке PyBrain………………………………………………. 209

6.2.6. Пример создания нейронной сети с библиотекой PyBrain………………………………….. 219

6.3. Библиотека scikit-learn для создания и обучения нейронных сетей…………………………….. 223

6.3.1. Наборы данных в библиотеке scikit-learn…………………………………………………………….. 227

6.3.2. Обучающие и тестовые наборы данных в библиотеке scikit-learn…………………….. 230

6.3.3. Предварительный анализ наборов данных…………………………………………………………. 231

6.3.4. Обучение нейронной сети с библиотекой scikit-learn………………………………………….. 234

6.3.5. Оценка качества обучения моделей в библиотеке scikit-learn……………………………. 237

6.3.6. Персептрон и библиотека scikit-learn……………………………………………………………………. 238

6.3.7. Классификаторы на основе логистической регрессии в библиотеке scikit-learn. 244

6.4. Библиотека Keras и сверточные нейронные сети…………………………………………………………… 250

6.4.1. Общие сведения о библиотеке Keras…………………………………………………………………….. 250

6.4.2. Сверточные нейронные сети…………………………………………………………………………………. 251

6.4.3. Строим сверточную нейронную сеть с библиотекой Keras………………………………… 256

6.5. Нейронные сети с библиотекой TensorFlow……………………………………………………………………. 271

6.5.1. Строим простую нейронную сеть с библиотекой TensorFlow……………………………. 272

6.5.2. Строим нейронную сеть для классификации изображений
с библиотекой TensorFlow……………………………………………………………………………………………….. 277

6.6. Краткие итоги главы…………………………………………………………………………………………………………. 295

Глава 7. Создание нейронных сетей обработки изображений:
библиотека ImageAI……………………………………………………………………………… 297

7.1. Классы распознавания и обнаружения объектов на изображениях……………………………. 298

7.1.1. Распознавание объектов в изображениях: класс ImageClassification……………….. 298

Функция .setModelTypeAsMobileNetV2()………………………………………………………………. 301

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 301

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 301

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 301

Функция .setModelPath()………………………………………………………………………………………… 301

Функция .loadModel()…………………………………………………………………………………………….. 302

Функция .classifyImage()…………………………………………………………………………………………. 302

7.1.2. Обнаружение и извлечение объектов из изображений: класс ObjectDetection…. 307

Функция .setModelTypeAsRetinaNet()……………………………………………………………………. 308

Функция .setModelTypeAsYOLOv3()……………………………………………………………………….. 308

Функция .setModelTypeAsTinyYOLOv3()………………………………………………………………… 308

Функция .setModelPath()………………………………………………………………………………………… 309

Функция .loadModel()…………………………………………………………………………………………….. 309

Функция .detectObjectsFromImage()………………………………………………………………………. 309

Функция .CustomObjects()………………………………………………………………………………………. 312

Функция .detectCustomObjectsFromImage()………………………………………………………….. 314

7.2. Классы распознавания объектов в видеофайлах и видеопотоках……………………………….. 320

7.2.1. Обнаружение объектов в видеофайлах и видеопотоках с видеокамер:
класс VideoObjectDetection……………………………………………………………………………………………… 320

Функция .setModelTypeAsRetinaNet()……………………………………………………………………. 321

Функция .setModelTypeAsYOLOv3()……………………………………………………………………….. 321

Функция .setModelTypeAsTinyYOLOv3()………………………………………………………………… 321

Функция .setModelPath()………………………………………………………………………………………… 322

Функция .loadModel()…………………………………………………………………………………………….. 322

Функция .detectObjectsFromVideo()………………………………………………………………………. 322

7.2.2. Примеры программы распознавания объектов в видеофайлах…………………………. 324

7.2.3. Пример программы распознавания объектов в видеопотоках с видеокамер……. 327

7.2.4. Пример программы с пользовательскими функциями для распознавания объектов в видеофайлах               329

7.3. Обучение нейронных сетей на пользовательских наборах данных……………………………. 341

7.3.1. Обучение нейронной сети на пользовательском наборе данных:
класс ClassificationModelTraining………………………………………………………………………………….. 341

Функция .setModelTypeAsMobileNetV2()………………………………………………………………. 343

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 343

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 343

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 344

Функция .setDataDirectory()…………………………………………………………………………………… 344

Функция .trainModel()…………………………………………………………………………………………….. 344

7.3.2. Пример программы обучения нейронной сети на пользовательском наборе данных          346

7.4. Применение пользовательских нейронных сетей с библиотекой ImageAI…………………. 350

7.4.1. Поиск пользовательских объектов в изображениях:
класс CustomImageClassification…………………………………………………………………………………….. 350

Функция .setModelTypeAsResNet50()…………………………………………………………………….. 350

Функция .setModelTypeAsInceptionV3()………………………………………………………………… 351

Функция .setModelTypeAsDenseNet121()………………………………………………………………. 351

Функция .setModelPath()………………………………………………………………………………………… 351

Функция .setJsonPath()…………………………………………………………………………………………… 351

Функция .loadModel()…………………………………………………………………………………………….. 351

Функция .classifyImage()…………………………………………………………………………………………. 352

7.4.2. Пример программы поиска пользовательских объектов в изображениях………… 353

7.5. Нейронные сети с архитектурой YOLOv3 для обнаружения объектов в изображениях 355

7.5.1. Обучение пользовательской модели: класс Custom.DetectionModelTrainer…….. 355

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 358

Метод .trainer.setDataDirectory()………………………………………………………………………….. 358

Метод .trainer.setTrainConfig()……………………………………………………………………………… 358

Функция .trainer.evaluateModel()………………………………………………………………………….. 360

7.5.2. Обнаружение и извлечение пользовательских объектов из изображений:
класс CustomObjectDetection…………………………………………………………………………………………… 361

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 364

Метод .setModelPath()……………………………………………………………………………………………. 364

Метод .setJsonPath()………………………………………………………………………………………………. 364

Метод .loadModel()………………………………………………………………………………………………… 364

Метод .detectObjectsFromImage()………………………………………………………………………….. 364

7.5.3. Обнаружение и извлечение пользовательских объектов из видеопотоков с видеокамер: класс CustomVideoObjectDetection……………………………………………………………………………………………. 367

Метод .setModelTypeAsYOLOv3()…………………………………………………………………………… 370

Метод .setModelPath()……………………………………………………………………………………………. 370

Метод .setJsonPath()………………………………………………………………………………………………. 370

Метод .loadModel()………………………………………………………………………………………………… 370

Метод .detectObjectsFromVideo()………………………………………………………………………….. 370

7.5.4. Формирование пользовательского обучающего набора данных:
приложение LabelImg………………………………………………………………………………………………………. 374

7.5.5. Пример программы обучения модели YOLOv3 на пользовательском наборе данных        383

7.5.6. Пример программы распознавания с помощью пользовательской модели YOLOv3……….. 384

7.6. Краткие итоги главы…………………………………………………………………………………………………………. 386

Глава 8. Создание приложений для обработки изображений:
библиотека OpenCV……………………………………………………………………………… 387

8.1. Обученные классификаторы Хаара для распознавания объектов в изображениях…… 388

8.2. Пример программы поиска лиц на фотографиях…………………………………………………………… 390

8.3. Пример программы поиска лиц в видеопотоках с видеокамер…………………………………….. 392

8.4. Пример программы распознавания глаз на фотографиях…………………………………………….. 393

8.5. Пример программы распознавания эмоций на изображениях……………………………………… 395

8.6. Пример программы распознавания автомобильных номеров на изображениях……….. 397

8.7. Пример программы распознавания автомобильных номеров в видеопотоке…………….. 398

8.8. Пример программы распознавания движущихся автомобилей в транспортном потоке 402

8.9. Пример программы распознавания различных объектов из одного программного кода 403

8.10. Пример программы распознавания пешеходов на изображениях
с использованием OpenCV и HOG-детекторов…………………………………………………………….. 405

8.11. Пример программы распознавания пешеходов на видео с использованием OpenCV и HOG-детекторов               408

8.12. Распознавание конкретных людей на фотографиях в OpenCV………………………………….. 409

8.12.1. Пример программы для обучения модели распознавания лиц по фотографиям 412

8.12.2. Пример программы распознавания лиц конкретных людей на фотографиях. 419

8.13. Создание пользовательской модели распознавания людей в видеопотоке с видеокамеры в OpenCV     423

8.13.1. Пример программы формирования обучающей выборки пользователя для тренировки модели распознавания конкретных людей………………………………………………………………………………………………………….. 423

8.13.2. Пример программы обучения модели на основе обучающей выборки пользователя     425

8.13.3. Программа распознавания лиц людей на основе обучающей выборки пользователя    427

8.14. Краткие итоги главы………………………………………………………………………………………………………. 430

Приложение. Описание электронного архива………………………………………. 431

Список литературы………………………………………………………………………………. 440

Книги…………………………………………………………………………………………………………………………………………. 440

Электронные ресурсы……………………………………………………………………………………………………………… 440

Предметный указатель…………………………………………………………………………. 444

Постолит

Постолит Анатолий Владимирович — доктор технических наук, профессор, академик Российской академии транспорта, лауреат Всероссийского конкурса «Инженер года». Профессиональный программист, автор книг компьютерной тематики, в том числе «Python, Django и Bootstrap для начинающих» и более 120 научных публикаций. Профессор Московского государственного автомобильно-дорожного технического университета (МАДИ). Занимался разработкой и внедрением информационных систем для транспортного комплекса Москвы и Московской области, для транспортного обслуживания зимних Олимпийских игр в г. Сочи, систем оплаты проезда и информирования пассажиров городского общественного транспорта. Специализируется на создании информационных систем на основе MS SQL Server, MS Visual Studio, Bluetooth-технологий, веб-приложений, а также систем искусственного интеллекта, обработки изображений и компьютерного зрения.

Опубликовано

Новинка: “Python для Excel”

Python для Excel

Книга посвящена автоматизации Excel с помощью языка программирования Python. Описаны дистрибутив Anaconda Python и современные средства разработки, такие как менеджеры пакетов Conda и pip, блокноты Jupyter и Visual Studio Code. Даны необходимые основы языка Python и введение в анализ данных с помощью библиотеки pandas. Приведены приемы чтения и записи файлов Excel без Excel. Рассмотрено программирование приложений Excel с помощью популярного пакета с открытым исходным кодом xlwings: автоматизация Excel, инструменты на основе технологии Python, трекер пакетов Python, а также функции, определяемые пользователем.

Электронный архив на сайте издательства содержит цветные иллюстрации к книге.

Для опытных пользователей Excel  и программистов

Современная среда для автоматизации и анализа данных

Excel — это самый популярный в мире табличный редактор, но его язык автоматизации VBA давно перестал развиваться. Python – самый востребованный язык программирования, он хорошо работает с данными и прекрасно подходит на роль языка сценариев Excel. Вот почему сочетание Excel и Python актуально и  привлекательно.

В книге показано, как эффективно интегрировать эти два мира и начать работу по автоматизации Excel с помощью Python. При этом знание Python приветствуется, но не обязательно, так как в книге есть введение во все используемые инструменты, включая вводный курс по языку Python.

  • Освойте работу с современными инструментами, включая блокноты Jupyter и Visual Studio Code.
  • Используйте pandas для сбора, очистки и анализа данных и замены типичных вычислений в Excel.
  • Автоматизируйте рутинные задачи, такие как объединение рабочих книг Excel и создание отчетов Excel.
  • Используйте xlwings для создания интерактивных инструментов Excel, использующих Python в качестве механизма вычислений.
  • Подключайте Excel к базам данных и файлам CSV и получайте данные из Интернета с помощью кода Python.
  • Используйте Python как единый инструмент для замены VBA, Power Query и Power Pivot.

Книгу “Python для Excel” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие. 11

Почему я написал эту книгу. 12

Кому адресована эта книга. 12

Структура книги. 13

Версии Python и Excel 14

Условные обозначения, используемые в этой книге. 15

Примеры использования кода. 15

Иллюстрации. 16

Онлайн-обучение O’Reilly. 17

Как с нами связаться. 17

Благодарности. 17

Часть I. Введение в Python.. 19

Глава 1. Зачем нужен Python для Excel?. 21

Excel как язык программирования. 22

Excel в новостях. 23

Передовые методы программирования. 24

Современный Excel 29

Python для Excel 31

Читабельность и эксплуатационная пригодность. 31

Стандартная библиотека и менеджер пакетов. 32

Научные вычисления. 34

Особенности современного языка. 35

Кросс-платформенная совместимость. 36

Заключение. 36

Глава 2. Среда разработки. 38

Дистрибутив Anaconda Python. 39

Установка. 39

Anaconda Prompt 40

Python REPL: интерактивная сессия Python. 43

Менеджеры пакетов: Conda и pip. 44

Среды Conda. 46

Jupyter Notebooks. 47

Запуск блокнотов Jupyter 48

Ячейки блокнота. 49

Режим редактирования и командный режим.. 51

Порядок выполнения имеет значение. 52

Завершение работы блокнотов Jupyter 52

Visual Studio Code. 53

Установка и настройка. 55

Запуск скрипта на Python. 57

Заключение. 61

Глава 3. Приступая к работе с Python. 63

Типы данных. 63

Объекты.. 64

Числовые типы.. 65

Логический тип данных. 67

Строки. 69

Индексирование и нарезка. 70

Индексирование. 70

Нарезка (Slicing) 71

Структуры данных. 72

Списки. 72

Словари. 75

Кортежи. 76

Множества. 77

Управление потоком.. 78

Блоки кода и оператор pass. 78

Оператор if и условные выражения. 79

Циклы for и while. 80

Анализ списков, словарей и множеств. 83

Организация кода. 84

Функции. 84

Модули и инструкция по импорту. 86

Класс datetime. 88

PEP 8: Руководство по стилю для кода Python. 90

PEP 8 и VS Code. 92

Подсказки по типам.. 93

Заключение. 94

Часть II. Введение в pandas. 95

Глава 4. Основы NumPy. 97

Начало работы с NumPy. 97

Массив NumPy. 97

Векторизация и транслирование. 99

Универсальные функции (ufunc) 101

Создание и манипулирование массивами. 102

Получение и установка элементов массива. 102

Полезные конструкторы массива. 103

Представления и копирование. 103

Заключение. 104

Глава 5. Анализ данных с помощью pandas. 105

DataFrame и Series. 105

Индекс. 108

Столбцы.. 110

Манипулирование данными. 111

Выбор данных. 111

Изменение данных. 117

Отсутствующие данные. 120

Дубликаты данных. 122

Арифметические операции. 123

Работа с текстовой колонкой. 125

Использование функции. 126

Просмотр и копирование. 127

Объединение DataFrames. 127

Объединение. 128

Объединение и слияние. 129

Описательная статистика и агрегация данных. 132

Описательная статистика. 132

Группировка. 133

Pivoting и Melting. 134

Построение графиков. 135

Matplotlib. 135

Plotly. 137

Импорт и экспорт DataFrames. 140

Экспорт CSV файлов. 141

Импорт CSV-файлов. 142

Заключение. 144

Глава 6. Анализ временны́х рядов с помощью pandas. 145

DatetimeIndex. 146

Создание DatetimeIndex. 146

Фильтрация DatetimeIndex. 148

Работа с часовыми поясами. 150

Общие манипуляции с временны́ми рядами. 151

Смещение и процентные изменения. 151

Пересчет и корреляция. 153

Повторная выборка. 156

Скользящее окно. 157

Ограничения при работе с pandas. 158

Заключение. 159

Часть III. Чтение и запись файлов Excel без Excel. 161

Глава 7. Манипулирование файлами Excel с помощью pandas. 163

Тематическое исследование: отчетность в Excel 163

Чтение и запись файлов Excel с помощью pandas. 167

Функция read_excel и класс ExcelFile. 167

Метод to_excel и класс ExcelWriter 173

Ограничения при работе pandas с файлами Excel 174

Заключение. 175

Глава 8. Манипулирование файлами Excel с помощью пакетов
reader и writer. 176

Пакеты reader и writer 176

В каких случаях какой пакет используется. 177

Модуль excel.py. 178

OpenPyXL. 180

XlsxWriter 184

pyxlsb. 186

xlrd, xlwt, and xlutils. 187

Работа с xlwt 189

Расширенный круг задач для reader и writer 190

Работа с большими файлами Excel 191

Форматирование данных в Excel 195

Тематическое исследование (повторное): отчетность в Excel 200

Заключение. 201

Часть IV. Программирование приложения Excel
с помощью xlwings. 205

Глава 9. Автоматизация Excel 205

Начало работы с xlwings. 206

Использование Excel в качестве средства просмотра данных. 206

Объектная модель Excel 208

Запуск кода VBA.. 215

Конвертеры, опции и коллекции. 216

Работа с DataFrames. 216

Конвертеры и опции. 217

Диаграммы, рисунки и определенные имена. 220

Случай из практики (повторный анализ): отчетность в Excel 223

Расширенные темы xlwings. 225

Основы xlwings. 225

Улучшение производительности. 227

Как действовать при отсутствии недостающих функций. 229

Заключение. 230

Глава 10. Инструменты Excel на основе технологии Python. 231

Использование Excel в качестве интерфейса xlwings. 231

Надстройка Excel 232

Команда Quickstart 233

Run Main. 234

Функция RunPython. 235

Развертывание. 240

Зависимости Python. 240

Автономные рабочие книги: избавление от надстройки xlwings. 241

Иерархия конфигурации. 242

Настройки. 243

Заключение. 244

Глава 11. Трекер пакетов Python. 245

Что мы будем создавать. 245

Основной функционал. 247

Web APIs. 248

Базы данных. 251

Исключения. 260

Структура приложения. 263

Внешний интерфейс. 264

Внутренний интерфейс. 268

Отладка. 271

Заключение. 273

Глава 12. Функции, определяемые пользователем (UDFs) 274

Начало работы с UDF. 274

UDF Quickstart 275

Тематическое исследование: Google Trends. 280

Введение в Google Trends. 280

Работа с DataFrames и динамическими массивами. 282

Получение данных из Google Trends. 287

Построение графиков с помощью UDF. 291

Отладка UDFs. 293

Дополнительные вопросы по UDF. 294

Базовая оптимизация производительности. 295

Кэширование. 297

Декоратор Sub. 299

Заключение. 301

Часть V. Приложения. 303

Приложение A. Среда Conda. 305

Создание новой среды Conda. 305

Отключение автоматической активации. 307

Приложение B. Расширенные функциональные возможности VS Code. 308

Отладчик. 308

Блокноты Jupyter в VS Code. 310

Запуск блокнотов Jupyter 310

Сценарии Python с ячейками кода. 311

Приложение C. Дополнительные концепции Python. 313

Классы и объекты.. 313

Работа с объектами datetime с учетом временной зоны.. 315

Изменяемые и неизменяемые объекты Python. 316

Вызов функций с изменяемыми объектами в качестве аргументов. 317

Функции с изменяемыми объектами в качестве аргументов
по умолчанию.. 319

Об авторе. 321

Обложка. 323

Предметный указатель. 325

 

Зумштейн Феликс

Феликс Зумштейн — создатель xlwings, популярного пакета с открытым исходным кодом, который позволяет автоматизировать Excel с помощью Python в Windows и macOS. Как генеральный директор компании xltrail и менеджер одноименной системы контроля версий для файлов Excel, он имеет глубокое представление о типичных случаях использования и проблемах с Excel в различных областях.

Опубликовано

Новая книга: “Python, Django и Bootstrap для начинающих”

Python, Django и Bootstrap для начинающих

Книга посвящена вопросам разработки веб-приложений с использованием языка Python, фреймворков Django, Bootstrap и интерактивной среды разработки PyCharm. Рассмотрены основные технологии и рабочие инструменты создания веб-приложений. Описаны фреймворки Django, Bootsrtap и структура создаваемых веб-приложений. На простых примерах показана обработка и маршрутизация запросов пользователей, формирование ответных веб-страниц. Рассмотрено создание шаблонов веб-страниц и форм для пользователей. Показано взаимодействие пользователей с различными типами баз данных через модели. Описана работа с базами данных через встроенные в Django классы без использования SQL-запросов. Приведен пошаговый пример создания сайта от его проектирования, до формирования программных модулей и развертывания сайта в Интернете с базами данных SQLite и MySQL. Электронный архив на сайте издательства содержит коды всех примеров.

Для программистов

ОСВАИВАЕМ СОВРЕМЕННЫЙ И УДОБНЫЙ ИНСТРУМЕНТАРИЙ ДЛЯ СОЗДАНИЯ ВЕБ-ПРИЛОЖЕНИЙ

• Веб-технологии
• Инструментальные средства для разработки веб-приложений
• Знакомство с фреймворком Django
• Знакомство с фреймворком Bootstrap
• Интерактивная среда разработки PyCharm
• Обработка и маршрутизация запросов
• Шаблоны веб-страниц
• Формы и модели данных
• Веб-сайт и веб-интерфейс для пользователей
• Встроенная панель для администрирования сайта
• Пользовательские формы
• Публикация сайта в Интернете

Книгу “Python, Django и Bootstrap для начинающих” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Предисловие…………………………………………………………………………………………….. 9

Глава 1. Инструментальные средства для разработки веб-приложений…. 15

1.1. Интерпретатор Python………………………………………………………………………………………………………… 16

1.1.1. Установка Python в Windows…………………………………………………………………………………… 17

1.1.2. Установка Python в Linux………………………………………………………………………………………… 20

1.1.3. Проверка интерпретатора Python…………………………………………………………………………… 20

1.2. Интерактивная среда разработки программного кода PyCharm…………………………………… 21

1.2.1. Установка PyCharm в Windows……………………………………………………………………………….. 22

1.2.2. Установка PyCharm в Linux…………………………………………………………………………………….. 24

1.2.3. Проверка PyCharm……………………………………………………………………………………………………. 25

1.3. Установка пакетов в Python с использованием менеджера пакетов pip………………………… 28

1.3.1. Репозиторий пакетов программных средств PyPI…………………………………………………. 28

1.3.2. pip — менеджер пакетов в Python……………………………………………………………………………. 29

1.3.3. Использование менеджера пакетов pip…………………………………………………………………… 30

1.4. Фреймворк Django для разработки веб-приложений………………………………………………………. 31

1.5. Менеджер баз данных SQLiteStudio………………………………………………………………………………….. 35

1.6. Краткие итоги……………………………………………………………………………………………………………………… 37

Глава 2. Веб-технологии и базовые сведения об HTML………………………….. 39

2.1. Базовые сведения о веб-технологиях………………………………………………………………………………… 39

2.1.1. Технологии клиентского программирования…………………………………………………………. 41

2.1.2. Технологии серверного программирования…………………………………………………………… 42

2.1.3. Фреймворки Django и Bootstrap для разработки веб-приложений………………………. 43

2.2. Базовые сведения о HTML…………………………………………………………………………………………………. 45

2.2.1. Теги для представления текста на HTML-страницах…………………………………………… 47

2.2.2. Списки……………………………………………………………………………………………………………………….. 49

2.2.3. Таблицы…………………………………………………………………………………………………………………….. 51

2.2.4. Тег div………………………………………………………………………………………………………………………… 55

2.2.5. Гиперссылки……………………………………………………………………………………………………………… 56

2.3. Каскадные таблицы стилей (CSS)……………………………………………………………………………………… 56

2.4. Возможности использования JavaScript……………………………………………………………………………. 58

2.5. Краткие итоги……………………………………………………………………………………………………………………… 60

Глава 3. Макетирование HTML-страниц с фреймворком Bootstrap……….. 61

3.1. Технологические возможности фреймворка Bootstrap……………………………………………………. 61

3.2. Получение файлов фреймворка Bootstrap………………………………………………………………………… 63

3.3. Контейнеры и сетка Bootstrap……………………………………………………………………………………………. 66

3.3.1. Адаптивные контейнеры………………………………………………………………………………………….. 67

3.3.2. Ряды или строки (row)………………………………………………………………………………………………. 69

3.3.3. Адаптивные блоки (col)……………………………………………………………………………………………. 69

3.3.4. Адаптивные блоки без указания числа колонок……………………………………………………. 71

3.3.5. Расположение адаптивных блоков…………………………………………………………………………. 71

3.4. Верстка макета HTML-страниц………………………………………………………………………………………… 72

3.5. Подключение файлов фреймворка Bootstrap к проекту………………………………………………….. 75

3.6. Задание цвета элементам HTML-страниц……………………………………………………………………….. 77

3.7. Задание отступов элементам макета HTML-страниц…………………………………………………….. 80

3.8. Выравнивание содержимого в адаптивных блоках HTML-страниц……………………………… 84

3.9. Обозначение границ элементов макета HTML-страниц…………………………………………………. 86

3.10. Пример использования адаптивных контейнеров…………………………………………………………. 93

3.11. Таблицы Bootstrap……………………………………………………………………………………………………………. 97

3.12. Краткие итоги………………………………………………………………………………………………………………….. 102

Глава 4. Знакомимся с фреймворком Django………………………………………… 103

4.1. Общие представления о Django……………………………………………………………………………………….. 103

4.2. Структура приложений на Django………………………………………………………………………………….. 105

4.3. Первый проект на Django…………………………………………………………………………………………………. 107

4.4. Первое приложение на Django…………………………………………………………………………………………. 115

4.5. Краткие итоги……………………………………………………………………………………………………………………. 121

Глава 5. Представления и маршрутизация…………………………………………… 123

5.1. Обработка запросов пользователей……………………………………………………………………………….. 123

5.2. Маршрутизация запросов пользователей в функциях path и re_path…………………………. 126

5.3. Очередность маршрутов………………………………………………………………………………………………….. 129

5.4. Основные элементы синтаксиса регулярных выражений…………………………………………….. 129

5.5. Параметры представлений………………………………………………………………………………………………. 130

5.5.1. Определение параметров через функцию re_path()…………………………………………….. 130

5.5.2. Определение параметров через функцию path()………………………………………………….. 134

5.5.3. Определение параметров по умолчанию в функции path()………………………………… 136

5.6. Параметры строки запроса пользователя………………………………………………………………………. 137

5.7. Переадресация и отправка пользователю статусных кодов………………………………………… 140

5.7.1. Переадресация………………………………………………………………………………………………………… 140

5.7.2. Отправка пользователю статусных кодов…………………………………………………………… 142

5.8. Краткие итоги……………………………………………………………………………………………………………………. 144

Глава 6. Шаблоны в Django…………………………………………………………………. 145

6.1. Создание простейшего шаблона…………………………………………………………………………………….. 145

6.2. Создание каталога для шаблонов приложений…………………………………………………………….. 152

6.3. Класс TemplateResponse…………………………………………………………………………………………………… 155

6.4. Язык шаблонов (DTL)……………………………………………………………………………………………………….. 156

6.5. Передача данных в шаблоны через переменные…………………………………………………………… 158

6.6. Передача в шаблон сложных данных……………………………………………………………………………. 161

6.7. Использование тегов в шаблонах Django……………………………………………………………………….. 163

6.8. Статические файлы в шаблонах Django…………………………………………………………………………. 172

6.8.1. Основы каскадных таблиц стилей………………………………………………………………………… 172

6.8.2. Использование статических файлов в шаблонах Django…………………………………… 176

6.9. Использование класса TemplateView для вызова шаблонов HTML-страниц……………… 182

6.10. Наследование шаблонов……………………………………………………………………………………………….. 187

6.11. Создание многостраничного сайта на основе шаблонов Django………………………………. 190

6.12. Формирование URL-адресов в шаблонах Django……………………………………………………….. 197

6.13. Интеграция шаблонов Django с фреймворком Bootstrap…………………………………………….. 200

6.14. Использование специальных тегов в шаблонах Django……………………………………………… 203

6.14.1. Тег для вывода текущей даты и времени……………………………………………………………. 203

6.14.2. Теги Bootstrap для вывода информации в адаптивных блоках……………………….. 205

6.14.3. Теги Bootstrap и Django для представления списков в виде таблицы……………… 207

6.15. Краткие итоги………………………………………………………………………………………………………………….. 209

Глава 7. Формы……………………………………………………………………………………. 211

7.1. Процесс управления формами в Django………………………………………………………………………….. 211

7.2. Определение форм…………………………………………………………………………………………………………….. 214

7.3. Использование полей в формах Django………………………………………………………………………….. 220

7.3.1. Настройка среды для изучения полей разных типов………………………………………….. 220

7.3.2. Типы полей в формах Django и их общие параметры…………………………………………. 222

7.3.3. Поле BooleanField для выбора решения: да/нет…………………………………………………. 225

7.3.4. Поле CharField для ввода текста………………………………………………………………………….. 226

7.3.5. Поле ChoiceField для выбора данных из списка…………………………………………………. 228

7.3.6. Поле DateField для ввода даты……………………………………………………………………………… 229

7.3.7. Поле DateTimeField для ввода даты и времени……………………………………………………. 230

7.3.8. Поле DecimalField для ввода десятичных чисел…………………………………………………. 230

7.3.9. Поле DurationField для ввода промежутка времени…………………………………………… 232

7.3.10. Поле EmailField для ввода электронного адреса………………………………………………. 233

7.3.11. Поле FileField для выбора файлов……………………………………………………………………… 234

7.3.12. Поле FilePathField для создания списка файлов………………………………………………. 235

7.3.13. Поле FloatField для ввода чисел с плавающей точкой…………………………………….. 238

7.3.14. Поле GenericIPAddressField для ввода IP-адреса……………………………………………… 238

7.3.15. Поле ImageField для выбора файлов изображений…………………………………………… 239

7.3.16. Поле IntegerField для ввода целых чисел…………………………………………………………… 240

7.3.17. Поле JsonField для данных формата JSON………………………………………………………… 241

7.3.18. Поле MultipleChoiceField для выбора данных из списка…………………………………. 243

7.3.19. Поле NullBooleanField для выбора решения: да/нет………………………………………… 244

7.3.20. Поле RegexField для ввода текста………………………………………………………………………. 245

7.3.21. Поле SlugField для ввода текста…………………………………………………………………………. 246

7.3.22. Поле TimeField для ввода времени……………………………………………………………………… 246

7.3.23. Поле TypedChoiceField для выбора данных из списка……………………………………… 247

7.3.24. Поле TypedMultipleChoiceField для выбора данных из списка……………………….. 248

7.3.25. Поле URLField для ввода универсального указателя ресурса (URL)……………… 250

7.3.26. Поле UUIDField для ввода универсального уникального идентификатора UUID 251

7.4. Встроенные классы для создания сложных полей………………………………………………………… 252

7.4.1. Поле ComboField для ввода текста с проверкой соответствия заданным форматам……….. 252

7.4.2. Поле MultiValueField для создания сложных компоновок из нескольких полей 253

7.4.3. Поле SplitDateTimeField для раздельного ввода даты и времени………………………. 254

7.5. Настройка формы и ее полей…………………………………………………………………………………………… 255

7.5.1. Изменение внешнего вида поля с помощью параметра widget………………………….. 255

7.5.2. Задание начальных значений полей с помощью свойства initial……………………… 257

7.5.3. Задание порядка следования полей на форме…………………………………………………….. 258

7.5.4. Задание подсказок к полям формы……………………………………………………………………….. 259

7.5.5. Настройки вида формы………………………………………………………………………………………….. 260

7.5.6. Проверка (валидация) данных………………………………………………………………………………. 262

7.5.7. Детальная настройка полей формы……………………………………………………………………… 267

7.5.8. Присвоение стилей полям формы………………………………………………………………………….. 270

7.6. Использование в формах POST-запросов для отправки данных на сервер…………………. 275

7.7. Краткие итоги……………………………………………………………………………………………………………………. 278

Глава 8. Модели данных Django…………………………………………………………… 279

8.1. Создание моделей и миграции базы данных………………………………………………………………….. 280

8.2. Типы полей в модели данных Django……………………………………………………………………………… 284

8.3. Манипуляция с данными в Django на основе CRUD……………………………………………………… 287

8.3.1. Добавление данных в БД……………………………………………………………………………………….. 287

8.3.2. Чтение данных из БД……………………………………………………………………………………………… 288

Метод get()……………………………………………………………………………………………………………… 288

Метод get_or_create()……………………………………………………………………………………………. 288

Метод all()………………………………………………………………………………………………………………. 289

Метод count()………………………………………………………………………………………………………….. 289

Метод filter()…………………………………………………………………………………………………………… 289

Метод exclude()………………………………………………………………………………………………………. 289

Метод in_bulk()………………………………………………………………………………………………………. 289

8.3.3. Обновление данных в БД……………………………………………………………………………………….. 290

8.3.4. Удаление данных из БД…………………………………………………………………………………………. 291

8.3.5. Просмотр строки SQL-запроса к базе данных…………………………………………………….. 291

8.4. Общие принципы взаимодействия форм с моделями данных и шаблонами Django…… 292

8.4.1. Создание форм на основе классов Form и ModelForm………………………………………… 293

8.4.2. Связывание форм с представлениями (view)………………………………………………………… 294

8.4.3. Связывание представлений (view) с шаблонами форм……………………………………….. 295

8.5. Организация связей между таблицами в БД через модели данных……………………………… 296

8.5.1. Организация связей между таблицами «один ко многим»………………………………….. 296

8.5.2. Организация связей между таблицами «многие ко многим»………………………………. 301

8.5.3. Организация связей между таблицами «один к одному»……………………………………. 305

8.6. Пример работы с объектами модели данных (чтение и запись информации в БД)……. 308

8.7. Пример работы с объектами модели данных: редактирование и удаление информации из БД   315

8.8. Работа с изображениями и файлами в формах Django………………………………………………….. 321

8.8.1. Загрузка изображений……………………………………………………………………………………………. 321

8.8.2. Загрузка и отображение файлов PDF в формах Django………………………………………. 332

8.8.3. Загрузка и отображение видеофайлов в формах Django……………………………………. 339

8.8.4. Загрузка и озвучивание аудиофайлов в формах Django…………………………………….. 348

8.9. Краткие итоги……………………………………………………………………………………………………………………. 356

Глава 9. Пример создания веб-сайта на Django…………………………………….. 357

9.1. Создание структуры сайта при помощи Django……………………………………………………………. 357

9.2. Установка дополнительных пакетов и настройка параметров сайта «Мир книг»…….. 366

9.3. Разработка структуры моделей данных сайта «Мир книг»………………………………………….. 370

9.4. Основные элементы моделей данных в Django……………………………………………………………… 373

9.4.1. Поля и их аргументы в моделях данных………………………………………………………………. 373

9.4.2. Метаданные в моделях Django……………………………………………………………………………… 376

9.4.3. Методы в моделях Django……………………………………………………………………………………… 377

9.4.4. Методы работы с данными в моделях Django…………………………………………………….. 377

9.5. Формирование моделей данных для сайта «Мир книг»………………………………………………… 379

9.5.1. Модель для хранения жанров книг……………………………………………………………………….. 380

9.5.2. Модель для хранения языков книг………………………………………………………………………… 381

9.5.3. Модель для хранения наименования издательства…………………………………………….. 381

9.5.4. Модель для хранения авторов книг………………………………………………………………………. 382

9.5.5. Модель для хранения книг…………………………………………………………………………………….. 382

9.5.6. Модель для хранения отдельных экземпляров книг и их статуса……………………… 387

9.6. Административная панель Django Admin………………………………………………………………………. 391

9.6.1. Регистрация моделей данных в Django Admin…………………………………………………….. 391

9.6.2. Работа с данными в Django Admin……………………………………………………………………….. 392

9.7. Изменение конфигурации административной панели Django………………………………………. 402

9.7.1. Регистрация класса ModelAdmin…………………………………………………………………………… 403

9.7.2. Настройка отображения списков………………………………………………………………………….. 404

9.7.3. Добавление фильтров к спискам…………………………………………………………………………… 407

9.7.4. Формирование макета с подробным представлением элемента списка…………… 409

9.7.5. Разделение страницы на секции с отображением связанной информации……….. 411

9.7.6. Встроенное редактирование связанных записей………………………………………………… 412

9.8. Работа с файлами и изображениями в административной панели Django…………………. 416

9.9. Краткие итоги……………………………………………………………………………………………………………………. 422

Глава 10. Пример создания веб-интерфейса для пользователей сайта
«Мир книг»………………………………………………………………………………………….. 423

10.1. Последовательность создания пользовательских страниц сайта «Мир книг»…………. 423

10.2. Определение перечня и URL-адресов страниц сайта «Мир книг»……………………………… 424

10.3. Создание главной страницы сайта «Мир книг»…………………………………………………………… 425

10.3.1. Создание URL-преобразования………………………………………………………………………… 425

10.3.2. Создание упрощенного представления (view)…………………………………………………. 427

10.3.3. Изменение представления (view) главной страницы сайта…………………………….. 432

10.3.4. Модификация шаблона главной страницы сайта «Мир книг»………………………. 433

10.4. Создание страницы со списком книг на основе класса ListView………………………………… 438

10.5. Создание страницы с детальной информацией о книге на основе класса DetailView 443

10.6. Постраничный вывод большого числа записей из БД (класс Paginator)………………….. 448

10.7. Создание страницы со списком авторов на основе класса ListView………………………….. 453

10.8. Создание страницы с детальной информацией об авторе книги на основе
класса DetailView……………………………………………………………………………………………………………. 456

10.9. Создание страниц О компании и Контакты…………………………………………………………………. 460

10.10. Краткие итоги……………………………………………………………………………………………………………….. 468

Глава 11. Расширение возможностей администрирования сайта
«Мир книг» и создание пользовательских форм…………………………………… 469

11.1. Сессии в Django………………………………………………………………………………………………………………. 470

11.2. Аутентификация и авторизация пользователей в Django……………………………………………. 474

11.2.1. Немного об аутентификации пользователей в Django……………………………………. 474

11.2.2. Создание отдельных пользователей и групп пользователей…………………………. 475

11.2.3. Создание страницы регистрации пользователя при входе на сайт………………. 481

11.2.4. Создание страницы для сброса пароля пользователя……………………………………. 486

11.3. Настройка почты для отправки сообщения о смене пароля на реальный электронный адрес  494

11.4. Поверка подлинности входа пользователя в систему…………………………………………………. 499

11.5. Формирование страниц сайта для создания заказов на книги…………………………………… 502

11.6. Работа с формами…………………………………………………………………………………………………………… 512

11.6.1. Краткий обзор форм в Django……………………………………………………………………………. 512

11.6.2. Управление формами в Django………………………………………………………………………….. 514

11.6.3. Форма для ввода и обновления информации об авторах книг на основе класса Form() 515

11.6.4. Форма для обновления информации об авторах книг на основе класса ModelForm()     527

11.6.5. Форма для ввода и обновления информации о книгах на основе класса ModelForm()    533

11.7. Краткие итоги………………………………………………………………………………………………………………….. 545

Глава 12. Публикация сайта в сети Интернет………………………………………. 547

12.1. Подготовка инфраструктуры сайта перед публикацией в сети Интернет………………… 547

12.1.1. Окружение развертывания сайта в сети Интернет………………………………………….. 548

12.1.2. Выбор хостинг-провайдера………………………………………………………………………………. 549

12.2. Подготовка веб-сайта к публикации…………………………………………………………………………….. 550

12.3. Размещение веб-сайта на хостинге timeweb…………………………………………………………………. 552

12.3.1. Регистрация аккаунта пользователя………………………………………………………………… 552

12.3.2. Административная панель хостинга timeweb………………………………………………….. 555

12.3.3. Создание на сервере папки для нового сайта………………………………………………….. 559

12.3.4. Создание на сервере виртуального окружения и приложения Django для нового сайта               567

12.3.5. Перенос сайта с рабочего компьютера на удаленный сервер……………………….. 574

12.3.6. Смена временного доменного имени на постоянное………………………………………. 579

12.4. Краткие итоги………………………………………………………………………………………………………………….. 581

Глава 13. Приложения Django и MySQL………………………………………………. 583

13.1. Подготовка инфраструктуры сайта для перехода на MySQL……………………………………. 583

13.2. Инсталляция сервера MySQL………………………………………………………………………………………… 584

13.3. Создание базы данных…………………………………………………………………………………………………… 584

13.4. Создание проекта Django с базой данных MySQL на локальном компьютере………… 588

13.5. Создание инфраструктуры на удаленном сервере для сайта с базой данных на MySQL……….. 591

13.6. Создание базы данных MySQL на удаленном сервере………………………………………………. 599

13.7. Перенос сайта с локального компьютера на публичный сервер……………………………….. 603

13.8. Краткие итоги………………………………………………………………………………………………………………….. 611

Послесловие…………………………………………………………………………………………. 613

Список источников и литературы………………………………………………………… 614

Приложение. Описание электронного архива………………………………………. 617

Предметный указатель…………………………………………………………………………. 618

Постолит

Постолит Анатолий Владимирович – доктор технических наук, профессор, академик Российской академии транспорта, лауреат Всероссийского конкурса «Инженер года». Профессиональный программист, автор книг компьютерной тематики, в том числе «Python, Django и PyCharm для начинающих», и более 100 научных публикаций. Преподавал в Московском государственном автомобильно-дорожном техническом университете  (МАДИ). Занимался разработкой и внедрением информационных систем для транспортного комплекса Москвы и Московской области,  для транспортного обслуживания зимних Олимпийских игр в г. Сочи, систем оплаты проезда и информирования пассажиров городского общественного транспорта. Специализируется на создании информационных систем на основе MS SQL Server, MS Visual Studio, Bluetooth-технологий, а также систем искусственного интеллекта, обработки изображений и компьютерного зрения.

Опубликовано

Встречайте новинку: “Python. 12 уроков для начинающих”

Python. 12 уроков для начинающих

В 12 уроках показаны основы программирования и базовые конструкции языка Python. Изложены принципы различных стилей программирования. Даны понятия ввода-вывода, переменных, условий, потока чисел, циклов и списков, массивов, функций и рекурсий. Рассмотрены особенности структурного, объектно-ориентированного и функционального программирования. В каждой главе предложены практические задачи и дано их пошаговое решение с подробным описанием алгоритма.

Для начинающих программистов

Основы программирования и базовые конструкции языка Python.

Python используется как в коммерческих проектах, так и для обучения новичков программированию. Кроме того, он наиболее удобен для сдачи ЕГЭ по информатике. На практических примерах, подробно рассмотренных в отдельных уроках, читатель изучит основные конструкции Python, освоит базовые приемы и стили программирования. Решение каждой задачи приводится в книге пошагово — так, как разработчики пишут программы в реальности. Подробные разборы задач и описания алгоритмов основаны на практических занятиях автора со своими учениками. С помощью этой книги читатель не только изучит язык Python, но и научится программировать, что, как показывает практика, совсем не одно и то же.

  • Изучите основные языковые конструкции языка Pyhon
  • Освойте программирование в ходе 12 наглядных уроков
  • Научитесь понимать и писать код в различных стилях программирования
  • Прокачайте алгоритмическое мышление

Книгу “Python. 12 уроков для начинающих” можно купить со скидкой в интернет-магазине издательства “БХВ“.

Введение………………………………………………………………………………………………….. 5

Как обучают языкам программирования?………………………………………………………………………………… 5

И вот появился язык Python…………………………………………………………………………………………………………. 7

Структура книги…………………………………………………………………………………………………………………………… 7

Благодарности……………………………………………………………………………………………………………………………… 8

Об авторе………………………………………………………………………………………………………………………………………. 9

Урок 1. Ввод/вывод, переменные, условия……………………………………………… 10

1.1. Привет, мир!…………………………………………………………………………………………………………………………. 10

1.2. Как тебя зовут?……………………………………………………………………………………………………………………. 13

1.3. Чему равно 12 + 34?……………………………………………………………………………………………………………. 15

1.4. Линейное уравнение…………………………………………………………………………………………………………… 18

1.5. Тип треугольника………………………………………………………………………………………………………………… 26

1.6. Стакан чая и кружка кофе………………………………………………………………………………………………….. 29

Урок 2. Поток чисел, циклы и списки……………………………………………………. 34

2.1. Поток чисел, рекуррентные формулы……………………………………………………………………………….. 34

2.2. Поток чисел, списки……………………………………………………………………………………………………………. 40

2.3. Векторы: длина, сумма, скалярное произведение……………………………………………………………. 46

Урок 3. Флаги. Структурное программирование и стиль Python…………….. 51

3.1. Эпидемия на корабле………………………………………………………………………………………………………….. 51

3.2. Является ли слово палиндромом?……………………………………………………………………………………… 55

3.3. Поиск и замена подстроки в строке…………………………………………………………………………………… 59

3.4. Сравнение чисел между собой. Множества……………………………………………………………………… 62

Урок 4. Словари, рекуррентный индекс в списке…………………………………… 76

4.1. Палиндром путем перестановки букв……………………………………………………………………………….. 76

4.2. Подстановки………………………………………………………………………………………………………………………… 83

Урок 5. Двумерные списки…………………………………………………………………….. 88

5.1. Сложение, транспонирование и умножение матриц……………………………………………………….. 88

5.2. Магический квадрат…………………………………………………………………………………………………………… 98

Итоги уроков 1–5……………………………………………………………………………………………………………………… 105

Урок 6. Декомпозиция программы в функции……………………………………… 106

6.1. Математические формулы как функции…………………………………………………………………………. 106

6.2. Функция факториал с циклом………………………………………………………………………………………….. 108

6.3. Библиотека формул комбинаторики……………………………………………………………………………….. 110

6.4. Декомпозиция магического квадрата в функции……………………………………………………………. 114

Урок 7. Рекурсии………………………………………………………………………………….. 117

7.1. Рекурсивный факториал…………………………………………………………………………………………………… 117

7.2. Числа Фибоначчи без списка, списком, с рекурсией……………………………………………………… 119

7.3. Быстрое возведение в степень………………………………………………………………………………………….. 125

7.4. Мемоизация чисел Фибоначчи………………………………………………………………………………………… 128

7.5. Генерация слов и перестановок………………………………………………………………………………………. 132

Урок 8. Динамика по подотрезкам……………………………………………………….. 139

8.1. Палиндром максимальной длины вычеркиванием букв……………………………………………….. 139

8.2. Максимальный квадрат в матрице………………………………………………………………………………….. 155

Урок 9. Функциональное программирование………………………………………. 163

9.1. Сумма факториалов в функциональном стиле………………………………………………………………. 163

9.2. Стандартные функционалы Python………………………………………………………………………………… 170

9.3. Стандартные функционалы для «Эпидемии на корабле»…………………………………………….. 173

9.4. Стандартные функционалы Python для суммы факториалов………………………………………. 175

9.5. Частичное применение функции на примере степени……………………………………………………. 178

9.6. Универсальный мемоизатор…………………………………………………………………………………………….. 184

9.7. Декораторы……………………………………………………………………………………………………………………….. 191

9.8. Генераторы……………………………………………………………………………………………………………………….. 199

Итоги уроков 6–9……………………………………………………………………………………………………………………… 202

Урок 10. Объектно-ориентированное программирование
предметной области «Геометрия»…………………………………………………………. 204

10.1. Класс «точка»………………………………………………………………………………………………………………….. 204

10.2. Предметная область «Геометрия»…………………………………………………………………………………. 211

10.3. Геометрическая фигура «многоугольник»……………………………………………………………………. 222

10.4. Составные фигуры………………………………………………………………………………………………………….. 227

Урок 11. Матрица в объектно-ориентированном стиле………………………… 231

11.1. Конструктор, индексатор………………………………………………………………………………………………. 231

11.2. Транспонирование, сложение, умножение…………………………………………………………………… 233

11.3. Определитель, обратная матрица, возведение в степень……………………………………………. 235

Урок 12. Программирование сложных коллекций……………………………….. 246

12.1. Функторы…………………………………………………………………………………………………………………………. 246

12.2. Коллекция «кольцо» и задача Иосифа Флавия…………………………………………………………….. 253

12.3. Мемоизация максимального квадрата матрицы в словаре………………………………………… 260

Итоги уроков 10–12…………………………………………………………………………………………………………………. 268

Заключение………………………………………………………………………………………….. 270

Предметный указатель…………………………………………………………………………. 271

Добряк Павел Вадимович

Добряк Павел Вадимович — кандидат технических наук, преподаватель Уральского федерального университета. Проводит занятия по различным языкам программирования, базам данных, искусственному интеллекту и проектированию информационных систем. Репетитор по математике и информатике.