Книга «Pandas в действии»

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

image Здравствуйте, Хаброжители!
Давненько вас не радовали новинками.

Язык Python помогает упростить анализ данных. Если вы научились пользоваться электронными таблицами, то сможете освоить и pandas! Несмотря на сходство с табличной компоновкой Excel, pandas обладает большей гибкостью и более широкими возможностями. Эта библиотека для Python быстро выполняет операции с миллионами строк и способна взаимодействовать с другими инструментами. Она дает идеальную возможность выйти на новый уровень анализа данных.

Кому предназначена эта книга
«Pandas в действии» представляет собой полезное, полное и понятное введение в библиотеку Pandas, предназначенную для анализа данных. Pandas позволяет с легкостью производить множество операций над данными: сортировку, соединение, создание сводных таблиц, очистку, удаление повторов, агрегирование и многое другое. Все перечисленное рассматривается в книге по нарастающей сложности. Вы познакомитесь с pandas по частям, начиная с самых мелких «кирпичиков» и постепенно переходя к более крупным структурам данных.

Книга предназначена для специалистов по анализу данных, ранее работавших с программами электронных таблиц (например, Microsoft Excel, Google Sheets и Apple Numbers) и/или альтернативными инструментами анализа данных (например, R и SAS). Подходит она и для разработчиков Python, интересующихся анализом данных.

7.6.1. Замена индекса


В настоящее время самый внешний уровень мультииндекса в объекте DataFrame neighborhoods — State, а за ним следуют City и Street:

In [65] neighborhoods.head()

Out [65]

image

Метод reorder_levels изменяет упорядоченность уровней мультииндекса заданным образом. Желаемый порядок задается путем передачи списка уровней в параметре order. В следующем примере уровни City и State меняются местами:

In [66] new_order = ["City", "State", "Street"]
        neighborhoods.reorder_levels(order = new_order).head()

Out [66]

image

Можно также передать в параметр order список целых чисел, соответствующих текущим позициям индекса уровней мультииндекса. Чтобы, например, State стал первым уровнем в новом мультииндексе, необходимо начать список с 1 — позиции индекса уровня State в текущем мультииндексе. Следующий пример кода возвращает тот же результат, что и предыдущий:

In [67] neighborhoods.reorder_levels(order = [1, 0, 2]).head()

Out [67]

image

А если необходимо, скажем, удалить индекс? Например, если мы хотим использовать в качестве меток индекса другой набор столбцов? Метод reset_index возвращает новый объект DataFrame, включающий уровни предыдущего объекта MultiIndex в качестве столбцов. Библиотека pandas заменяет предыдущий мультииндекс на стандартный числовой:

In [68] neighborhoods.reset_index().tail()

Out [68]

image

Обратите внимание, что три новых столбца (State, City и Street) становятся значениями в Category — на самом внешнем уровне мультииндекса столбцов. Ради согласованности столбцов (чтобы каждый был кортежем из двух значений) библиотека pandas присваивает трем новым столбцам равное пустой строке значение на уровне Subcategory.

Pandas предоставляет возможность добавить эти три столбца на другой уровень мультииндекса. Передайте нужную позицию индекса или название в параметр col_level метода reset_index. В следующем примере столбцы State, City и Street включаются в уровень Subcategory мультииндекса столбцов:

In [69] # Две строки ниже эквивалентны
         neighborhoods.reset_index(col_level = 1).tail()
         neighborhoods.reset_index(col_level = "Subcategory").tail()

Out [69]

image

Теперь библиотека pandas по умолчанию будет использовать пустую строку в качестве значения Category — родительского уровня, включающего уровень Subcategory, к которому относятся State, City и Street. Пустую строку можно заменить любым нужным нам значением, передав соответствующий аргумент для параметра col_fill. В следующем примере мы группируем три новых столбца на родительском уровне Address.. Теперь самый внешний уровень Category включает три различных значения Address, Culture и Services:

In [70] neighborhoods.reset_index(
            col_fill = "Address", col_level = "Subcategory"
        ).tail()

Out [70]

image

Обычный вызов метода reset_index приводит к преобразованию всех уровней индекса в обычные столбцы. Можно также перенести в обычный столбец и отдельный уровень индекса, передав его название в параметре levels. Например, перенесем уровень Street из мультииндекса в обычный столбец объекта DataFrame:

In [71] neighborhoods.reset_index(level = "Street").tail()

Out [71]

А можно перенести в столбцы несколько уровней индекса, передав их в виде списка:

