Графические функции вращения оси Pandas: стек и разбивка

Python pandas
Графические функции вращения оси Pandas: стек и разбивка

Общественный номер: You Er Hut
Автор: Питер
Редактор: Питер

Всем привет, меня зовут Питер~ Приведенная сегодня статья призвана проиллюстрировать две важные функции в Pandas: стек и распаковка.

stack и unstack — это два метода перестановки осей панд, которые являются обратными операциями друг друга:

  • стек: повернуть столбцы данных в индексы строк
  • распаковать: повернуть индекс строки данных в столбцы
  • Операция по умолчанию для обоих - самый внутренний слой

Серийные статьи Pandas

Эта статья является 16-й статьей в обновлении Pandas, приглашаем посетить и прочитать:

Ниже приведен подробный пример, объясняющий использование двух и в то же время:Адрес официального сайта обучения

stack

Основная функция функции стека — преобразовать исходный столбец в индекс самой внутренней строки.После преобразования это многоуровневый индекс. Официальный оригинальный текст:

Stack the prescribed level(s) from columns to index.

Метод использования:

pd.stack(level=-1, dropna=True)
  • уровень указывает, что преобразование является самым внутренним слоем (предпоследний уровень)
  • dropna представляет обработку пропущенных значений

Объясните через картинку на официальном сайте:Атрибут столбца AB становится индексом строки AB

Операция стека на одноуровневом DataFrame

import pandas as pd 
import numpy as np

Взгляните на случай по умолчанию:

Мы обнаружили, что индекс индекса df2 также стал многоуровневым индексом:

Есть еще одна особенность: когда мы складываем однослойный DataFrame, он становится данными Series:

Операция стека на многоуровневом DataFrame

Сначала мы генерируем многоуровневый тип номера столбца

Смоделируйте данные атрибута многоуровневого столбца:

Взгляните на соответствующую информацию смоделированных данных df3:

type(df3)
pandas.core.frame.DataFrame

df3.index
Index(['小明', '小红'], dtype='object')

df3.columns
MultiIndex([('information',    'sex'),
            ('information', 'weight')],)

Посмотрите на данные после стека:

Сравните два

Сравните исходные данные с новыми сгенерированными данными:

1. Сравнение индексов

2. Сравнение атрибутов столбца

3. Сравнение типов данных

уровень параметра

level управляет размещением одного или нескольких свойств; может использоваться либо числовой индекс, либо индекс имени.

Смоделируйте данные атрибута многоуровневого столбца:

multicol2 = pd.MultiIndex.from_tuples([('weight', 'kg'),  # 多层次列属性
                                       ('height', 'm')],
                                     name=["col","unit"])

data1 = pd.DataFrame([[1.0, 2.0], [3.0, 4.0]],
                     index=['cat', 'dog'],
                     columns=multicol2
                    )

data1

Мы видим, что атрибуты столбца data1 являются многоуровневыми:

data1.columns

# 结果
MultiIndex([('weight', 'kg'),
            ('height',  'm')],
           names=['col', 'unit'])

Мы также можем стекировать с именами номеров столбцов:

Та же операция для другого "col":

Вы также можете работать с несколькими одновременно, указав имя или порядковый номер:

параметр дропна

Что делать, если в исходных данных отсутствуют значения? Смоделируйте данные с отсутствующими значениями:

data2 = pd.DataFrame([[None, 2.0],  # 引入一个缺失值
                      [4.0, 6.0]],
                     index=['cat', 'dog'],
                     columns=multicol2)
data2

По умолчанию установлено значение True, что приведет к удалению случаев, в которых также отсутствуют значения:

Если мы изменим значение на False, данные, которые также являются NaN, будут сохранены:

unstack

Превратите самый внутренний индекс строки в столбец: то есть индекс строки AB станет атрибутом столбца AB.

инструкции

unstack — это обратная операция стека, превращающая самый внутренний индекс строки в столбец.

unstack(level=- 1, fill_value=None)
  • уровень: уровень индекса, на котором выполняется операция, который может быть именем
  • fill_value: когда мы работаем, если есть отсутствующее значение, мы можем заполнить его указанным значением.

уровень параметра

Две картинки с официального сайта, результаты операции unstack сравниваются по разным порядковым номерам, по умолчанию unstack(1):

Мы используем ранее сгенерированные данные, а затем работаем с df5.

image-20210805001628811

1. Используйте операцию распаковки по умолчанию: по умолчанию используется самый внутренний слой.

2. Меняем на строку с индексом 0, а так же можем использовать имя строки как значение параметра

параметр fill_value

Функция этого параметра заключается в том, что когда мы используем unstack для работы, полученные недостающие значения заполняются указанными данными.

Для этого мы используем предыдущий фрейм данных df6:

Случай использования unstack по умолчанию: создаются два нулевых значения

Заполните полученные пропущенные значения:

  • Использовать по умолчанию
  • используй имя
  • использовать порядковый номер

Суммировать

stack и unstack в основном предназначены для укладки и распаковки данных Series или DataFrame. У них есть общая особенность: по умолчанию они работают с самым внутренним номером индекса. Эти две операции являются обратными друг другу. Разница в том, что стек — столбец-в -row, а unstack — от строки к столбцу.