Spec-Zone.ru › pandas 2

pandas.DataFrame.pivot_table

DataFrame.pivot_table(values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=_NoDefault.no_default, sort=True)[source]

Создание сводной таблицы в стиле электронных таблиц как DataFrame.

Уровни в сводной таблице будут храниться в объектах MultiIndex (иерархических индексах) в индексе и столбцах результирующего DataFrame.

Parameters:
values:list-like или скаляр, необязательно

Столбец или столбцы для агрегирования.

index:столбец, Grouper, массив или список предыдущих

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

columns:столбец, Grouper, массив или список предыдущих

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

aggfunc:функция, список функций, словарь, по умолчанию “mean”

Если передан список функций, результирующая сводная таблица будет иметь иерархические столбцы, верхний уровень которых - имена функций (определяемые по самим объектам функций). Если передан словарь, ключ - столбец для агрегирования, а значение - функция или список функций. Если margin=True, aggfunc будет использоваться для расчета частичных агрегатов.

fill_value:скаляр, по умолчанию None

Значение для заполнения пропущенных значений (в результирующей сводной таблице после агрегирования).

margins:bool, по умолчанию False

Если margins=True, будут добавлены специальные All столбцы и строки с частичными агрегатами групп по категориям в строках и столбцах.

dropna:bool, по умолчанию True

Не включать столбцы, значения которых все NaN. Если True, строки с значением NaN в любом столбце будут опущены перед вычислением margin.

margins_name:строка, по умолчанию ‘All’

Имя строки/столбца, которое будет содержать итоги, когда margins True.

observed:bool, по умолчанию False

Это применимо только в том случае, если какие-либо групперы являются категориальными. Если True: отображаются только наблюдаемые значения для категориальных групперов. Если False: отображаются все значения для категориальных групперов.

Устарело с версии 2.2.0: Значение по умолчанию False устарело и будет изменено на True в будущей версии pandas.

sort:bool, по умолчанию True

Указывает, следует ли сортировать результат.

Введено в версии 1.3.0.

Returns:
DataFrame

Сводная таблица в стиле Excel.

См. также

DataFrame.pivot

Сводка без агрегирования, которая может обрабатывать нечисленные данные.

DataFrame.melt

Преобразование DataFrame из широкого в длинный формат, при необходимости сохраняя идентификаторы.

wide_to_long

Преобразование широкой панели в длинный формат. Менее гибкий, но более удобный для пользователя, чем melt.

Примечания

Дополнительные примеры см. в руководстве пользователя.

Примеры

>>> df = pd.DataFrame({"A": ["foo", "foo", "foo", "foo", "foo",
...                          "bar", "bar", "bar", "bar"],
...                    "B": ["one", "one", "one", "two", "two",
...                          "one", "one", "two", "two"],
...                    "C": ["small", "large", "large", "small",
...                          "small", "large", "small", "small",
...                          "large"],
...                    "D": [1, 2, 2, 3, 3, 4, 5, 6, 7],
...                    "E": [2, 4, 5, 5, 6, 6, 8, 9, 9]})
>>> df
     A    B      C  D  E
0  foo  one  small  1  2
1  foo  one  large  2  4
2  foo  one  large  2  5
3  foo  two  small  3  5
4  foo  two  small  3  6
5  bar  one  large  4  6
6  bar  one  small  5  8
7  bar  two  small  6  9
8  bar  two  large  7  9

В этом первом примере значения агрегируются с помощью суммы.

>>> table = pd.pivot_table(df, values='D', index=['A', 'B'],
...                        columns=['C'], aggfunc="sum")
>>> table
C        large  small
A   B
bar one    4.0    5.0
    two    7.0    6.0
foo one    4.0    1.0
    two    NaN    6.0

Мы также можем заполнить пропущенные значения с помощью параметра fill_value.

>>> table = pd.pivot_table(df, values='D', index=['A', 'B'],
...                        columns=['C'], aggfunc="sum", fill_value=0)
>>> table
C        large  small
A   B
bar one      4      5
    two      7      6
foo one      4      1
    two      0      6

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

>>> table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'],
...                        aggfunc={'D': "mean", 'E': "mean"})
>>> table
                D         E
A   C
bar large  5.500000  7.500000
    small  5.500000  8.500000
foo large  2.000000  4.500000
    small  2.333333  4.333333

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

>>> table = pd.pivot_table(df, values=['D', 'E'], index=['A', 'C'],
...                        aggfunc={'D': "mean",
...                                 'E': ["min", "max", "mean"]})
>>> table
                  D   E
               mean max      mean  min
A   C
bar large  5.500000   9  7.500000    6
    small  5.500000   9  8.500000    8
foo large  2.000000   5  4.500000    4
    small  2.333333   6  4.333333    2

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.DataFrame.pivot_table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API