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

Встречайте: “Изучаем Data Science: обработка, исследование, визуализация и моделирование данных с помощью Python”

Изучаем Data Science: обработка, исследование, визуализация и моделирование данных с помощью Python

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

Для начинающих специалистов в области Data Science , аналитиков данных и широкого круга ИТ-специалистов

Именно такой книги нам не хватало, когда мы впервые ввели термин «data scientist» для описания своей профессии. Если вы планируете заниматься наукой о данных, инженерией данных, искусственным интеллектом или машинным обучением, то вам непременно следует начать с нее.
 Ди Джей Патил, PhD, первый в США ведущий data scientist

Как начинающий специалист в области науки о данных (Data Science), вы понимаете, почему в процессе принятия ключевых решений организации полагаются на данные – будь то компании, занимающиеся разработкой веб-сайтов, местные администрации, работающие над повышением качества муниципальных услуг, или научно-исследовательские институты, борющиеся с распространением заболеваний.

Для этого необходимо освоить навыки преобразования беспорядочных данных в полезную информацию. Это называется жизненным циклом Data Science, который включает в себя процесс сбора, обработки и анализа данных наряду с формированием выводов на их основе.

Перед вами первая книга, в которой рассматриваются базовые навыки программирования и статистики, охватывающие весь жизненный цикл. Она адресована всем желающим работать в области Data Science или любой другой смежной области, а также аналитикам данных, преодолевающим разрыв между техническими и нетехническими областями. Если вы обладаете базовыми знаниями программирования на Python, вы научитесь работать с данными при помощи стандартных инструментов вроде pandas.

Прочитав книгу, вы сможете:

  • сформулировать задачу так, чтобы ее можно было решить с помощью данных;
  • выполнить сбор данных, включая обработку текста, веб-скрапинг  и т.д.;
  • извлекать полезную информацию путем очистки, исследования и визуализации данных;
  • использовать моделирование при описании данных;
  • обобщать результаты, выходящие за рамки данных.

Книгу “Изучаем Data Science: обработка, исследование, визуализация и моделирование данных с помощью Python” можно купить в нашем интенет-магазине.

Отзывы на книгу…………………………………………………………………………………… 13

Предисловие…………………………………………………………………………………………… 14

Требуемые базовые знания……………………………………………………………………………………………………….. 15

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

Принятые условные обозначения…………………………………………………………………………………………….. 16

Примеры применения кода……………………………………………………………………………………………………….. 16

Онлайн-обучение O’Reilly…………………………………………………………………………………………………………. 17

Наши контакты………………………………………………………………………………………………………………………….. 17

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

Часть I. Жизненный цикл Data Science………………………………….. 19

Глава 1. Жизненный цикл Data Science………………………………………………….. 21

Этапы жизненного цикла………………………………………………………………………………………………………….. 21

Примеры жизненного цикла……………………………………………………………………………………………………… 24

Краткие выводы…………………………………………………………………………………………………………………………. 25

Глава 2. Постановка вопроса и охват данных……………………………………….. 26

Большие данные и новые возможности…………………………………………………………………………………… 26

Пример: Google Flu Trends……………………………………………………………………………………………… 27

Целевая совокупность, фрейм доступных данных, выборка…………………………………………………. 29

Пример: что побуждает к активности участников онлайн-сообщества?………………….. 31

Пример: кто победит на выборах?………………………………………………………………………………… 31

Пример: связь экологических угроз со здоровьем человека……………………………………….. 32

Инструменты и протоколы……………………………………………………………………………………………………….. 34

Измерение параметров природных явлений……………………………………………………………………………. 34

Пример: определение содержания CO2 в воздухе……………………………………………………….. 35

Точность……………………………………………………………………………………………………………………………………… 36

Виды смещения……………………………………………………………………………………………………………….. 38

Виды дисперсии……………………………………………………………………………………………………………… 40

Краткие выводы…………………………………………………………………………………………………………………………. 41

Глава 3. Структура данных и моделирование………………………………………… 43

Урновая модель………………………………………………………………………………………………………………………….. 44

Схемы выборки……………………………………………………………………………………………………………….. 46

Выборочное распределение статистики………………………………………………………………………. 48

