Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Python
Code

Pandas: швейцарский армейский нож для ваших данных, часть 2

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Pandas: The Swiss Army Knife for Your Data.
Pandas: The Swiss Army Knife for Your Data, Part 1

Russian (Pусский) translation by Anna k.Ivanova (you can also view the original English article)

Это вторая часть учебника из двух частей о Pandas, замечательном наборе инструментов анализа данных Python.

В первой части мы рассмотрели основные типы данных Pandas: ряд и фрейм данных. Мы импортировали и экспортировали данные, выбирали подмножества данных, работали с метаданными и сортировали их.

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

Работа с отсутствующими значениями

Одна из самых сильных сторон pandas - обработка недостающих значений. Он не просто рухнет и сгорит при наличии отсутствующих данных. Когда данные отсутствуют, pandas заменяет их на np.nan (не число), и они не участвуют ни в каких вычислениях.

Давайте переиндексируем наш фрейм данных, добавляя больше строк и столбцов, но без каких-либо новых данных. Чтобы было интересно, мы заполним некоторые значения.

Обратите внимание, что df.index.append() возвращает новый индекс и не изменяет существующий индекс. Кроме того, df.reindex() возвращает новый фрейм данных, который я назначаю обратно переменной df.

На данный момент наш фрейм данных имеет шесть строк. Последняя строка - все NaN, а все остальные строки, кроме третьей и четвертой, имеют NaN в столбце «c». Что вы можете сделать с отсутствующими данными? Вот варианты:

  • Сохраните их (но они не будут участвовать в вычислениях).
  • Отбросить их (результат вычисления не будет содержать отсутствующие данные).
  • Заменить их значением по умолчанию.

Если вы просто хотите проверить, отсутствуют ли у вас данные во фрейме данных, используйте метод isnull(). Он возвращает логическую маску вашего фрейма данных, которая имеет значение True для отсутствующих значений и False в других местах.

Управление вашими данными

Когда у вас есть фрейм данных, вам часто нужно выполнять операции с данными. Давайте начнем с нового фрейма данных, который имеет четыре строки и три столбца случайных целых чисел от 1 до 9 (включительно).

Теперь вы можете начать работать с данными. Давайте суммируем все столбцы и присвоим результат последней строке, а затем суммируем все строки (измерение 1) и присваиваем последний столбец:

Вы также можете выполнять операции со всем фреймом данных. Вот пример вычитания 3 из каждой ячейки:

Для полного контроля вы можете применять произвольные функции:

Слияние данных

Другой распространенный сценарий работы с фреймами данных - это объединение и слияние фреймов данных (и рядов). Pandas, как обычно, дают вам разные варианты. Давайте создадим еще один фрейм данных и рассмотрим различные варианты.

Соединение

При использовании pd.concat pandas просто объединяет все строки предоставленных частей по порядку. Нет выравнивания индексов. Посмотрите в следующем примере, как создаются повторяющиеся значения индекса:

Вы также можете объединить столбцы, используя аргумент axis=1:

Обратите внимание, что, поскольку в первом фрейме данных (я использовал только две строки) не было такого количества строк, пропущенные значения автоматически заполнялись значениями NaN, которые изменяли эти типы столбцов с int на float.

Можно объединить любое количество фреймов данных за один вызов.

Слияние

Функция слияния ведет себя аналогично соединению SQL. Он объединяет все столбцы из строк, имеющих одинаковые ключи. Обратите внимание, что оно работает только с двумя фреймами данных:

Присоединение

Метод append() фрейма данных представляет собой небольшой ярлык. Функционально ведет себя как concat(), но сохраняет нам несколько нажатий клавиш.

Группировка ваших данных

Вот фрейм данных, который содержит членов двух семей и их возраст: Смитов и Джонсов. Вы можете использовать метод groupby(), чтобы сгруппировать данные по фамилии и найти информацию на уровне семьи, такую как сумма возрастов и средний возраст:

Временные ряды

Многие важные данные - это данные временных рядов. Pandas активно поддерживает данные временных рядов, начиная с диапазонов данных, заканчивая локализацией и преобразованием времени, и вплоть до сложной повторной дискретизации на основе частот.

Функция date_range() может генерировать последовательности datetime. Вот пример создания шестинедельного периода, начинающегося 1 января 2017 года, с использованием часового пояса UTC.

Добавление метки времени к вашим фреймам данных, в виде столбца данных или индекса, отлично подходит для организации и группировки ваших данных по времени. Это также позволяет повторную выборку. Вот пример повторной выборки ежеминутных данных в виде пятиминутных агрегаций.

Плоттинг

Pandas поддерживает черчение с помощью matplotlib. Убедитесь, что он установлен: pip install matplotlib. Чтобы создать график, вы можете вызвать plot() фрейма данных. Существует много опций для управления графиком, но настройки по умолчанию работают для простой визуализации. Вот как можно сгенерировать линейный график и сохранить его в файл PDF.

Обратите внимание, что в macOS Python должен быть установлен как среда для построения графиков с помощью Pandas.

Заключение

Pandas - это очень широкая система анализа данных. Он имеет простую объектную модель с концепциями рядов и фреймов данных и множеством встроенных функций. Вы можете составлять и смешивать функции pandas  и ваши собственные алгоритмы.

Кроме того, не стесняйтесь посмотреть, что у нас есть в наличии для продажи и для изучения на рынке, и не стесняйтесь задавать любые вопросы и предоставлять ценные отзывы, используя канал комментариев ниже.

Импорт и экспорт данных в pandas также очень обширен и гарантирует, что вы можете легко интегрировать их в существующие системы. Если вы выполняете какую-либо обработку данных в Python, pandas определенно входит в ваш набор инструментов.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.