Erhalten Sie Zugang zu diesem und mehr als 300000 Büchern ab EUR 5,99 monatlich.
Python — первоклассный инструмент, и в первую очередь благодаря наличию множества библиотек для хранения, анализа и обработки данных. Отдельные части стека Python описываются во многих источниках, но только в новом издании «Python для сложных задач» вы найдете подробное описание: IPython, NumPy, pandas, Matplotlib, Scikit-Learn и др. Специалисты по обработке данных, знакомые с языком Python, найдут во втором издании решения таких повседневных задач, как обработка, преобразование и подготовка данных, визуализация различных типов данных, использование данных для построения статистических моделей и моделей машинного обучения. Проще говоря, эта книга является идеальным справочником по научным вычислениям в Python.
Sie lesen das E-Book in den Legimi-Apps auf:
Seitenzahl: 505
Veröffentlichungsjahr: 2024
Das E-Book (TTS) können Sie hören im Abo „Legimi Premium” in Legimi-Apps auf:
Переводчик Л. Киселева
Джейк Вандер Плас
Python для сложных задач: наука о данных. 2-е межд. изд.. — Астана: "Спринт Бук", 2024.
ISBN 978-601-08-3564-1
© ТОО "Спринт Бук", 2024
Все права защищены. Никакая часть данной книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения владельцев авторских прав.
К настоящему времени опубликовано большое количество книг, посвященных науке о данных, но, как мне кажется, Джейку ВандерПласу удалось написать исключительную книгу. Он взял очень сложную и обширную тему, разбил ее на части и описал ее таким простым и понятным языком, сопроводив множеством примеров, что вы без труда освоите ее.
Селеста Стингер (Celeste Stinger), инженер по надежности сайта
Опыт Джейка ВандерПласа и его страсть к обмену знаниями несомненны. В этом обновленном издании вы найдете ясные и простые примеры, которые помогут вам настроить и использовать основные инструменты обработки данных и машинного обучения. Если вы готовы погрузиться в обработку данных и использовать инструменты Python для извлечения реальной информации из ваших данных, то эта книга для вас!
Энн Боннер (Anne Bonner), основатель и генеральный директор Content Simplicity
В течение многих лет я неизменно рекомендовал книгу «Python для сложных задач» студентам, изучающим курс науки о данных. Второе издание этой великолепной книги получилось еще лучше благодаря включению привлекательных блокнотов Jupyter, которые могут заняться обработкой ваших данных, пока вы читаете.
Ной Гифт (Noah Gift), исполнительный директор и основатель Pragmatic AI Labs
Это обновленное издание является отличным введением в библиотеки, делающие Python одним из лучших языков для обработки данных и научных вычислений. Книга написана доступным языком и наполнена отличными примерами.
Аллен Дауни (Allen Downey), автор книг Think Python1 и Think Bayes2
«Python для сложных задач» — отличное руководство для изучающих приемы обработки данных на Python. Благодаря практическим примерам, написанным в доступной форме, читатель сможет научиться эффективно хранить наборы данных, манипулировать ими и извлекать полезную информацию.
Уильям Джамир Сильва (William Jamir Silva), старший инженер-программист, Adjust GmbH
Джейк ВандерПлас имеет богатый опыт объяснения основных концепций и инструментов Python тем, кто изучает науку о данных. И в этом втором издании «Python для сложных задач» он снова подтвердил свои умения. В этой книге вы найдете обзор всех инструментов, которые могут пригодиться на начальном этапе, а также доступные объяснения, почему то или иное реализуется именно так, а не иначе.
Джеки Казил (Jackie Kazil), создатель библиотеки Mesa и обладатель звания Data Science Leader
1Дауни А. Основы Python. Научитесь мыслить как программист.
2Дауни А. Байесовские модели. Байесовская статистика на языке Python.
Эта книга посвящена исследованию данных с помощью языка программирования Python. Сразу же возникает вопрос: что же такое наука о данных (data science)? Ответ на него дать непросто — настолько этот термин многозначен. Долгое время активные критики отказывали термину «наука о данных» в праве на существование либо по причине его избыточности (в конце концов, какая наука не имеет дела с данными?), либо расценивая этот термин как «модное словечко» для придания красоты резюме и привлечения внимания агентов по найму кадров.
На мой взгляд, в подобных высказываниях критики упускали нечто очень важное. Название «наука о данных», несмотря на поднятую вокруг него шумиху, пожалуй, лучше всего подходит для обозначения междисциплинарного набора навыков, становящихся все более востребованными в промышленности и науке. Междисциплинарность — ключ к ее пониманию. Лучшее из возможных определений науки о данных приведено в диаграмме Венна в науке о данных, впервые опубликованной Дрю Конвеем в его блоге в сентябре 2010 года (рис. 0.1).
Хотя некоторые названия немного ироничны, эта диаграмма ясно передает суть того, что, как мне кажется, понимается под наукой о данных: она является междисциплинарным предметом. Наука о данных охватывает три отдельные, но пересекающиеся сферы:
• навыки специалиста поматематической статистике, умеющего моделировать наборы данных и извлекать из них основное;
• навыки специалиста в области информатики, умеющего проектировать и использовать алгоритмы для эффективного хранения, обработки и визуализации этих данных;
• экспертные знания предметной области, полученные в ходе традиционного изучения предмета, — умение формулировать правильные вопросы и рассматривать ответы на них в соответствующем контексте.
С учетом этого я рекомендовал бы рассматривать науку о данных не как новую область знаний, которую нужно изучить, а как новый набор навыков, который вы можете использовать в рамках хорошо знакомой вам предметной области. Извещаете ли вы о результатах выборов, прогнозируете ли прибыльность ценных бумаг, занимаетесь ли оптимизацией контекстной рекламы в Интернете или распознаванием микроорганизмов на фотографиях, сделанных с помощью микроскопа, ищете ли новые классы астрономических объектов или же работаете с данными в любой другой сфере, цель этой книги — научить задавать новые вопросы о вашей предметной области и отвечать на них.
Рис. 0.1. Диаграмма Венна в науке о данных, опубликованная Дрю Конвееем (источник: https://oreil.ly/PkOOw)
«Как именно следует изучать Python?» — один из наиболее часто задаваемых мне вопросов студентами Вашингтонского университета и на различных технологических конференциях и встречах. Задают его заинтересованные в технологиях студенты, разработчики или исследователи, часто уже со значительным опытом написания кода и использования вычислительного и цифрового инструментария. Большинству из них не нужен язык программирования Python в чистом виде, они хотели бы изучать его, чтобы применять в качестве инструмента для решения задач, требующих вычислений с обработкой больших объемов данных. Несмотря на большое разнообразие видеороликов, статей в блогах и учебных пособий, ориентированных на эту аудиторию, вы не найдете в Интернете единственного хорошего ответа на данный вопрос, именно поэтому я взялся за эту книгу.
Эта книга не планировалась как введение в язык Python или в программирование вообще. Я предполагаю, что читатель знаком с языком Python и знает, как определять функции, присваивать значения переменным, вызывать методы объектов, управлять потоком выполнения программы и решать другие простейшие задачи. Она должна помочь пользователям языка Python научиться применять инструменты исследования данных, имеющиеся в языке Python, — библиотеки, упоминающиеся в следующем разделе, и сопутствующие инструменты — для эффективного хранения и анализа данных и извлечения из них полезной информации.
За последние несколько десятилетий язык программирования Python превратился в первоклассный инструмент для научных вычислений, включая анализ и визуализацию больших наборов данных. Это может удивить давних поклонников Python: сам по себе этот язык не был создан в расчете на анализ данных или научные вычисления. Возможность применения языка программирования Python в науке о данных появилась в основном благодаря большой и активно развивающейся экосистеме пакетов, созданных сторонними разработчиками, в число которых входят:
• NumPy — библиотека для работы с массивами однородных данных;
• Pandas — библиотека для работы с разнородными и маркированными данными;
• SciPy — библиотека для общих научных вычислительных задач;
• Matplotlib — библиотека для создания визуализаций типографского качества;
• IPython — оболочка для интерактивного выполнения и распространения кода;
• Scikit-Learn — библиотека для машинного обучения.
И множество других инструментов, которые будут упомянуты в дальнейшем.
Если вы ищете руководство по самому языку программирования Python, то рекомендую обратить ваше внимание на проект A Whirlwind Tour of Python («Краткая экскурсия по языку программирования Python») (https://oreil.ly/jFtWj). Он знакомит с важнейшими возможностями языка Python и рассчитан на исследователей данных, уже знакомых с одним или несколькими языками программирования.
Каждая часть книги посвящена конкретному пакету или инструменту, составляющему существенную часть инструментария Python для исследования данных, и разбита на более короткие независимые главы, обсуждающие отдельные понятия.
• Jupyter: за пределами обычного Python (часть I) — знакомит с IPython и Jupyter. Эти пакеты образуют вычислительное окружение, в котором работают многие исследователи данных, использующие Python.
• Введение в NumPy (часть II) — представляет библиотеку NumPy, в состав которой входит объект ndarray для эффективного хранения и работы с плотными массивами данных в Python.
• Манипуляции над данными с помощью пакета Pandas (часть III) — представляет библиотеку Pandas, в состав которой входит объект DataFrame для эффективного хранения и работы с маркированными/табличными данными в Python.
• Визуализация с помощью библиотеки Matplotlib (часть IV) — представляет библиотеку Matplotlib, реализующую богатые возможности для разнообразной гибкой визуализации данных в Python.
• Машинное обучение (часть V) — представляет библиотеку Scikit-Learn, включающую эффективные реализации на Python многих важных и широко известных алгоритмов машинного обучения.
Мир PyData гораздо шире представленных пакетов, и он растет день ото дня. С учетом этого я использую каждую возможность в книге, чтобы упомянуть другие интересные работы, проекты и пакеты, расширяющие пределы возможностей языка Python. Тем не менее пакеты, перечисленные выше, являются основой для применения языка программирования Python в исследовании данных. Я полагаю, что они сохранят свое значение и при росте окружающей их экосистемы.
Установка Python и набора библиотек поддержки научных вычислений не представляет сложности. В данном разделе будут рассмотрены особенности, которые следует принимать во внимание при настройке.
Существует множество вариантов установки Python, но я предложил бы воспользоваться дистрибутивом Anaconda, одинаково работающим в операционных системах Windows, Linux и macOS. Дистрибутив Anaconda существует в двух вариантах.
• Miniconda (https://oreil.ly/dH7wJ) содержит сам интерпретатор Python, а также утилиту командной строки conda — кросс-платформенную систему управления пакетами, ориентированную на работу с пакетами Python и аналогичную по духу утилитам apt и yum, хорошо знакомым пользователям операционной системы Linux.
• Anaconda (https://oreil.ly/ndxjm) включает интерпретатор Python и утилиту conda, а также набор предустановленных пакетов для научных вычислений. Приготовьтесь к тому, что для установки этого дистрибутива потребуется несколько гигабайтов дискового пространства.
Все пакеты, входящие в состав Anaconda, можно также установить вручную после установки Miniconda, именно поэтому я рекомендую начать с Miniconda.
Для начала скачайте и установите пакет Miniconda (не забудьте выбрать версию с языком Python 3), после чего установите базовые пакеты, используемые в данной книге:
[~]$ conda install numpy pandas scikit-learn matplotlib seaborn jupyter
На протяжении всей книги мы будем применять и другие, более специализированные утилиты из научной экосистемы Python, установка которых сводится к выполнению команды conda install название_пакета. Если вдруг вам доведется столкнуться с пакетами, недоступными в conda по умолчанию, то обязательно загляните в conda-forge (https://oreil.ly/CCvwQ) — обширный репозиторий пакетов conda.
За дополнительной информацией об утилите conda, включая информацию о создании и использовании сред разработки conda (которые я настоятельно рекомендую), обратитесь к онлайн-документации утилиты conda (https://oreil.ly/MkqPw).
В этой книге используются следующие условные обозначения.
Курсив
Курсивом выделены новые термины.
Моноширинный шрифт
Используется для листингов программ, а также внутри текста для выделения элементов программ, таких как имена переменных, функций, баз данных, типов данных, переменных окружения, инструкций и ключевых слов.
Полужирный моноширинный шрифт
Выделяет команды или другой текст, который пользователь должен ввести самостоятельно.
Курсивный моноширинный шрифт
Выделяет текст, который должен быть заменен значениями, введенными пользователем, или значениями, определяемыми контекстом.
Так обозначаются примечания общего характера.
Дополнительные материалы (примеры кода, упражнения и т.п.) доступны для скачивания по адресу https://github.com/jakevdp/PythonDataScienceHandbook.
В общем случае все примеры кода из книги вы можете использовать в своих программах и документации. Вам не нужно обращаться в издательство за разрешением, если вы не собираетесь воспроизводить существенные части программного кода. Если вы разрабатываете программу и используете в ней несколько фрагментов кода из книги, вам не нужно обращаться за разрешением. Но для продажи или распространения примеров из книги вам потребуется разрешение от издательства O’Reilly. Вы можете отвечать на вопросы, цитируя данную книгу или примеры из нее, но для включения существенных объемов программного кода из книги в документацию вашего продукта потребуется разрешение.
Мы рекомендуем, но не требуем добавлять ссылку на первоисточник при цитировании. Под ссылкой на первоисточник мы подразумеваем указание авторов, издательства и ISBN.
За получением разрешения на использование значительных объемов программного кода из книги обращайтесь по адресу [email protected].
Поскольку эта книга напечатана в черно-белом исполнении, мы подготовили онлайн-приложение с полноцветными и полноразмерными изображениями, которое вы найдете по адресу https://oreil.ly/PDSH_GitHub.
Меня часто спрашивают, какой из множества вариантов среды разработки для Python я использую в своей работе. Мой ответ иногда удивляет спрашивающих: моя излюбленная среда — IPython (http://ipython.org/) плюс текстовый редактор (в моем случае редактор Emacs или VSCode в зависимости от настроения). Jupyter начинался как оболочка IPython (сокращение от «интерактивный Python»), созданная в 2001 году Фернандо Пересом и задумывавшаяся как продвинутый интерпретатор Python, и с тех пор вырос в проект, призванный обеспечить, по словам Переса, «инструменты для всего жизненного цикла исследовательских расчетов». Если язык Python — механизм решения нашей задачи в области науки о данных, то Jupyter можно рассматривать как интерактивную панель управления.
Jupyter как полезный интерактивный интерфейс для языка Python поддерживает несколько удобных синтаксических дополнений к нему. Самый известный, пожалуй, интерфейс, предоставляемый проектом Jupyter, — это Jupyter Notebook, веб-среда для разработки, сотрудничества, совместного использования и даже публикации результатов. Не стоит далеко ходить за примером, показывающим удобства формата блокнотов Jupyter, им служит страница, которую вы сейчас читаете: вся рукопись данной книги написана как набор блокнотов Jupyter.
Эта часть книги начнется знакомством с некоторыми особенностями Jupyter и IPython, которые могут пригодиться при исследовании данных. Основное свое внимание мы сосредоточим на синтаксических возможностях, выходящих за пределы стандартных возможностей языка Python. Немного углубимся в «магические» команды, позволяющие ускорить выполнение стандартных задач при создании и использовании кода, предназначенного для исследования данных. И наконец, затронем возможности Jupyter Notebook, помогающие понять смысл данных и обмениваться результатами.