Моделирование выборочного распределения…………………………………………………………….. 49

Моделирование при помощи гипергеометрического распределения……………………….. 50

Пример: моделирование смещения и дисперсии опросов избирателей……………………………….. 52

Урновая модель опросов в Пенсильвании……………………………………………………………………. 53

Урновая модель со смещением……………………………………………………………………………………… 55

Проведение более масштабных опросов……………………………………………………………………… 56

Пример: моделирование рандомизированного испытания вакцины……………………………………. 58

Охват……………………………………………………………………………………………………………………………….. 58

Урновая модель случайного распределения……………………………………………………………….. 60

Пример: измерение качества воздуха………………………………………………………………………………………. 61

Краткие выводы…………………………………………………………………………………………………………………………. 64

Глава 4. Моделирование при помощи сводной статистики……………………. 66

Константная модель………………………………………………………………………………………………………………….. 66

Минимизация потерь…………………………………………………………………………………………………………………. 68

Средняя абсолютная ошибка………………………………………………………………………………………… 69

Среднеквадратичная ошибка………………………………………………………………………………………… 72

Выбор функции потерь…………………………………………………………………………………………………… 74

Краткие выводы…………………………………………………………………………………………………………………………. 74

Глава 5. Пример из практики: почему мой автобус всегда опаздывает?… 76

Постановка вопроса и охват данных………………………………………………………………………………………. 76

Первичная обработка данных………………………………………………………………………………………………….. 77

Изучение расписания автобусов………………………………………………………………………………………………. 80

Моделирование времени ожидания…………………………………………………………………………………………. 83

Краткие выводы…………………………………………………………………………………………………………………………. 87

Часть II. Табличные данные………………………………………………………. 89

Глава 6. Работа с датафреймами с помощью pandas………………………………. 91

Подмножество……………………………………………………………………………………………………………………………. 92

Охват данных и постановка вопроса……………………………………………………………………………. 92

Датафрейм и индекс……………………………………………………………………………………………………….. 93

Срез………………………………………………………………………………………………………………………………….. 94

Фильтрация строк…………………………………………………………………………………………………………… 98

Пример: когда стало популярным имя Luna?……………………………………………………………. 100

Агрегирование………………………………………………………………………………………………………………………….. 102

Агрегирование и базовая группировка………………………………………………………………………. 103

Пример: использование функции .value_counts()………………………………………………. 104

Группировка по нескольким столбцам………………………………………………………………………. 105

Пользовательские агрегатные функции……………………………………………………………………… 106

Поворот…………………………………………………………………………………………………………………………. 109

Соединение………………………………………………………………………………………………………………………………. 110

Внутренние соединения……………………………………………………………………………………………….. 111

Левые, правые и внешние соединения………………………………………………………………………… 113

Пример: популярность категорий имен из статьи New York Times…………………………… 114

Преобразование……………………………………………………………………………………………………………………….. 116

Метод apply…………………………………………………………………………………………………………………… 117

Пример: популярность имен на букву “L”………………………………………………………………….. 118

Цена метода apply………………………………………………………………………………………………………… 120

Отличие датафрейма от других представлений данных……………………………………………………… 121

Датафрейм и электронная таблица…………………………………………………………………………….. 121

Датафрейм и матрица………………………………………………………………………………………………….. 121

Датафрейм и отношение………………………………………………………………………………………………. 122

Краткие выводы……………………………………………………………………………………………………………………….. 123

Глава 7. Работа с отношениями с помощью SQL………………………………….. 124

Подмножество………………………………………………………………………………………………………………………….. 124

Основы SQL: SELECT и FROM…………………………………………………………………………………….. 125

Что такое отношение?………………………………………………………………………………………………….. 126

Срез………………………………………………………………………………………………………………………………… 126

Фильтрация строк…………………………………………………………………………………………………………. 128

Пример: когда стало популярным имя Luna?……………………………………………………………. 129

Агрегирование………………………………………………………………………………………………………………………….. 131

Базовая группировка и агрегирование с помощью GROUP BY………………………………… 131

Группировка по нескольким столбцам………………………………………………………………………. 132

Другие агрегатные функции………………………………………………………………………………………… 133

Соединение………………………………………………………………………………………………………………………………. 134

