4 функции для изменения форм таблиц в Pandas

автор рубрика ,
4 функции для изменения форм таблиц в Pandas

При работе с таблицами Pandas порой приходится их видоизменять, в частности, когда таблица многоуровневая. В этой статье мы расскажем вам об основных функциях Pandas для изменения формы таблицы. К этим функциям относятся: pivot для создания сводной таблицы, stack/unstack для добавления/удаления уровня и melt для преобразования столбцов в строки.

Сводные таблицы с Pivot

Индекс – это то, чем маркируются строки (по умолчанию это просто 1, 2,…n). Чтобы в таблице задать новый столбец с другими значениями индексов, используйте в Pandas метод pivot.  Для изменения формы указываются аргументы: index (индекс), columns (столбцы), values (значения). Вам может понадобится pivot тогда, когда нужно зафиксировать новый индекс с новым столбцом.

pivot Pandas
Результат pivot на таблицах Pandas

Пример с кодом на Python для создания сводной таблицы:

import pandas as pd

data = [
    ['one', 1., 2, 'x'],
    ['two', 4., 5, 'y'],
    ['six', 5., 3, 'z'],
    ['one', 6., 5, 'w'],
]
cols = ['foo', 'bar', 'buz', 'fee']
df = pd.DataFrame(data, columns=cols)

df.pivot(
    index='foo',
    columns='bar',
    values='buz'
)
bar  1.0  4.0  5.0  6.0
foo                    
one  2.0  NaN  NaN  5.0
six  NaN  NaN  3.0  NaN
two  NaN  5.0  NaN  NaN

Добавляем и удаляем уровни

stack pandas
Результат добавления уровня

С pivot тесно связаны связанные методы stack и unstack как для объектов Series, так и DataFrame. Эти методы предназначены для совместной работы с многоуровневыми таблицами. Под уровнем подразумевается столбец в индексе. Вот что в сущности делают эти методы:

  • stack добавляет новый уровень к индексу из столбца
  • unstack делает противоположное — избавляется от уровня и добавляет его к столбцам

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

unstack pandas
Результат удаления уровня

Код на Python для добавления уровня в таблице Pandas:

# DataFrame тот же, что и выше
df.stack()
0  foo    one
   bar      1
   buz      2
   fee      x
1  foo    two
   bar      4
   buz      5
   fee      y
2  foo    two
   bar      5
   buz      3
   fee      z
3  foo    one
   bar      6
   buz      5
   fee      w
dtype: object

Из столбцов в переменные

Функция melt или метод DataFrame.melt предназначены для преобразования одного или более столбцов в строки с измеряемыми значениями. По умолчанию новый столбец с полученными строками имеет название variable, а столбец с измеряемыми значениями — value. Эти названия могут быть изменены параметрами var_name и value_name.

melt pandas
Результат преобразования melt

Следующий пример на Python демонстрирует результат Pandas-функции melt:

# DataFrame тот же, что и выше
df.melt('foo')
    foo variable value
0   one      bar     1
1   two      bar     4
2   two      bar     5
3   one      bar     6
4   one      buz     2
5   two      buz     5
6   two      buz     3
7   one      buz     5
8   one      fee     x
9   two      fee     y
10  two      fee     z
11  one      fee     w

 

Еще больше подробностей о преобразовании таблиц Pandas в рамках анализа данных и задач Data Science на реальных примерах вы узнаете на нашем специализированном курсе «DPREP: Подготовка данных для Data Mining на Python» в лицензированном учебном центре обучения и повышения квалификации IT-специалистов в Москве.

Записаться на курс

Смотреть раcписание

Источники
  1. DataFrame.pivot
  2. DataFrame.unstack
  3. DataFrame.stack
  4. DataFrame.melt
Комментировать