Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Python и анализ данных

Покупка
Артикул: 680760.04.99
К покупке доступен более свежий выпуск Перейти
Второе издание этой книги дает современное практическое введение в разработку научных приложений на Python, ориентированных на обработку данных. Код переписан под версию Python 3.6, добавлены сведения о последних версиях библиотек pandas, NumPy, IPython и Jupyter. Описаны те части языка Python и библиотеки для него, которые необходимы для эффективного решения широкого круга аналитических задач: интерактивная оболочка IPython и Jupyter-блокноты, библиотеки NumPy и pandas, библиотека для визуализации данных matplotlib и др. Издание подойдет как аналитикам, только начинающим осваивать обработку данных, так и опытным программистам на Python, еще не знакомым с научными приложениями.
Маккинни, У. Python и анализ данных : практическое пособие / У. Маккинни ; пер. с анг. А. А. Слинкина. - 2-е изд. - Москва : ДМК Пресс, 2020. - 540 с. - ISBN 978-5-97060-590-5. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2012523 (дата обращения: 23.06.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Python и анализ данных

Уэс Маккини

Python for Data Analysis

Wes McKinney

Data Wrangling with Pandas, NumPy,  
and IPython

SECOND EDITION

Beijing • Boston • Farnham • Sebastopol • Tokyo 

Python и анализ данных

Москва, 2020

Уэс Маккини

Первичная обработка данных  
с применением pandas, NumPy и IPython

ВТОРОЕ ИЗДАНИЕ

УДК 004.438Python:004.6
ББК 32.973.22
 
М15

 
Маккини У.
М15 Python и анализ данных / пер. с анг. А. А. Слинкина. – М.: ДМК Пресс, 
2020. – 540 с.: ил.

 
ISBN 978-5-97060-590-5

Второе издание этой книги дает современное практическое введение в разработку 
научных приложений на Python, ориентированных на обработку данных. 
Код переписан под версию Python 3.6, добавлены сведения о последних версиях 
библиотек pandas, NumPy, IPython и Jupyter.
Описаны те части языка Python и библиотеки для него, которые необходимы 
для эффективного решения широкого круга аналитических задач: интерактивная 
оболочка IPython и Jupyter-блокноты, библиотеки NumPy и pandas, библиотека 
для визуализации данных matplotlib и др.
Издание подойдет как аналитикам, только начинающим осваивать обработку 
данных, так и опытным программистам на Python, еще не знакомым с научными 
приложениями.

 
УДК 004.438Python:004.6
 
ББК 32.973.22

Authorized Russian translation of the English edition of Python for Data Analysis, 2nd edition. 
ISBN 9781491957660 © 2018 William McKinney.
This translation is published and sold by permission of O’Reilly Media, Inc., which owns or 
controls all rights to publish and sell the same.

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

ISBN 978-1-491-95766-0 (анг.) 
Copyrigth © 2018 William McKinney

ISBN 978-5-97060-590-5 (рус.) 
©  Оформление, издание, перевод, 
ДМК Пресс, 2020

Содержание

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

Об авторе ................................................................................................................................................................20

Об иллюстрации на обложке .................................................................................................................21

Глава 1. Предварительные сведения ..............................................................................................22

1.1. 
О чем эта книга? ......................................................................................................................................22
Какого рода данные? ............................................................................................................................22
1.2. 
Почему именно Python?......................................................................................................................23
Python как клей ........................................................................................................................................23
Решение проблемы «двух языков» ..............................................................................................24
Недостатки Python .................................................................................................................................24
1.3. 
Необходимые библиотеки для Python ......................................................................................25
NumPy ............................................................................................................................................................25
pandas.............................................................................................................................................................26
matplotlib .....................................................................................................................................................27
IPython и Jupyter ......................................................................................................................................27
SciPy ................................................................................................................................................................28
scikit-learn....................................................................................................................................................28
statsmodels ..................................................................................................................................................29
1.4. 
Установка и настройка .........................................................................................................................30
Windows ........................................................................................................................................................30
Apple OS X ...................................................................................................................................................30
GNU/Linux ....................................................................................................................................................31
Установка или обновление Python-пакетов ...........................................................................31

Содержание

Python 2 и Python 3 ...............................................................................................................................32
Интегрированные среды разработки (IDE) .............................................................................32
1.5. 
Сообщество и конференции ............................................................................................................33
1.6. 
Структура книги ........................................................................................................................................34
Примеры кода ...........................................................................................................................................34
Данные для примеров .........................................................................................................................35
Соглашения об импорте ......................................................................................................................35
Жаргон ...........................................................................................................................................................35

Глава 2. Основы языка Python, IPython и Jupyter-блокноты .......................................36

2.1. 
Интерпретатор Python .........................................................................................................................37
2.2. 
Основы IPython ........................................................................................................................................38
Запуск оболочки IPython....................................................................................................................38
Запуск Jupyter-блокнота .....................................................................................................................39
Завершение по нажатии клавиши Tab ......................................................................................42
Интроспекция ............................................................................................................................................43
Команда %run ............................................................................................................................................45
Исполнение кода из буфера обмена ..........................................................................................46
Комбинации клавиш .............................................................................................................................47
О магических командах ......................................................................................................................48
Интеграция с matplotlib ......................................................................................................................50
2.3. 
Основы языка Python ...........................................................................................................................51
Семантика языка ......................................................................................................................................51
Скалярные типы .......................................................................................................................................59
Поток управления ...................................................................................................................................66

Глава 3. Встроенные структуры данных, функции и файлы ........................................71

3.1. 
Структуры данных и последовательности ...............................................................................71
Кортеж ............................................................................................................................................................71
Список ............................................................................................................................................................74
Встроенные функции последовательностей ..........................................................................79
Словарь ..........................................................................................................................................................81
Множество ...................................................................................................................................................85
Списковое, словарное и множественное включения .......................................................87
3.2. 
Функции ........................................................................................................................................................89
Пространства имен, области видимости и локальные функции ...............................90
Возврат нескольких значений ........................................................................................................91
Функции являются объектами .........................................................................................................91
Анонимные (лямбда) функции ........................................................................................................93
Каррирование: фиксирование части аргументов ...............................................................94
Генераторы ..................................................................................................................................................94
Обработка исключений .......................................................................................................................97

Содержание

3.3. 
Файлы и операционная система ................................................................................................100
Байты и Unicode в применении к файлам ...........................................................................102
3.4. 
Заключение .............................................................................................................................................104

Глава 4. Основы NumPy: массивы и векторные вычисления ..................................105

4.1. 
NumPy ndarray: объект многомерного массива ................................................................107
Создание ndarray ..................................................................................................................................108
Тип данных для ndarray ...................................................................................................................110
Арифметические операции с массивами NumPy ............................................................113
Индексирование и вырезание .....................................................................................................114
Булево индексирование ..................................................................................................................119
Прихотливое индексирование ....................................................................................................121
Транспонирование массивов и перестановка осей ....................................................... 123
4.2. 
Универсальные функции: быстрые поэлементные операции  
над массивами .......................................................................................................................................125
4.3. 
Программирование с применением массивов .................................................................127
Запись логических условий в виде операций с массивами ...................................... 129
Математические и статистические операции ....................................................................131
Методы булевых массивов .............................................................................................................132
Сортировка ...............................................................................................................................................133
Устранение дубликатов и другие теоретико-множественные операции.......... 134
4.4. 
Файловый ввод-вывод массивов ...............................................................................................135
4.5. 
Линейная алгебра ................................................................................................................................136
4.6. 
Генерация псевдослучайных чисел ...........................................................................................138
4.7. 
Пример: случайное блуждание ...................................................................................................139
Моделирование сразу нескольких случайных блужданий ........................................141
4.8. 
Заключение .............................................................................................................................................142

Глава 5. Первое знакомство с pandas ...........................................................................................143

5.1. 
Введение в структуры данных pandas ....................................................................................144
Объект Series ...........................................................................................................................................144
Объект DataFrame ................................................................................................................................148
Индексные объекты ............................................................................................................................154
5.2. 
Базовая функциональность ...........................................................................................................156
Переиндексация ...................................................................................................................................156
Удаление элементов из оси ...........................................................................................................159
Доступ по индексу, выборка и фильтрация .........................................................................161
Целочисленные индексы .................................................................................................................165
Арифметические операции и выравнивание данных .................................................. 166
Применение функций и отображение ....................................................................................172
Сортировка и ранжирование ........................................................................................................174
Индексы по осям с повторяющимися значениями .........................................................177

Содержание

5.3. 
Редукция и вычисление описательных статистик............................................................179
Корреляция и ковариация ..............................................................................................................181
Уникальные значения, счетчики значений и членство .................................................183
5.4. 
Заключение .............................................................................................................................................186

Глава 6. Чтение и запись данных, форматы файлов .......................................................187

6.1. 
Чтение и запись данных в текстовом формате .................................................................187
Чтение текстовых файлов порциями .......................................................................................193
Вывод данных в текстовом формате .......................................................................................195
Обработка данных в формате с разделителями ..............................................................196
Данные в формате JSON ..................................................................................................................198
XML и HTML: разбор веб-страниц.............................................................................................200
6.2. 
Двоичные форматы данных ..........................................................................................................203
Формат HDF5 ..........................................................................................................................................204
Чтение файлов Microsoft Excel ....................................................................................................206
6.3. 
Взаимодействие с HTML и Web API ..........................................................................................207
6.4. 
Взаимодействие с базами данных ............................................................................................209
6.5. 
Заключение .............................................................................................................................................210

Глава 7. Очистка и подготовка данных .......................................................................................211

7.1. 
Обработка отсутствующих данных ...........................................................................................211
Фильтрация отсутствующих данных ........................................................................................213
Восполнение отсутствующих данных ......................................................................................215
7.2. 
Преобразование данных.................................................................................................................217
Устранение дубликатов ....................................................................................................................217
Преобразование данных с помощью функции или отображения ........................ 219
Замена значений ..................................................................................................................................221
Переименование индексов осей ................................................................................................222
Дискретизация и раскладывание ..............................................................................................223
Обнаружение и фильтрация выбросов ..................................................................................226
Перестановки и случайная выборка ........................................................................................228
Вычисление индикаторных переменных ..............................................................................229
7.3. 
Манипуляции со строками .............................................................................................................232
Методы строковых объектов .........................................................................................................232
Регулярные выражения ....................................................................................................................234
Векторные строковые функции в pandas .............................................................................237
7.4. 
Заключение .............................................................................................................................................240

Глава 8. Переформатирование данных: соединение,  
комбинирование и изменение формы .......................................................................................241

8.1. 
Иерархическое индексирование ...............................................................................................241
Переупорядочение и уровни сортировки ............................................................................244

Содержание

Сводная статистика по уровню ...................................................................................................245
Индексирование с помощью столбцов DataFrame ........................................................ 246
8.2. 
Комбинирование и слияние наборов данных ...................................................................247
Слияние объектов DataFrame как в базах данных ......................................................... 247
Соединение по индексу ...................................................................................................................252
Конкатенация вдоль оси ..................................................................................................................256
Комбинирование перекрывающихся данных ....................................................................261
8.3. 
Изменение формы и поворот ......................................................................................................263
Изменение формы с помощью иерархического индексирования ....................... 263
Поворот из «длинного» в «широкий» формат ...................................................................266
Поворот из «широкого» в «длинный» формат ..................................................................270
8.4. 
Заключение .............................................................................................................................................272

Глава 9. Построение графиков и визуализация ..................................................................273

9.1. 
Краткое введение в API библиотеки matplotlib ............................................................... 274
Рисунки и подграфики ......................................................................................................................275
Цвета, маркеры и стили линий ....................................................................................................278
Риски, метки и надписи ....................................................................................................................281
Аннотации и рисование в подграфике ...................................................................................284
Сохранение графиков в файле ....................................................................................................286
Конфигурирование matplotlib .....................................................................................................288
9.2. 
Построение графиков с помощью pandas и seaborn ....................................................288
Линейные графики ..............................................................................................................................289
Столбчатые диаграммы ....................................................................................................................291
Гистограммы и графики плотности ...........................................................................................296
Диаграммы рассеяния .......................................................................................................................299
Фасетные сетки и категориальные данные .........................................................................301
9.3. 
Другие средства визуализации для Python .........................................................................303
9.4. 
Заключение .............................................................................................................................................303

Глава 10. Агрегирование данных и групповые операции ..........................................304

10.1. Механизм GroupBy ..............................................................................................................................305
Обход групп .............................................................................................................................................308
Группировка с помощью словарей и объектов Series...................................................311
Группировка с помощью функций .............................................................................................312
Группировка по уровням индекса .............................................................................................313
10.2. Агрегирование данных .....................................................................................................................313
Применение функций, зависящих от столбца и нескольких функций ............... 315
Возврат агрегированных данных без индексов строк .................................................319
10.3. Метод apply: часть общего принципа  
разделения-применения-объединения..................................................................................319
Подавление групповых ключей ..................................................................................................322

Содержание

Квантильный и интервальный анализы .................................................................................322
Пример: подстановка зависящих от группы значений вместо  
отсутствующих .......................................................................................................................................324
Пример: случайная выборка и перестановка ....................................................................326
Пример: групповое взвешенное среднее и корреляция ............................................328
Пример: групповая линейная регрессия ...............................................................................330
10.4. Сводные таблицы и перекрестное табулирование ......................................................... 331
Таблицы сопряженности ..................................................................................................................334
10.5. Заключение .............................................................................................................................................335

Глава 11. Временные ряды ...................................................................................................................336

11.1. Типы данных и инструменты, относящиеся к дате и времени ................................. 337
Преобразование между строкой и datetime ......................................................................338
11.2. Основы работы с временными рядами .................................................................................341
Индексирование, выборка, подмножества ..........................................................................342
Временные ряды с неуникальными индексами ...............................................................345
11.3. Диапазоны дат, частоты и сдвиг..................................................................................................346
Генерация диапазонов дат .............................................................................................................347
Частоты и смещения дат ..................................................................................................................349
Сдвиг данных (с опережением и с запаздыванием) ......................................................351
11.4. Часовые пояса ........................................................................................................................................354
Локализация и преобразование.................................................................................................355
Операции над объектами Timestamp с учетом часового пояса ............................. 357
Операции между датами из разных часовых поясов ...................................................358
11.5. Периоды и арифметика периодов ............................................................................................359
Преобразование частоты периода............................................................................................360
Квартальная частота периода ......................................................................................................362
Преобразование временных меток в периоды и обратно ........................................363
Создание PeriodIndex из массивов ...........................................................................................365
11.6. Передискретизация и преобразование частоты ..............................................................367
Понижающая передискретизация .............................................................................................369
Повышающая передискретизация и интерполяция .......................................................371
Передискретизация периодов .....................................................................................................373
11.7. Скользящие оконные функции ....................................................................................................374
Экспоненциально взвешенные функции ..............................................................................378
Бинарные скользящие оконные функции ............................................................................379
Скользящие оконные функции, определенные пользователем ............................. 381
11.8. Заключение .............................................................................................................................................382

Глава 12. Дополнительные сведения о библиотеке NumPy .....................................383

12.1. Категориальные данные ..................................................................................................................383
Для чего это нужно .............................................................................................................................383

Содержание

Категориальные типы в pandas ...................................................................................................385
Вычисления с категориальными значениями ....................................................................388
Категориальные методы ..................................................................................................................390
12.2. Дополнительные способы использования GroupBy .......................................................393
Групповые преобразования и GroupBy с «развертыванием»  ................................. 393
Групповая передискретизация по времени ........................................................................397
12.3. Сцепление методов ............................................................................................................................399
Метод pipe ................................................................................................................................................400
12.4. Заключение .............................................................................................................................................401

Глава 13. Введение в библиотеки моделирования на Python ................................ 402

13.1. Интерфейс между pandas и кодом модели .........................................................................402
13.2. Описание моделей с помощью Patsy ......................................................................................405
Преобразование данных в формулах Patsy ........................................................................408
Категориальные данные и Patsy.................................................................................................410
13.3. Введение в statsmodels ...................................................................................................................412
Оценивание линейных моделей ................................................................................................413
Оценивание процессов с временными рядами ................................................................ 416
13.4. Введение в scikit-learn .....................................................................................................................417
13.5. Продолжение своего образования ...........................................................................................420

Глава 14. Примеры анализа данных .............................................................................................422

14.1. 1.usa.gov data from Bitly ..................................................................................................................422
Подсчет часовых поясов на чистом Python .........................................................................423
Подсчет часовых поясов с помощью pandas ......................................................................425
14.2. Набор данных MovieLens 1M .......................................................................................................432
Измерение несогласия в оценках .............................................................................................437
14.3. Имена, которые давали детям в США за период с 1880 по 2010 год ................. 439
Анализ тенденций в выборе имен ............................................................................................444
14.4. База данных о продуктах питания министерства сельского  
хозяйства США .......................................................................................................................................453
14.5. База данных федеральной избирательной комиссии ..................................................459
Статистика пожертвований по роду занятий и месту работы .................................. 462
Распределение суммы пожертвований по интервалам ............................................... 465
Статистика пожертвований по штатам ...................................................................................467
14.6. Заключение .............................................................................................................................................468

Приложение A. Дополнительные сведения о библиотеке NumPy ......................469

A.1. 
Внутреннее устройство объекта ndarray ...............................................................................469
Иерархия типов данных в NumPy .............................................................................................470
A.2. 
Дополнительные манипуляции с массивами......................................................................471

Содержание

Изменение формы массива ...........................................................................................................472
Упорядочение элементов массива в C и в Fortran..........................................................474
Конкатенация и разбиение массива ........................................................................................474
Повторение элементов: функции tile и repeat ..................................................................477
Эквиваленты прихотливого индексирования: функции take и put ......................479
A.3. 
Укладывание ...........................................................................................................................................480
Укладывание по другим осям ......................................................................................................482
Установка элементов массива с помощью укладывания ............................................484
A.4. 
Дополнительные способы использования универсальных функций .................. 485
Методы экземпляра u-функций ..................................................................................................485
Написание новых u-функций на Python ...............................................................................488
А.5. Структурные массивы ........................................................................................................................489
Вложенные типы данных и многомерные поля ................................................................489
Зачем нужны структурные массивы? .......................................................................................490
A.6. 
Еще о сортировке.................................................................................................................................491
Косвенная сортировка: методы argsort и lexsort .............................................................492
Альтернативные алгоритмы сортировки ...............................................................................493
Частичная сортировка массивов ................................................................................................494
Метод numpy.searchsorted: поиск элементов в отсортированном  
массиве .......................................................................................................................................................495
A.7. 
Написание быстрых функций для NumPy с помощью Numba ................................ 496
Создание пользовательских объектов numpy.ufunc с помощью Numba ..........498
A.8. 
Дополнительные сведения о вводе-выводе массивов ................................................498
Файлы, спроецированные на память ......................................................................................498
HDF5 и другие варианты хранения массива ......................................................................500
A.9. 
Замечания о производительности ............................................................................................500
Важность непрерывной памяти ..................................................................................................500

Приложение B. Еще о системе IPython .......................................................................................503

B.1. 
История команд.....................................................................................................................................503
Поиск в истории команд и повторное выполнение .......................................................503
Входные и выходные переменные ...........................................................................................504
B.2. 
Взаимодействие с операционной системой .......................................................................505
Команды оболочки и псевдонимы ............................................................................................506
Система закладок на каталоги .....................................................................................................507
B.3. 
Средства разработки программ ..................................................................................................507
Интерактивный отладчик ................................................................................................................507
Хронометраж программы: %time и %timeit ........................................................................512
Простейшее профилирование: %prun и %run -p..............................................................514
Построчное профилирование функции .................................................................................516
B.4. 
Советы по продуктивной разработке кода с использованием IPython ............. 518
Перезагрузка зависимостей модуля ........................................................................................518

Содержание

Советы по проектированию программ ..................................................................................519
B.5. 
Дополнительные возможности IPython .................................................................................521
Делайте классы дружественными к IPython ....................................................................... 521
Профили и конфигурирование ...................................................................................................521
B.6. 
Заключение .............................................................................................................................................523

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

Предисловие

Что нового во втором издании?

Первое издание этой книги вышло в 2012 году, когда Python-библиотеки для 
анализа данных с открытым исходным кодом (в частности, pandas) были 
еще внове и быстро развивались. В этом исправленном и дополненном из-
дании я переработал главы, стремясь отразить как несовместимые изменения 
и устаревшие возможности, так и новые средства, появившиеся за прошед-
шие пять лет. Я также добавил новый материал с описанием инструментов, 
которые либо еще не существовали в 2012 году, либо были недостаточно зре-
лыми. Наконец, я старался не писать о новых или активно разрабатываемых 
проектах с открытым кодом, которым, возможно, не суждено дожить до зре-
лости. Хотелось бы представить читателям этого издания средства, которые 
не утратят актуальности ни в 2020, ни в 2021 году.
Ниже перечислены основные отличия второго издания.
 •
Весь код, включая пособие по Python, обновлен и доведен до уровня 
версии 3.6 (в первом издании использовалась версия Python 2.7).
 •
Обновлены инструкции по установке Python из дистрибутива Anaconda 
Python Distribution, а также всех дополнительных Python-пакетов.
 •
Внесены исправления, соответствующие последним версиям библиоте-
ки pandas, существовавшим в 2017 году.
 •
Добавлена глава о дополнительных средствах pandas, дающая также ряд 
других советов по работе с библиотекой.
 •
Размещено краткое введение в библиотеки statsmodels и scikit-learn.
Кроме того, материал, вошедший в первое издание, подвергнут реоргани-
зации, чтобы книгу было проще читать начинающим пользователям.

О примерах кода

Графические выделения

В книге применяются следующие графические выделения.

Курсив
Новые термины, имена и расширения имен файлов.

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

Моноширинный полужирный
Команды или иной текст, который должен быть введен пользователем бук-
вально.

Моноширинный курсив
Текст, вместо которого следует подставить значения, заданные пользова-
телем или определяемые контекстом.

 
Так обозначается совет или рекомендация. 
 

 
Так обозначается замечание общего характера. 
 

 
Так обозначается предостережение или предупреждение. 
 

О примерах кода

Файлы данных и прочие материалы, организованные по главам, можно найти 
в репозитории книги на GitHub: http://github.com/wesm/pydata-book.
Эта книга призвана помогать вам в работе, поэтому вы можете использо-
вать приведенный в ней код в собственных программах и в документации. 
Спрашивать у нас разрешения необязательно, если только вы не собирае-
тесь воспроизводить значительную часть кода. Например, не возбраняется 
включить в свою программу несколько фрагментов кода из книги, однако 
для продажи или распространения примеров из книг издательства O’Reilly 
на компакт-диске разрешение требуется. Цитировать книгу и примеры в от-
ветах на вопросы можно без ограничений, но для включения значительных 
объемов кода в документацию по собственному продукту нужно получить 
позволение.
Мы высоко ценим (хотя и не требуем их размещения) ссылки на наши из-
дания. В ссылке обычно указывается название книги, имя автора, издатель-

Предисловие

ство и ISBN, например: «Python for Data Analysis by Wes McKinney (O’Reilly). 
Copyright 2017 Wes McKinney, 978-1-491-95766-0».
Если вы полагаете, что планируемое использование кода выходит за рамки 
изложенной выше лицензии, пожалуйста, обратитесь к нам по адресу permis-
sions@oreilly.com.

Отзывы и пожелания

Мы всегда рады отзывам наших читателей. Расскажите нам, что вы думаете 
об этой книге – что понравилось или, может быть, не понравилось. Отзывы 
важны для нас, чтобы выпус кать книги, которые будут для вас максимально 
полезны.
Вы можете написать отзыв на нашем сайте www.dmkpress.com, зайдя на 
страницу книги и оставив комментарий в разделе «Отзывы и рецензии». Так-
же можно послать письмо главному редактору по адресу dmkpress@gmail.com; 
при этом укажите название книги в теме письма. 
Если вы являетесь экспертом в какой-либо области и заинтересованы в на-
писании новой книги, заполните форму на нашем сайте по адресу http://
dmkpress.com/authors/publish_book/ или напишите в издательство по адресу 
dmkpress@gmail.com.

Скачивание исходного кода примеров

Скачать файлы с дополнительной информацией для книг издательства «ДМК 
Пресс» можно на сайте www.dmkpress.com или www.дмк.рф на странице с опи-
санием соответствующей книги. 

Список опечаток

Хотя мы приняли все возможные меры для того, чтобы обеспечить высокое 
качество наших текстов, ошибки все равно случаются. Если вы найдете ошиб-
ку в одной из наших книг – возможно, ошибку в основном тексте или про-
граммном коде, – мы будем очень благодарны, если вы сообщите нам о ней. 
Сделав это, вы избавите других читателей от недопонимания и поможете нам 
улучшить последующие издания этой книги. 
Если вы найдете какие-либо ошибки в коде, пожалуйста, сообщите о них 
главному редактору по адресу dmkpress@gmail.com, и мы исправим это в сле-
дующих тиражах.

Нарушение авторских прав

Пиратство в интернете по-прежнему остается насущной проблемой. Изда-
тельства «ДМК Пресс» и Packt очень серь езно относятся к вопросам защиты 

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

авторских прав и лицензирования. Если вы столкнетесь в интернете с неза-
конной публикацией какой-либо из наших книг, пожалуйста, пришлите нам 
ссылку на интернет-ресурс, чтобы мы могли применить санкции.
Ссылку на подозрительные материалы можно прислать по адресу элект-
ронной поч ты dmkpress@gmail.com.
Мы высоко ценим любую помощь по защите наших авторов, благодаря 
которой мы можем предоставлять вам качественные материалы.

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

Эта работа – плод многолетних плодотворных обсуждений и совместной ра-
боты с многочисленными людьми со всего света. Хочу поблагодарить неко-
торых из них.

Памяти Джона Д. Хантера (1968–2012)

В августе 2012 года после многолетней борьбы с раком толстой кишки ушел 
из жизни наш дорогой друг и коллега Джон Д. Хантер. Это произошло почти 
сразу после того, как я закончил рукопись первого издания книги.
Роль и влияние Джона на сообщества, специализирующиеся на примене-
нии Python в научных приложениях и обработке данных, трудно переоце-
нить. Помимо разработки библиотеки matplotlib в начале 2000-х годов (вре-
мя, когда Python был далеко не так популярен, как сейчас) он помогал фор-
мировать культуру целого поколения разработчиков открытого кода, ставших 
впоследствии столпами экосистемы Python, которую мы часто считаем само 
собой разумеющейся.
Мне повезло познакомиться с Джоном в начале своей работы над открытым 
кодом в январе 2010 года, сразу после выхода версии pandas 0.1. Его 
вдохновляющее руководство помогало мне даже в самые тяжелые моменты 
не отказываться от своего видения pandas и Python как полноправного языка 
для анализа данных.
Джон был очень близок с Фернандо Пересом (Fernando Perez) и Брайаном 
Грейнджером (Brian Granger), которые заложили основы IPython и Jupyter 
и были авторами многих других инициатив в сообществе Python. Мы надеялись 
работать над книгой вчетвером, но в итоге только у меня оказалось 
достаточно свободного времени. Я уверен, что он гордился бы тем, чего мы 
достигли, порознь и совместно, за прошедшие пять лет.

Благодарности ко второму изданию (2017)

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

Предисловие

Новое издание не появилось бы на свет без неустанных усилий разработчиков 
ядра pandas, благодаря которым этот проект и сложившееся вокруг него 
сообщество превратились в один из краеугольных камней экосистемы Py-
thon в области науки о данных. Назову лишь некоторых: Том Аугспургер (Tom 
Augspurger), Йорис ван ден Боше (Joris van den Bossche), Крис Бартак (Chris 
Bartak), Филлип Клауд (Phillip Cloud), gfyoung, Энди Хэйден (Andy Hayden), 
Масааки Хорикоши (Masaaki Horikoshi), Стивен Хойер (Stephan Hoyer), Адам 
Клейн (Adam Klein), Воутер Овермейр (Wouter Overmeire), Джэфф Ребэк (Jeff 
Reback), Чань Ши (Chang She), Скиппер Сиболд (Skipper Seabold), Джефф Трэт-
нер (Jeff Tratner) и дp.
Что касается собственно подготовки издания, то я благодарю сотрудников 
издательства O’Reilly, которые терпеливо помогали мне на протяжении всего 
процесса работы над книгой, а именно Мари Божуро (Marie Beaugureau), Бена 
Лорика (Ben Lorica) и Коллин Топорек (Colleen Toporek). В очередной раз у меня 
были замечательные технические редакторы: Том Аугспургер, Пол Бэрри 
(Paul Barry), Хью Браун (Hugh Brown), Джонатан Коу (Jonathan Coe) и Андреас 
Маллер (Andreas Muller). Спасибо вам.
Первое издание книги переведено на ряд иностранных языков, в том числе 
на китайский, французский, немецкий, японский, корейский и русский. Перевод 
этого текста с целью сделать его доступным более широкой аудитории – 
трудное и зачастую неблагодарное занятие. Благодарю вас за то, что помогаете 
людям во всем мире учиться программировать и использовать средства 
анализа данных.
Мне также повезло пользоваться на протяжении нескольких последних лет 
поддержкой своих трудов по разработке ПО с открытым исходным кодом 
со стороны сайта Cloudera и фонда Two Sigma Investments. В то время как 
открытые проекты получают все меньший объем ресурсов, несопоставимый 
с количеством пользователей, очень важно, чтобы коммерческие компании 
поддерживали разработку ключевых программных проектов. Это было бы 
правильно.

Благодарности к первому изданию (2012)

Мне было бы трудно написать эту книгу без поддержки многих людей.
Из сотрудников издательства O’Reilly я крайне признателен редакторам – 
Меган Бланшетт (Meghan Blanchette) и Джулии Стил (Julie Steele), которые направляли 
меня на протяжении всего процесса. Майк Лоукидес (Mike Loukides) 
также работал со мной на стадии подачи предложения и помогал с выпуском 
книги в свет.
В техническом рецензировании книги многие принимали участие. Мартин 
Лас (Martin Blais) и Хью Браун (Hugh Brown) оказали неоценимую помощь 
в повышении качества примеров, ясности изложения и улучшении организации 
книги в целом. Джеймс Лонг (James Long), Дрю Конвей (Drew Conway), 
Фернандо Перес, Брайан Грейнджер, Томас Клюйвер (Thomas Kluyver), Адам 

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

Клейн, Джон Клейн, Чань Ши и Стефан ван дер Вальт (Stefan van der Walt) отрецензировали 
по одной или по нескольку глав и сделали ценные замечания 
с разных точек зрения.
Я почерпнул немало отличных идей для примеров и наборов данных в беседах 
с друзьями и коллегами, в том числе с Майком Дьюаром (Mike Dewar), 
Джеффом Хаммербахером (Jeff Hammerbacher), Джеймсом Джондроу (James 
Johndrow), Кристианом Ламом (Kristian Lum), Адамом Клейном, Хилари Мей-
сон (Hilary Mason), Чань Ши и Эшли Вильямсом (Ashley Williams).
Конечно, я в долгу у многих лидеров сообщества, применяющего открытое 
ПО на Python в научных приложениях, поскольку именно они заложили 
фундамент моей работы и воодушевляли меня, пока я писал книгу. Это те, 
кто разрабатывал ядро IPython (Фернандо Перес, Брайан Грейнджер, Мин 
Рэган-Келли, Томас Клюйвер и др.), Джон Хантер, Скиппер Сиболд, Трэвис 
Олифант (Travis Oliphant), Питер Вонг (Peter Wang), Эрик Джонс (Eric Jones), 
Робер Керн (Robert Kern), Джозеф Перктольд (Josef Perktold), Франческ Альтед 
(Francesc Alted), Крис Фоннесбек (Chris Fonnesbeck) и многие, многие другие. 
Еще несколько человек оказывали мне значительную поддержку, делились 
идеями и подбадривали на протяжении всего пути: Дрю Конвей, Шон Тэйлор 
(Sean Taylor), Джузеппе Палеолого (Giuseppe Paleologo), Джаред Дандер (Jared 
Lander), Дэвид Эпштейн (David Epstein), Джон Кроуос (John Krowas), Джошуа 
Блум (Joshua Bloom), Дэн Пилсуорт (Den Pilsworth), Джон Майлз-Уайт (John 
Myles-White) и многие другие, о которых я забыл.
Я также благодарен всем, кто повлиял на становление меня как ученого. 
В первую очередь это мои бывшие коллеги по компании AQR, которые 
поддерживали мою работу над pandas в течение многих лет: Алекс Рейфман 
(Alex Reyfman), Майкл Вонг (Michael Wong), Тим Сарджен (Tim Sargen), Октай 
Курбанов (Oktay Kurbanov), Мэтью Щанц (Matthew Tschantz), Рони Израэлов 
(Roni Israelov), Майкл Кац (Michael Katz), Крис Уга (Chris Uga), Прасад Раманан 
(Prasad Ramanan), Тэд Сквэр (Ted Square) и Хун Ким (Hoon Kim). И наконец, 
благодарю моих университетских наставников Хэйнса Миллера (МТИ) и Майка 
Уэста (университет Дьюк).
Если говорить о личной жизни, то я благодарен Кэйси Динкин (Casey Din-
kin), чью каждодневную поддержку невозможно переоценить. Спасибо той, 
кто терпел перепады моего настроения, когда я пытался собрать окончательный 
вариант рукописи, несмотря на свой и так уже перегруженный график. 
Благодарю и моих родителей, Билла и Ким, которые учили меня никогда не 
отступать от мечты и не соглашаться на меньшее.

К покупке доступен более свежий выпуск Перейти