Внутренние соединения……………………………………………………………………………………………….. 135

Левые и правые соединения………………………………………………………………………………………… 136

Пример: популярность категорий имен из статьи NYT……………………………………………… 137

Преобразование и обобщенные табличные выражения………………………………………………………. 138

Функции SQL…………………………………………………………………………………………………………………. 139

Многошаговые запросы с использованием оператора WITH…………………………………… 141

Пример: популярность имен на букву “L”………………………………………………………………….. 142

Краткие выводы……………………………………………………………………………………………………………………….. 142

Часть III. Осмысление данных……………………………………………….. 145

Глава 8. Первичная обработка файлов…………………………………………………. 147

Примеры источников данных…………………………………………………………………………………………………. 148

Исследование DAWN……………………………………………………………………………………………………. 148

Безопасность пищевых продуктов в ресторанах Сан-Франциско…………………………… 149

Форматы файлов……………………………………………………………………………………………………………………… 150

Формат с разделителями……………………………………………………………………………………………… 150

Формат с фиксированной шириной…………………………………………………………………………….. 152

Иерархические форматы……………………………………………………………………………………………… 153

Свободно форматированный текст…………………………………………………………………………….. 153

Кодировка файла…………………………………………………………………………………………………………………….. 154

Размер файла……………………………………………………………………………………………………………………………. 156

Командная оболочка и инструменты командной строки…………………………………………………….. 159

Форма и гранулярность таблицы…………………………………………………………………………………………… 163

Гранулярность данных о проверках и нарушениях в ресторанах………………………….. 164

Форма и гранулярность исследования DAWN…………………………………………………………… 166

Краткие выводы……………………………………………………………………………………………………………………….. 168

Глава 9. Первичная обработка датафрейма………………………………………….. 170

Пример: первичная обработка результатов измерений содержания CO2
в обсерватории Мауна-Лоа……………………………………………………………………………………………………. 171

Проверка качества……………………………………………………………………………………………………….. 174

Обработка недостающих данных………………………………………………………………………………. 176

Изменение формы таблицы данных……………………………………………………………………………. 177

Проверка качества данных…………………………………………………………………………………………………….. 178

Качество в плане охвата……………………………………………………………………………………………… 179

Качество измерений и регистрируемых значений…………………………………………………….. 179

Качество в плане связанных признаков……………………………………………………………………… 180

Проверка качества на пригодность к исследованию………………………………………………… 181

Выяснение необходимости в исправлении данных…………………………………………………… 182

Пропущенные значения и записи…………………………………………………………………………………………… 183

Преобразования и временне метки………………………………………………………………………………………. 185

Преобразование временнх меток……………………………………………………………………………… 186

Конвейеризация в преобразованиях…………………………………………………………………………… 188

Изменение структуры………………………………………………………………………………………………………………. 190

Пример: первичная обработка данных о нарушениях правил безопасности в ресторанах 192

Сужение фокуса……………………………………………………………………………………………………………. 193

Агрегирование данных о нарушениях……………………………………………………………………….. 194

Извлечение информации из описания нарушений…………………………………………………….. 196

Краткие выводы……………………………………………………………………………………………………………………….. 199

Глава 10. Разведочный анализ данных………………………………………………… 201

Типы признаков данных………………………………………………………………………………………………………….. 202

Пример: породы собак…………………………………………………………………………………………………. 204

Преобразование качественных признаков…………………………………………………………………. 210

Переразметка категорий……………………………………………………………………………………… 210

Сворачивание категорий…………………………………………………………………………………….. 211

Преобразование количественных значений в порядковые………………………………. 212

Роль типов признаков…………………………………………………………………………………………………… 213

На что обратить внимание в распределении………………………………………………………………………… 214

Что необходимо выяснить во взаимосвязи…………………………………………………………………………….. 218

Два количественных признака……………………………………………………………………………………. 218

Один качественный и один количественный признак……………………………………………….. 219

Два качественных признака………………………………………………………………………………………… 221

Сравнения в многомерных системах……………………………………………………………………………………… 223

Руководящие принципы разведочного анализа……………………………………………………………………. 226

Пример: цены на жилую недвижимость………………………………………………………………………………… 227