In [72] neighborhoods.reset_index(level = ["Street", "City"]).tail()

Out [72]

image

А произвести удаление уровня из мультииндекса? Конечно, можно! Если задать значение True для параметра drop метода reset_index, библиотека pandas удалит указанный уровень вместо добавления его в число столбцов. В следующем примере reset_index мы удаляем таким образом уровень Street:

In [73] neighborhoods.reset_index(level = "Street", drop = True).tail()

Out [73]

image

Чтобы подготовиться к подразделу 7.6.2, где мы займемся созданием новых индексов, зафиксируем наши изменения индекса, перезаписав переменную neighborhoods новым объектом DataFrame. При этом все три уровня индекса перенесутся в столбцы объекта DataFrame:

In [74] neighborhoods = neighborhoods.reset_index()

7.6.2. Задание индекса


Освежим в памяти, как выглядит наш объект DataFrame:

In [75] neighborhoods.head(3)

Out [75]

image

Метод set_index устанавливает в качестве нового индекса один или несколько столбцов объекта DataFrame. Нужные столбцы можно передать через параметр keys:

In [76] neighborhoods.set_index(keys = "City").head()

Out [76]

image

Нам нужно, чтобы роль индекса играл один из четырех последних столбцов? Пожалуйста! В следующем примере мы передаем в параметр keys кортеж с целевыми значениями для всех уровней мультииндекса:

In [77] neighborhoods.set_index(keys = ("Culture", "Museums")).head()

Out [77]

image

Для создания мультииндекса на оси строк можно передать в параметр keys список, содержащий несколько столбцов:

In [78] neighborhoods.set_index(keys = ["State", "City"]).head()

Out [78]

image

Одним словом, при работе с библиотекой pandas можно придать набору данных подходящую для анализа форму с помощью множества вариантов сочетаний и преобразований. Мы уже не раз это делали и даже вошли во вкус. Надо только четко определить для себя задачи проводимого анализа и вид необходимых наборов данных, а затем задавать индексы объекта DataFrame. Спросите себя перед тем, как приступать к преобразованиям, какие значения важнее всего для решения поставленной перед вами задачи. Какая информация является ключевой? Связаны ли друг с другом неразрывно какие-то элементы данных? Составляют ли строки или столбцы группу или категорию? Мультииндекс — эффективный вариант хранения и доступа к данным для решения множества самых разнообразных задач.

Об авторе
Борис Пасхавер (Boris Paskhaver) — разработчик полного цикла, консультант и преподаватель из Нью-Йорка. На платформе дистанционного обучения Udemy у него уже шесть курсов с более чем 140 часами видео, 300 тысячами слушателей, 20 тысячами отзывов и 1 миллионом минут ежемесячных просмотров. Прежде чем стать разработчиком программного обеспечения, Борис работал специалистом по анализу данных и системным администратором. В 2013 году он окончил Нью-Йоркский университет с двумя магистерскими дипломами — по экономике бизнеса и маркетингу.

Более подробно с книгой можно ознакомиться на сайте издательства:
» Оглавление
» Отрывок

По факту оплаты бумажной версии книги на e-mail высылается электронная книга.
Для Хаброжителей скидка 25% по купону — Pandas

P.S.
На сайте издательства продолжается распродажа в честь Старого Нового года.
Источник: https://habr.com/ru/company/piter/blog/711160/


Интересные статьи

Интересные статьи

Привет, Хаброжители! Компьютер способен решить практически любую задачу, если ему дать правильные инструкции. С этого и начинается программирование. Даниэль Зингаро создал книгу для начинающих, чт...
Привет, Хаброжители! Вы пока еще не знаете JS. И Кайл Симпсон признается, что тоже его не знает (по крайней мере полностью)… И никто не знает. Но все мы можем начать работать над тем, чтобы узнать ег...
Привет, Хаброжители! «Безопасно by Design» не похожа на другие книги по безопасности. В ней нет дискуссий на такие классические темы, как переполнение буфера или слабые места в криптогра...
Совсем недавно в издательстве ДМК-пресс на русском языке вышла замечательная книга Конрада Кокосы «Управление памятью в .NET для профессионалов». Это издание примечательно тем, что в переводе ...
Здравствуйте. Я уже давно не пишу на php, но то и дело натыкаюсь на интернет-магазины на системе управления сайтами Битрикс. И я вспоминаю о своих исследованиях. Битрикс не любят примерно так,...