Общественный номер: 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.
1. Используйте операцию распаковки по умолчанию: по умолчанию используется самый внутренний слой.
2. Меняем на строку с индексом 0, а так же можем использовать имя строки как значение параметра
параметр fill_value
Функция этого параметра заключается в том, что когда мы используем unstack для работы, полученные недостающие значения заполняются указанными данными.
Для этого мы используем предыдущий фрейм данных df6:
Случай использования unstack по умолчанию: создаются два нулевых значения
Заполните полученные пропущенные значения:
- Использовать по умолчанию
- используй имя
- использовать порядковый номер
Суммировать
stack и unstack в основном предназначены для укладки и распаковки данных Series или DataFrame. У них есть общая особенность: по умолчанию они работают с самым внутренним номером индекса. Эти две операции являются обратными друг другу. Разница в том, что стек — столбец-в -row, а unstack — от строки к столбцу.