Изучение цен…………………………………………………………………………………………………………………. 228

Дальнейшие шаги…………………………………………………………………………………………………………. 230

Изучение прочих признаков………………………………………………………………………………………… 231

Углубленный анализ взаимосвязей…………………………………………………………………………….. 234

Фиксация местоположения………………………………………………………………………………………….. 236

Результаты EDA……………………………………………………………………………………………………………. 238

Краткие выводы……………………………………………………………………………………………………………………….. 239

Глава 11. Визуализация данных…………………………………………………………… 240

Выбор масштаба для выяснения структуры…………………………………………………………………………. 240

Заполнение области данных……………………………………………………………………………………….. 241

Учет нулевого значения……………………………………………………………………………………………….. 242

Выяснение формы данных с помощью преобразований………………………………………….. 244

Кренение для расшифровки взаимосвязей…………………………………………………………………. 246

Выявление взаимосвязей с помощью спрямления……………………………………………………… 247

Сглаживание и агрегирование данных………………………………………………………………………………….. 249

Методы сглаживания для определения формы данных……………………………………………. 250

Методы сглаживания для выявления взаимосвязей и тенденций…………………………….. 252

Настройка методов сглаживания……………………………………………………………………………….. 254

Сведение распределений к квантилям………………………………………………………………………… 255

Случаи, когда сглаживание нежелательно………………………………………………………………… 257

Упрощение значимых сравнений…………………………………………………………………………………………… 259

Подчеркивание важного различия……………………………………………………………………………… 259

Упорядочивание групп………………………………………………………………………………………………… 261

Отказ от стекинга………………………………………………………………………………………………………….. 263

Выбор цветовой палитры…………………………………………………………………………………………….. 265

Принципы проведения сравнений на графиках…………………………………………………………. 266

Учет особенностей исходных данных при визуализации……………………………………………………. 267

Данные, собранные с течением времени……………………………………………………………………. 268

Исследования по данным наблюдений………………………………………………………………………. 269

Неравномерная выборка……………………………………………………………………………………………… 271

Географические данные………………………………………………………………………………………………. 272

Добавление контекста…………………………………………………………………………………………………………….. 273

Пример: результаты 100-метрового спринта…………………………………………………………….. 273

Создание графиков с помощью plotly……………………………………………………………………………………. 275

Объекты Figure и Trace………………………………………………………………………………………………… 276

Изменение макета…………………………………………………………………………………………………………. 277

Функции построения графиков……………………………………………………………………………………. 279

Аннотации к изображению………………………………………………………………………………………….. 281

Другие инструменты визуализации……………………………………………………………………………………….. 282

Matplotlib………………………………………………………………………………………………………………………. 282

Грамматика графики……………………………………………………………………………………………………. 282

Краткие выводы……………………………………………………………………………………………………………………….. 283

Глава 12. Тематическое исследование: проверка точности показателей качества воздуха         285

Постановка вопроса, структура и охват данных…………………………………………………………………. 286

Поиск близко расположенных датчиков……………………………………………………………………………….. 288

Первичная обработка списка локаций AQS………………………………………………………………. 288

Первичная обработка списка локаций PurpleAir……………………………………………………….. 291

Сопоставление датчиков AQS и PurpleAir………………………………………………………………….. 292

Первичная обработка и очистка данных датчиков AQS……………………………………………………… 294

Проверка гранулярности……………………………………………………………………………………………… 295

Удаление ненужных столбцов…………………………………………………………………………………….. 296

Проверка достоверности дат………………………………………………………………………………………. 297

Проверка качества показателей PM2.5………………………………………………………………………. 298

Первичная обработка показаний датчиков PurpleAir…………………………………………………………… 299

Проверка гранулярности……………………………………………………………………………………………… 300

Визуализация временнх меток…………………………………………………………………………. 302

Проверка частоты выборки…………………………………………………………………………………. 303

Обработка пропущенных значений……………………………………………………………………………. 305

Разведочный анализ показаний PurpleAir и AQS…………………………………………………………………… 306

Создание модели для корректировки показаний PurpleAir………………………………………………….. 312

Краткие выводы……………………………………………………………………………………………………………………….. 314

