Python и анализ данных. Первичная обработка данных с применением pandas, NumPy и Jupiter
Покупка
Тематика:
Программирование и алгоритмизация
Издательство:
ДМК Пресс
Автор:
Маккинни Уэс
Перевод:
Слинкин А.А.
Год издания: 2023
Кол-во страниц: 537
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-93700-174-0
Артикул: 680760.05.99
В книге "Python и анализ данных" рассматриваются вопросы переформатирования, очистки и обработки данных на Python. Ее можно также рассматривать как современное практическое введение в разработку научных приложений на Python, ориентированных, главным образом, обработку данных. Это книга о тех частях языка Python и библиотек для него, которые необходимы для эффективного решения широкого круга аналитических задач. Книга принадлежит перу Уэса Маккинни, основного автора библиотеки pandas, и содержит великое множество практических примеров. Она идеально подойдет как аналитикам, только начинающим осваивать, так и опытным программистам на Python, еще не знакомым с научными приложениями.
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Уэс Маккинни Python и анализ данных Первичная обработка данных с применением pandas, NumPy и Jupiter
Python for Data Analysis Data Wrangling with pandas, NumPy & Jupyter Wes McKinney Third edition
Python и анализ данных Первичная обработка данных с применением pandas, NumPy и Jupiter Уэс Маккинни Москва, 2023 Третье издание
УДК004.438Python:004.6 ББК32.973.22 М15 УэсМаккинни М15 Python и анализ данных: Первичная обработка данных с применением pandas, NumPy и Jupiter / пер. с англ. А. А. Слинкина. 3-е изд. – М.: МК Пресс, 2023. – 536 с.: ил. ISBN978-5-93700-174-0 Перед вами авторитетный справочник по переформатированию, очистке и обработке наборов данных на Python. Третье издание, переработанное с учетом версий Python 3.10 и pandas 1.4, содержит практические примеры, демонстрирующие эффективное решение широкого круга задач анализа данных. По ходу дела вы узнаете о последних версиях pandas, NumPy и Jupyter. Книга принадлежит перу Уэса Маккинни, создателя библиотеки pandas, и может служить практическим современным руководством по инструментарию науки о данных на Python. Она идеально подойдет как аналитикам, только начинающим осваивать Python, так и программистам на Python, еще незнакомым с наукой о данных и научными приложениями. Файлы данных и прочие материалы к книге находятся в репозитории на GitHub и на сайте издательства dmkpress.com. УДК 004.438Python:004.6 ББК 32.973.22 Authorized Russian translation of the English edition of Python for Data Analysis, 2nd edition. ISBN 9781491957660 © 2022 Wesley 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. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Copyright © 2022 Wesley McKinney © Оформление, издание, перевод, ДМК Пресс, 2023 ISBN (анг.) 978-1-09810-403-0 ISBN (рус.) 978-5-93700-174-0
Оглавление Об авторе ........................................................................................... 13 Об иллюстрации на обложке .......................................................... 14 Предисловие от издательства ........................................................ 15 Предисловие ...................................................................................... 16 Графические выделения ..................................................................................16 О примерах кода ...............................................................................................17 Как с нами связаться ........................................................................................17 Благодарности ..................................................................................................18 Глава 1. Предварительные сведения ............................................. 22 1.1. О чем эта книга? .........................................................................................22 Какого рода данные? ....................................................................................22 1.2. Почему именно Python? ............................................................................23 Python как клей .............................................................................................23 Решение проблемы «двух языков» ..............................................................24 Недостатки Python ........................................................................................24 1.3. Необходимые библиотеки для Python ......................................................25 NumPy ............................................................................................................25 pandas ............................................................................................................25 matplotlib .......................................................................................................27 IPython и Jupyter ...........................................................................................27 SciPy ...............................................................................................................28 scikit-learn .....................................................................................................28 statsmodels ....................................................................................................29 1.4. Установка и настройка ...............................................................................29 Miniconda в Windows ....................................................................................30 GNU/Linux ......................................................................................................30 Miniconda в macOS ........................................................................................31 Установка необходимых пакетов ................................................................32 Интегрированные среды разработки (IDE) ................................................33 1.5. Сообщество и конференции ......................................................................33 1.6. Структура книги .........................................................................................34 Примеры кода ...............................................................................................35 Данные для примеров ..................................................................................35 Соглашения об импорте ...............................................................................36
Глава 2. Основы языка Python, IPython и Jupyter-блокноты...... 37 2.1. Интерпретатор Python ...............................................................................38 2.2. Основы IPython ..........................................................................................39 Запуск оболочки IPython ..............................................................................39 Запуск Jupyter-блокнота ...............................................................................40 Завершение по нажатии клавиши Tab ........................................................43 Интроспекция ...............................................................................................45 2.3. Основы языка Python .................................................................................46 Семантика языка ..........................................................................................46 Скалярные типы ...........................................................................................53 Поток управления .........................................................................................61 2.4. Заключение ................................................................................................64 Глава 3. Встроенные структуры данных, функции и файлы ...... 65 3.1. Структуры данных и последовательности ...............................................65 Кортеж ...........................................................................................................65 Список ...........................................................................................................68 Словарь ..........................................................................................................72 Множество .....................................................................................................76 Встроенные функции последовательностей ..............................................78 Списковое, словарное и множественное включения .................................80 3.2. Функции ......................................................................................................82 Пространства имен, области видимости и локальные функции ..............83 Возврат нескольких значений .....................................................................84 Функции являются объектами .....................................................................85 Анонимные (лямбда-) функции ..................................................................87 Генераторы ....................................................................................................87 Обработка исключений ................................................................................90 3.3. Файлы и операционная система ...............................................................92 Байты и Unicode в применении к файлам ..................................................96 3.4. Заключение ................................................................................................98 Глава 4. Основы NumPy: массивы и векторные вычисления .... 99 4.1. NumPy ndarray: объект многомерного массива .....................................101 Создание ndarray ........................................................................................102 Тип данных для ndarray .............................................................................104 Арифметические операции с массивами NumPy .....................................107 Индексирование и вырезание ...................................................................108 Булево индексирование .............................................................................113 Прихотливое индексирование ...................................................................116 Транспонирование массивов и перестановка осей .................................117 4.2. Генерирование псевдослучайных чисел.................................................119 4.3. Универсальные функции: быстрые поэлементные операции над массивами ................................................................................................120 4.4. Программирование на основе массивов ................................................123 Запись логических условий в виде операций с массивами .....................125 6 Оглавление
Математические и статистические операции ..........................................126 Методы булевых массивов .........................................................................128 Сортировка ..................................................................................................128 Устранение дубликатов и другие теоретико-множественные операции ......................................................130 4.5. Файловый ввод-вывод массивов ............................................................130 4.6. Линейная алгебра .....................................................................................131 4.7. Пример: случайное блуждание................................................................133 Моделирование сразу нескольких случайных блужданий ......................135 4.8. Заключение ..............................................................................................136 Глава 5. Первое знакомство с pandas ..........................................137 5.1. Введение в структуры данных pandas ....................................................138 Объект Series ...............................................................................................138 Объект DataFrame .......................................................................................142 Индексные объекты ....................................................................................149 5.2. Базовая функциональность .....................................................................151 Переиндексация .........................................................................................151 Удаление элементов из оси........................................................................154 Доступ по индексу, выборка и фильтрация ..............................................155 Арифметические операции и выравнивание данных .............................165 Применение функций и отображение ......................................................170 Сортировка и ранжирование .....................................................................172 Индексы по осям с повторяющимися значениями .................................175 5.3. Редукция и вычисление описательных статистик .................................177 Корреляция и ковариация .........................................................................180 Уникальные значения, счетчики значений и членство ...........................181 5.4. Заключение ..............................................................................................185 Глава 6. Чтение и запись данных, форматы файлов .................186 6.1. Чтение и запись данных в текстовом формате ......................................186 Чтение текстовых файлов порциями ........................................................193 Вывод данных в текстовом формате .........................................................195 Обработка данных в других форматах с разделителями .........................196 Данные в формате JSON .............................................................................198 XML и HTML: разбор веб-страниц .............................................................200 6.2. Двоичные форматы данных ....................................................................203 Формат HDF5 ...............................................................................................205 6.3. Взаимодействие с HTML и Web API ........................................................208 6.4. Взаимодействие с базами данных ..........................................................209 6.5. Заключение ..............................................................................................211 Глава 7. Очистка и подготовка данных ........................................212 7.1. Обработка отсутствующих данных .........................................................212 Фильтрация отсутствующих данных ........................................................214 Восполнение отсутствующих данных .......................................................216 Оглавление 7
7.2. Преобразование данных ..........................................................................218 Устранение дубликатов ..............................................................................218 Преобразование данных с помощью функции или отображения ..........220 Замена значений ........................................................................................221 Переименование индексов осей ................................................................222 Дискретизация и группировка по интервалам ........................................223 Обнаружение и фильтрация выбросов .....................................................226 Перестановки и случайная выборка .........................................................227 Вычисление индикаторных переменных .................................................229 7.3. Расширение типов данных ......................................................................232 7.4. Манипуляции со строками ......................................................................235 Встроенные методы строковых объектов .................................................235 Регулярные выражения ..............................................................................237 Строковые функции в pandas ....................................................................240 7.5. Категориальные данные ..........................................................................243 Для чего это нужно .....................................................................................244 Расширенный тип Categorical в pandas .....................................................245 Вычисления с объектами Categorical ........................................................248 Категориальные методы ............................................................................250 7.6. Заключение ...............................................................................................253 Глава 8. Переформатирование данных: соединение, комбинирование и изменение формы .................254 8.1. Иерархическое индексирование .............................................................254 Переупорядочение и уровни сортировки .................................................257 Сводная статистика по уровню .................................................................258 Индексирование столбцами DataFrame ....................................................258 8.2. Комбинирование и слияние наборов данных ........................................260 Слияние объектов DataFrame как в базах данных ....................................260 Соединение по индексу .............................................................................265 Конкатенация вдоль оси ............................................................................269 Комбинирование перекрывающихся данных ..........................................274 8.3. Изменение формы и поворот ..................................................................276 Изменение формы с помощью иерархического индексирования .........276 Поворот из «длинного» в «широкий» формат ..........................................279 Поворот из «широкого» в «длинный» формат ..........................................282 8.4. Заключение ..............................................................................................284 Глава 9. Построение графиков и визуализация .........................285 9.1. Краткое введение в API библиотеки matplotlib .....................................286 Рисунки и подграфики ...............................................................................287 Цвета, маркеры и стили линий ..................................................................291 Риски, метки и надписи .............................................................................292 Аннотации и рисование в подграфике .....................................................295 Сохранение графиков в файле ...................................................................297 8 Оглавление
Конфигурирование matplotlib ...................................................................298 9.2. Построение графиков с помощью pandas и seaborn ..............................299 Линейные графики .....................................................................................299 Столбчатые диаграммы .............................................................................302 Гистограммы и графики плотности ..........................................................308 Диаграммы рассеяния ................................................................................310 Фасетные сетки и категориальные данные ..............................................313 9.3. Другие средства визуализации для Python ............................................315 9.4. Заключение ..............................................................................................316 Глава 10. Агрегирование данных и групповые операции .......317 10.1. Как представлять себе групповые операции .......................................318 Обход групп.................................................................................................322 Выборка столбца или подмножества столбцов ........................................323 Группировка с помощью словарей и объектов Series ..............................324 Группировка с помощью функций ............................................................325 Группировка по уровням индекса .............................................................325 10.2. Агрегирование данных ..........................................................................326 Применение функций, зависящих от столбца, и нескольких функций ....328 Возврат агрегированных данных без индексов строк .............................332 10.3. Метод apply: общий принцип разделения–применения–объединения ......................................................332 Подавление групповых ключей .................................................................334 Квантильный и интервальный анализы ...................................................335 Пример: подстановка зависящих от группы значений вместо отсутствующих ...............................................................................337 Пример: случайная выборка и перестановка ...........................................339 Пример: групповое взвешенное среднее и корреляция ..........................341 Пример: групповая линейная регрессия ..................................................343 10.4. Групповые преобразования и «развернутая» группировка ................343 10.5. Сводные таблицы и перекрестная табуляция ......................................347 Перекрестная табуляция: crosstab .............................................................350 10.5. Заключение .............................................................................................351 Глава 11. Временные ряды ...........................................................352 11.1. Типы данных и инструменты, относящиеся к дате и времени ..........353 Преобразование между строкой и datetime .............................................354 11.2. Основы работы с временными рядами ................................................356 Индексирование, выборка, подмножества ...............................................358 Временные ряды с неуникальными индексами.......................................360 11.3. Диапазоны дат, частоты и сдвиг ...........................................................361 Генерирование диапазонов дат .................................................................362 Частоты и смещения дат ............................................................................364 Сдвиг данных (с опережением и с запаздыванием) ................................366 11.4. Часовые пояса .........................................................................................369 Локализация и преобразование ................................................................369 Оглавление 9
Операции над объектами Timestamp с учетом часового пояса ............................................................................................371 Операции над датами из разных часовых поясов ...................................372 11.5. Периоды и арифметика периодов ........................................................373 Преобразование частоты периода ............................................................374 Квартальная частота периода ....................................................................376 Преобразование временных меток в периоды и обратно .......................377 Создание PeriodIndex из массивов ............................................................379 11.6. Передискретизация и преобразование частоты ..................................380 Понижающая передискретизация ............................................................382 Повышающая передискретизация и интерполяция ................................384 Передискретизация периодов ...................................................................386 Групповая передискретизация по времени .............................................387 11.7. Скользящие оконные функции .............................................................389 Экспоненциально взвешенные функции .................................................392 Бинарные скользящие оконные функции ................................................394 Скользящие оконные функции, определенные пользователем .............395 11.8. Заключение .............................................................................................396 Глава 12. Введение в библиотеки моделирования на Python .............................................................397 12.1. Интерфейс между pandas и кодом модели ...........................................397 12.2. Описание моделей с помощью Patsy ....................................................400 Преобразование данных в формулах Patsy ..............................................402 Категориальные данные и Patsy ................................................................404 12.3. Введение в statsmodels ..........................................................................406 Оценивание линейных моделей ...............................................................407 Оценивание процессов с временными рядами .......................................409 12.4. Введение в scikit-learn ...........................................................................410 12.5. Заключение .............................................................................................414 Глава 13. Примеры анализа данных ............................................415 13.1. Набор данных Bitly с сайта 1.usa.gov ....................................................415 Подсчет часовых поясов на чистом Python ..............................................416 Подсчет часовых поясов с помощью pandas .............................................418 13.2. Набор данных MovieLens 1M .................................................................424 Измерение несогласия в оценках ..............................................................428 13.3. Имена, которые давали детям в США за период с 1880 по 2010 год .... 432 Анализ тенденций в выборе имен ............................................................437 13.4. База данных о продуктах питания министерства сельского хозяйства США ...............................................................................446 13.5. База данных Федеральной избирательной комиссии .........................451 Статистика пожертвований по роду занятий и месту работы ................454 Распределение суммы пожертвований по интервалам ...........................457 Статистика пожертвований по штатам ....................................................459 13.6. Заключение .............................................................................................460 10 Оглавление