Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Язык Python помогает упростить анализ данных. Если вы научились пользоваться электронными таблицами, то сможете освоить и pandas! Несмотря на сходство с табличной компоновкой Excel, pandas обладает большей гибкостью и более широкими возможностями. Эта библиотека для Python быстро выполняет операции с миллионами строк и способна взаимодействовать с другими инструментами. Она дает идеальную возможность выйти на новый уровень анализа данных.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 513
Veröffentlichungsjahr: 2023
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Переводчики Л. Киселева, И. Пальти, И. Пальти
Борис Пасхавер
Pandas в действии. — СПб.: Питер, 2023.
ISBN 978-5-4461-1941-7
© ООО Издательство "Питер", 2023
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
Честно говоря, я наткнулся на Pandas совершенно случайно.
В 2015 году я проходил собеседование на должность аналитика по обработке данных на Indeed.com, крупнейшем сайте в мире по поиску работы. В качестве последнего технического задания меня попросили извлечь полезную информацию из внутреннего набора данных с помощью электронных таблиц Microsoft Excel. Стремясь впечатлить работодателя, я постарался вытянуть все, что только можно, из своего набора инструментов анализа данных: использовал сортировки столбцов, операции над текстом, сводные таблицы и, конечно, легендарную функцию VLOOKUP (ну, может, «легендарная» — небольшое преувеличение).
Как ни странно, тогда я не знал, что существуют и другие инструменты анализа данных, кроме Excel. Электронные таблицы Excel были повсюду: их использовали мои родители, мои преподаватели и мои коллеги. Они казались уже установившимся стандартом. Так что после получения письменного приглашения на работу я сразу же накупил книг по Excel примерно на 100 долларов и начал их изучать, чтобы стать специалистом по электронным таблицам!
В первый день я пришел на работу с распечаткой списка 50 чаще всего используемых функций Excel. Но едва я успел войти в учетную запись на рабочем компьютере, как начальник вызвал меня в конференц-зал и сообщил, что приоритеты изменились. Возникли проблемы. Первая: наборы данных команды аналитиков разрослись до не поддерживаемых Excel размеров. Вторая: все члены команды по-прежнему или даже в еще большей степени нуждались в автоматизации рутинных операций при создании ежедневных и еженедельных отчетов и усиленно искали инструменты и способы осуществить ее. К счастью, наш начальник придумал решение обеих проблем. Он спросил меня, слышал ли я о Pandas.
— О таких пушистых зверьках?1 — переспросил я в недоумении.
— Нет, — сказал он, — о библиотеке Python для анализа данных.
Итак, после всей проведенной подготовки мне пришлось осваивать совершенно новую технологию, изучать ее с нуля. Я нервничал, ведь раньше мне не приходилось писать код. Я ведь был специалистом по Excel, правда? Сумею ли я? Был только один способ узнать. Я углубился в официальную документацию Pandas, учебные видео на YouTube, книги, материалы семинаров, вопросы на Stack Overflow и во все наборы данных, какие только мог найти. И был приятно удивлен тому, насколько легко и просто начать работать с этой библиотекой. Код был интуитивно понятен и прост. Сама библиотека функционировала очень быстро. Хорошо проработанных возможностей было много. Pandas позволяла произвести множество операций над данными при помощи очень небольшого объема кода.
Истории, подобные моей, нередки в сообществе Python. Баснословный рост популярности этого языка за последнее десятилетие часто связывают с легкостью изучения его новыми разработчиками. Я убежден, что в схожей с моей ситуации вы сможете изучить Pandas столь же легко. Если вы хотите вывести свои навыки анализа данных за пределы электронных таблиц Excel, эта книга для вас.
После того как я научился уверенно работать с Pandas, я продолжил изучать Python, а затем и другие языки программирования. Во многом библиотека Pandas стала моей стартовой площадкой к переходу в профессиональные разработчики ПО. Я обязан этой замечательной библиотеке очень многим и с радостью передаю эстафету ее освоения вам. Надеюсь, вы оцените волшебные возможности, открываемые для вас программированием.
1На английском языке название библиотеки Pandas омонимично слову «панды». — Примеч. пер.
Довести эту книгу до успешного финиша было нелегко, и я хотел бы выразить искреннюю признательность всем тем, кто поддерживал меня на протяжении двух лет ее написания.
Прежде всего самые теплые благодарности моей замечательной девушке, Мередит. С самой первой фразы книги я чувствовал ее неизменную поддержку. Мередит — жизнерадостная, забавная и добрая душа, всегда ободряющая меня, когда дела идут плохо. Эта книга стала намного лучше благодаря ей. Спасибо, Мермишка.
Спасибо моим родителям, Ирине и Дмитрию, за гостеприимный дом, в котором я всегда могу получить передышку.
Спасибо моим сестрам-близняшкам, Маше и Саше. Они такие умные, любознательные и трудолюбивые для своего возраста, и я очень ими горжусь. Удачи в колледже!
Спасибо Ватсону, нашему золотистому ретриверу. Недостаток знаний Python он компенсирует веселым и дружелюбным нравом.
Огромное спасибо моему редактору, Саре Миллер (Sarah Miller), работа с которой была сплошным удовольствием. Я благодарен ей за терпение и ценные идеи по ходу дела. Она была подлинным капитаном нашего судна, благодаря которому плавание проходило без штормов.
Я не стал бы разработчиком программного обеспечения, если бы не возможности, предоставленные мне компанией Indeed. Хотелось бы сердечно поблагодарить моего бывшего начальника, Срджана Бодружича (Srdjan Bodruzic), за щедрость и наставничество (а также за то, что взял меня на работу!). Спасибо коллегам по команде CX — Томми Винчелу (Tommy Winschel), Мэтью Морину (Matthew Morin), Крису Хаттону (Chris Hatton), Чипу Борси (Chip Borsi), Николь Салимбене (Nicole Saglimbene), Дэниэль Сколи (Danielle Scoli), Блэр Суэйн (Blairr Swayne) и Джорджу Имроглу (George Improglou). Спасибо всем, с кем я обедал в Sophie’s Cuban Cuisine!
Я начал писать эту книгу, будучи разработчиком программного обеспечения в Stride Consulting. Потому хотел бы поблагодарить множество сотрудников Stride за их поддержку: Дэвида «Доминатора» Дипанфило (David «The Dominator» DiPanfilo), Мина Квака (Min Kwak), Бена Блэра (Ben Blair), Кирстен Нордин (Kirsten Nordine), Майкла «Бобби» Нуньеса (Michael «Bobby» Nunez), Джея Ли (Jay Lee), Джеймса Ю (James Yoo), Рэя Велиса (Ray Veliz), Нэйтана Римера (Nathan Riemer), Джулию Берчем (Julia Berchem), Дэна Плэйна (Dan Plain), Ника Чера (Nick Char), Гранта Циолковски (Grant Ziolkowski), Мелиссу Ваниш (Melissa Wahnish), Дэйва Эндерсона (Dave Anderson), Криса Апорту (Chris Aporta), Майкла Карлсона (Michael Carlson), Джона Галиото (John Galioto), Шона Марцуг-Маккарти (Sean Marzug-McCarthy), Трэвиса Вандерхупа (Travis Vander Hoop), Стива Соломона (Steve Solomon) и Яна Млкоха (Jan Mloch).
Спасибо вам, друзья-коллеги, встречавшиеся мне в те времена, когда я был разработчиком программного обеспечения и консультантом: Фрэнсис Хван (Francis Hwang), Инхак Ким (Inhak Kim), Лиана Лим (Liana Lim), Мэтт Бамбах (Matt Bambach), Брентон Моррис (Brenton Morris), Иэн Макнэлли (Ian McNally), Джош Филипс (Josh Philips), Артем Кочнев (Artem Kochnev), Эндрю Кан (Andrew Kang), Эндрю Фейдер (Andrew Fader), Карл Смит (Karl Smith), Брэдли Уитвел (Bradley Whitwell), Брэд Попюлек (Brad Popiolek), Эдди Вартон (Eddie Wharton), Джен Квок (Jen Kwok), и вам, мои любимые соратники по кофе: Адам Макамис (Adam McAmis) и Энди Фриц (Andy Fritz).
Благодарю также Ника Бьянко (Nick Bianco), Кэма Штира (Cam Stier), Кейт Дэвид (Keith David), Майкла Чена (Michael Cheung), Томаса Филиппо (Thomas Philippeau), Николь Диандреа (Nicole DiAndrea) и Джеймса Рокича (James Rokeach) за все, что они сделали для меня.
Спасибо моей любимой группе, New Found Glory, за музыку, которую я часто слушал при написании этой книги. Поп-панк жив!
Выражаю благодарность сотрудникам издательства Manning, доведшим этот проект до завершения и помогавшим с его продвижением: Дженнифер Уль (Jennifer Houle), Александару Драгосавлевичу (Aleksandar Dragosavljevi), Радмиле Эрцеговац (Radmila Ercegovac), Кэндес Джиллхул (Candace Gillhoolley), Степану Джурековичу (Stjepan Jurekovi) и Лукасу Веберу (Lucas Weber). Спасибо также тем сотрудникам Manning, которые проверяли все материалы книги: Саре Миллер, моему редактору-консультанту по аудитории; Дейдре Хиам (Deirdre Hiam), моему менеджеру по выпуску; Кейр Симпсон (Keir Simpson), моему выпускающему редактору; и Джейсону Эверетту (Jason Everett), моему корректору.
Спасибо всем техническим рецензентам, которые помогли мне довести книгу до ума: Элу Пежевски (Al Pezewski), Альберто Кьярланти (Alberto Ciarlanti), Бену Макнамаре (Ben McNamara), Бьерну Нойхаусу (Bjrn Neuhaus), Кристоферу Коттмайеру (Christopher Kottmyer), Дэну Шейху (Dan Sheikh), Драгошу Манайлу (Dragos Manailoiu), Эрико Ленцзяну (Erico Lendzian), Джеффу Смиту (Jeff Smith), Жерому Батону (Jrme Bton), Хоакину Белтрану (Joaquin Beltran), Джонатану Шарли (Jonathan Sharley), Хосе Апаблазе (Jose Apablaza), Кену В. Элджеру (Ken W. Alger), Мартину Цыгану (Martin Czygan), Маттейсу Афуртиту (Mathijs Affourtit), Мэтиасу Бушу (Matthias Busch), Майку Кадди (Mike Cuddy), Монике И. Гимарайеш (Monica E. Guimaraes), Нинославу Черкезу (Ninoslav Cerkez), Рику Принсу (Rick Prins), Саиду Хасани (Syed Hasany), Витону Витани (Viton Vitanis) и Вибхавредди Камиредди Шангальредди (Vybhavreddy Kammireddy Changalreddy). Благодаря вашим стараниям я научился писать и преподавать лучше.
Наконец, выражаю признательность городу Хобокен — месту моего проживания на протяжении последних шести лет. Я написал многие части этой рукописи в его общественной библиотеке, местных кафе и чайных лавках. Немало шагов в своей жизни я сделал в этом городе, и он навсегда останется в моей памяти. Спасибо тебе, Хобокен!
«Pandas в действии» представляет собой полезное, полное и понятное введение в библиотеку Pandas2, предназначенную для анализа данных. Pandas позволяет с легкостью производить множество операций над данными: сортировку, соединение, создание сводных таблиц, очистку, удаление повторов, агрегирование и многое другое. Все перечисленное рассматривается в книге по нарастающей сложности. Вы познакомитесь с pandas по частям, начиная с самых мелких «кирпичиков» и постепенно переходя к более крупным структурам данных.
Книга предназначена для специалистов по анализу данных, ранее работавших с программами электронных таблиц (например, Microsoft Excel, Google Sheets и Apple Numbers) и/или альтернативными инструментами анализа данных (например, R и SAS). Подходит она и для разработчиков Python, интересующихся анализом данных.
«Pandas в действии» состоит из 14 глав, сгруппированных в две части.
Часть I «Основы pandas» поэтапно познакомит вас с основной спецификой работы с библиотекой pandas.
• В главе 1 с помощью pandas анализируется пример набора данных для демонстрации ее возможностей.
• В главе 2 вы познакомитесь с объектом Series — основной структурой данных pandas, предназначенной для хранения набора упорядоченных данных.
• В главе 3 мы подробнее рассмотрим объект Series, в частности различные операции Series, включая сортировку значений, отбрасывание дубликатов, извлечение минимальных и максимальных значений и многое другое.
• В главе 4 вы познакомитесь с объектом DataFrame, двумерной таблицей данных. Мы применим идеи из предыдущих глав к этой новой структуре данных и рассмотрим дополнительные операции.
• В главе 5 вы научитесь отфильтровывать поднаборы строк из объекта DataFrame с помощью различных логических условий: равенства, неравенства, включения, исключения и т.д.
Часть II «Применение pandas на практике» посвящена более продвинутым возможностям библиотеки pandas и задачам, решаемым с их помощью в реальных наборах данных.
• В главе 6 вы научитесь работать в pandas с содержащими ошибки текстовыми данными. Мы обсудим решение таких задач, как удаление пробельных символов, исправление регистра символов и извлечение нескольких значений из одного столбца.
• Глава 7 обсуждает MultiIndex, предназначенный для объединения значений из нескольких столбцов под единым идентификатором для строки данных.
• Глава 8 описывает агрегирование данных в сводных таблицах, перенос заголовков с оси строк на ось столбцов и преобразование данных из широкого формата в узкий.
• В главе 9 изучается вопрос группировки строки по корзинам и агрегирование полученных коллекций при помощи объекта GroupBy.
• Глава 10 описывает объединение нескольких наборов данных в один с помощью различных видов соединений.
• Глава 11 демонстрирует возможности работы с датами и временем в библиотеке pandas и охватывает такие вопросы, как сортировка дат, вычисление длительности и определение того, приходится ли дата на начало месяца или квартала.
• Глава 12 показывает, как импортировать дополнительные типы файлов в библиотеке pandas, включая данные Excel и JSON. Также вы научитесь экспортировать данные из библиотеки pandas.
• Глава 13 посвящена настройке параметров библиотеки pandas. Мы обсудим изменение количества отображаемых строк, настройку точности чисел с плавающей точкой, округление значений и многое другое.
• В главе 14 вы откроете для себя возможности визуализации данных с помощью библиотеки matplotlib. Мы увидим, как создавать на основе данных из библиотеки pandas линейные, столбчатые, круговые диаграммы и многое другое.
Содержимое каждой новой главы основывается на материале предыдущих. Изучающим pandas с нуля я рекомендую читать их последовательно. Но в то же время, чтобы книгу можно было использовать в качестве справочного руководства, я старался делать все главы независимыми, с отдельными наборами данных. В каждой главе мы будем начинать писать код с чистого листа, так что вы можете начать читать с любой из них.
В конце большинства глав вы найдете упражнения, на которых сможете опробовать изложенные принципы на практике. Я настоятельно рекомендую не игнорировать их.
Библиотека pandas основана на языке программирования Python, так что вам следует озаботиться знанием его основ перед чтением книги. Те, у кого мало опыта работы с Python, могут основательно познакомиться с ним в приложении Б.
Эта книга содержит множество примеров исходного кода, который набран воттакиммоношириннымшрифтом, чтобы его можно было отличить от обычного текста.
Исходный код для всех листингов данной книги доступен для скачивания с GitHub по адресу https://github.com/paskhaver/pandas-in-action. Если вы не сталкивались с Git и GitHub — найдите кнопку Download Zip на странице репозитория. Те же, у кого есть опыт работы с Git и GitHub, могут клонировать репозиторий из командной строки.
Репозиторий также включает полные наборы данных для книги. Когда я изучал библиотеку pandas, меня очень раздражало, что в руководствах часто используются сгенерированные случайным образом данные. Никакой согласованности, контекста, последовательности изложения, никакого интереса, наконец. В этой книге мы будем работать с множеством реальных наборов данных, охватывающих все на свете, от зарплат баскетболистов и типов покемонов до санитарных инспекций ресторанов. Данные повсюду вокруг нас, и библиотека pandas — один из лучших инструментов для их анализа. Надеюсь, вам понравится прикладная направленность этих наборов данных.
• Официальную документацию библиотеки pandas можно найти по адресу https://pandas.pydata.org/docs.
• В свободное время я создал технические видеокурсы на платформе Udemy. Найти их (20-часовой курс pandas и 60-часовой курс языка Python) можно по адресу https://www.udemy.com/user/borispaskhaver.
• Не стесняйтесь писать мне в Twitter (https://twitter.com/borispaskhaver) и LinkedIn (https://www.linkedin.com/in/boris-paskhaver).
2Далее в тексте — pandas. — Примеч. ред.
Борис Пасхавер (Boris Paskhaver) — разработчик полного цикла, консультант и преподаватель из Нью-Йорка. На платформе дистанционного обучения Udemy у него уже шесть курсов с более чем 140 часами видео, 300 тысячами слушателей, 20 тысячами отзывов и 1 миллионом минут ежемесячных просмотров. Прежде чем стать разработчиком программного обеспечения, Борис работал специалистом по анализу данных и системным администратором. В 2013 году он окончил Нью-Йоркский университет с двумя магистерскими дипломами — по экономике бизнеса и маркетингу.
Рисунок на обложке озаглавлен Dame de Calais («Леди из Кале»). Это иллюстрация из набора костюмов различных стран в книге Жака Грассе де Сан-Савье (Jacques Grasset de Saint-Sauveur) Costumes de Diffrents Pays («Наряды разных стран»), опубликованной во Франции в 1797 году. Все иллюстрации в издании прекрасно нарисованы и раскрашены вручную. Многообразие нарядов, приведенное Грассе де Сан-Савье, напоминает нам, насколько далеко отстояли друг от друга различные регионы мира всего 200 лет назад. Изолированные друг от друга, люди говорили на различных диалектах и языках. На улицах городов и в деревнях по одной только манере одеваться можно было легко определить, откуда человек, каким ремеслом занимается и каково его социальное положение.
Стили одежды с тех пор изменились, столь богатое разнообразие и самобытность различных регионов сошли на нет. Зачастую непросто отличить даже жителя одного континента от жителя другого, не говоря уже о городах, регионах и странах. Возможно, мы пожертвовали культурным многообразием в пользу большей вариативности личной жизни и определенно в пользу более разнообразной и динамичной жизни технологической.
В наше время, когда технические книги так мало отличаются друг от друга, издательство Manning изобретательно и инициативно радует читателя обложками книг, акцентируя удивительные различия в жизни регионов двухвековой давности, воплощенные в иллюстрациях Жака Грассе де Сан-Савье.
Ваши замечания, предложения, вопросы отправляйте по адресу [email protected] (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На веб-сайте издательства www.piter.com вы найдете подробную информацию о наших книгах.
Добро пожаловать! В этой части книги вы познакомитесь с основными принципами работы библиотеки pandas и ее двумя главными структурами данных: одномерным объектом Series и двумерным DataFrame. Глава 1 открывает книгу с анализа набора данных с помощью pandas для демонстрации ее возможностей. Далее мы перейдем к подробному изучению объекта Series в главах 2 и 3. Вы научитесь создавать объекты Series с нуля, импортировать их из внешних наборов данных, а также применять к ним массу различных математических, статистических и логических операций. В главе 4 вы познакомитесь с табличным объектом DataFrame и с разнообразными способами извлечения строк и столбцов, а также значений из содержащихся в них данных. Наконец, глава 5 посвящена извлечению поднаборов строк из объектов DataFrame путем применения различных логических критериев. А попутно мы рассмотрим восемь наборов данных, охватывающих все на свете: от театральных кассовых сборов и игроков НБА до покемонов.
Эта часть книги охватывает важнейшие стороны библиотеки pandas, основу, без которой невозможно работать с ней эффективно. Я изо всех сил постарался начать с самого нуля, с наименьших возможных «кирпичиков» и постепенно переходить к более крупным и сложным элементам. Следующие пять глав закладывают фундамент вашего мастерского владения pandas. Удачи!