Часть IV. Другие источники данных…………………………………….. 317

Глава 13. Операции с текстом………………………………………………………………. 319

Примеры текстов и заданий……………………………………………………………………………………………………. 319

Преобразование текста в стандартный формат………………………………………………………… 319

Извлечение фрагмента текста для создания признака……………………………………………… 320

Преобразование текста в признаки…………………………………………………………………………….. 320

Анализ текста……………………………………………………………………………………………………………….. 321

Манипуляции со строками……………………………………………………………………………………………………… 322

Преобразование текста в стандартный формат с помощью строковых методов Python           322

Строковые методы в pandas………………………………………………………………………………………… 323

Извлечение фрагментов текста с помощью разделения строк…………………………………. 324

Регулярные выражения……………………………………………………………………………………………………………. 325

Конкатенация литералов…………………………………………………………………………………………….. 325

Классы символов………………………………………………………………………………………………….. 326

Символ подстановки……………………………………………………………………………………………. 327

Инвертированные классы символов…………………………………………………………………… 327

Сокращения классов символов…………………………………………………………………………… 327

Анкоры и границы………………………………………………………………………………………………… 327

Исключение метасимволов………………………………………………………………………………….. 328

Квантификаторы…………………………………………………………………………………………………………… 328

Создание признаков при помощи чередования и группировки……………………………….. 330

Справочные таблицы…………………………………………………………………………………………………… 331

Анализ текста…………………………………………………………………………………………………………………………… 333

Краткие выводы……………………………………………………………………………………………………………………….. 338

Глава 14. Обмен данными……………………………………………………………………. 339

Формат NetCDF………………………………………………………………………………………………………………………… 339

Формат JSON……………………………………………………………………………………………………………………………. 344

HTTP…………………………………………………………………………………………………………………………………………. 348

REST………………………………………………………………………………………………………………………………………….. 352

XML, HTML, XPath………………………………………………………………………………………………………………….. 356

Пример: веб-скрапинг результатов забегов из Википедии……………………………………….. 359

XPath……………………………………………………………………………………………………………………………… 361

Пример: доступ к курсам валют ЕЦБ…………………………………………………………………………. 363

Краткие выводы……………………………………………………………………………………………………………………….. 366

Часть V. Линейное моделирование………………………………………. 369

Глава 15. Линейные модели…………………………………………………………………. 371

Простая линейная модель……………………………………………………………………………………………………….. 372

Пример: простая линейная модель оценки качества воздуха……………………………………………… 375

Интерпретация линейных моделей…………………………………………………………………………….. 377

Оценка качества подгонки…………………………………………………………………………………………… 378

Подгонка простой линейной модели……………………………………………………………………………………… 379

Модель множественной линейной регрессии……………………………………………………………………….. 381

Подбор параметров модели множественной линейной регрессии……………………………………… 386

Пример: где находится страна возможностей?…………………………………………………………………….. 389

Объяснение восходящей мобильности на основе времени в пути на работу…………. 391

Связь восходящей мобильности с использованием нескольких переменных…………. 393

Конструирование признаков для числовых измерений……………………………………………………….. 397

Конструирование признаков для категориальных измерений……………………………………………. 401

Краткие выводы……………………………………………………………………………………………………………………….. 408

Глава 16. Выбор модели……………………………………………………………………….. 410

Переобучение…………………………………………………………………………………………………………………………… 411

Пример: энергопотребление………………………………………………………………………………………… 411

Метод train_test_split………………………………………………………………………………………………………………. 416

Перекрестная проверка…………………………………………………………………………………………………………… 420

Регуляризация………………………………………………………………………………………………………………………….. 425

Смещение и дисперсия модели……………………………………………………………………………………………….. 426

Краткие выводы……………………………………………………………………………………………………………………….. 429

Глава 17. Теория логического вывода и прогнозирования…………………… 431

Распределения: популяционное, эмпирическое, выборочное……………………………………………… 431

Принципы проверки гипотез…………………………………………………………………………………………………… 433

Пример: ранговый критерий сравнения продуктивности соавторов Википедии…… 435

Пример: проверка эффективности вакцины с помощью пропорций………………………… 439

Бутстрап-процедура построения выводов……………………………………………………………………………. 441

Доверительный интервал………………………………………………………………………………………………………… 446

Интервал прогнозирования…………………………………………………………………………………………………….. 449

Пример: прогнозирование опоздания автобуса………………………………………………………… 449

Пример: прогнозирование размера краба………………………………………………………………….. 450

Пример: прогнозирование прироста краба……………………………………………………………….. 451

Вероятность выводов и прогнозов…………………………………………………………………………………………. 454

Формализация теории для статистик средних рангов………………………………………………. 454

Общие свойства случайных величин………………………………………………………………………….. 457

Вероятность в основе интервалов и тестирования……………………………………………………. 459

Вероятность в основе выбора модели………………………………………………………………………… 462

Краткие выводы……………………………………………………………………………………………………………………….. 464

Глава 18. Тематическое исследование: как взвесить осла……………………. 466

Постановка вопроса и охват данных…………………………………………………………………………………….. 466

Первичная обработка и преобразование данных………………………………………………………………… 467

Разведочный анализ данных………………………………………………………………………………………………….. 472

Моделирование веса осла………………………………………………………………………………………………………. 475

Функция потерь при назначении анестетиков…………………………………………………………… 475

Построение простой линейной модели………………………………………………………………………. 476

Подгонка множественной линейной модели……………………………………………………………… 478

Добавление в модель качественных признаков…………………………………………………………. 479

Оценка модели………………………………………………………………………………………………………………. 482

Краткие выводы……………………………………………………………………………………………………………………….. 484

Часть VI. Классификация………………………………………………………….. 487

Глава 19. Классификация…………………………………………………………………….. 489

Пример: поваленные ураганом деревья………………………………………………………………………………… 489

Моделирование и классификация………………………………………………………………………………………….. 492

Константная модель…………………………………………………………………………………………………….. 492

Исследование взаимосвязи между буреломом и размером деревьев………………………. 493

Моделирование долей (и вероятностей)……………………………………………………………………………….. 495

Логистическая модель………………………………………………………………………………………………….. 496

Логарифм отношения шансов……………………………………………………………………………………… 497

Применение логистической кривой…………………………………………………………………………….. 498

Функция потерь для логистической модели………………………………………………………………………….. 499

От вероятностей к классификации…………………………………………………………………………………………. 502

Матрица несоответствий…………………………………………………………………………………………….. 504

Точность и полнота……………………………………………………………………………………………………… 505

Краткие выводы……………………………………………………………………………………………………………………….. 508

Глава 20. Численная оптимизация……………………………………………………….. 509

Основы градиентного спуска………………………………………………………………………………………………….. 510

Минимизация потери Хубера…………………………………………………………………………………………………. 512

Выпуклые и дифференцируемые функции потерь………………………………………………………………… 514

Варианты градиентного спуска……………………………………………………………………………………………… 515

Стохастический градиентный спуск…………………………………………………………………………… 516

Мини-пакетный градиентный спуск…………………………………………………………………………… 517

Метод Ньютона……………………………………………………………………………………………………………. 517

Краткие выводы……………………………………………………………………………………………………………………….. 518

Глава 21. Тематическое исследование: распознавание
фейковых новостей………………………………………………………………………………. 520

Уточнение вопроса и выяснение охвата данных………………………………………………………………….. 521

Получение и “выпас” данных…………………………………………………………………………………………………. 522

Разведочный анализ данных………………………………………………………………………………………………….. 526

Разведочный анализ источников публикаций…………………………………………………………… 527

Разведочный анализ даты публикации………………………………………………………………………. 529

Разведочный анализ слов в статье……………………………………………………………………………… 530

Моделирование……………………………………………………………………………………………………………………….. 532

Однословная модель…………………………………………………………………………………………………….. 532

Многословная модель………………………………………………………………………………………………….. 534

Прогнозирование с помощью преобразования TF-IDF…………………………………………….. 536

Краткие выводы……………………………………………………………………………………………………………………….. 539

Приложение 1. Дополнительный материал…………………………………………… 541

Приложение 2. Источники данных………………………………………………………. 548

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

Об авторах……………………………………………………………………………………………. 558

Об изображении на обложке………………………………………………………………… 559

Добавить комментарий