Spec-Zone.ru › pandas 2

pandas.pivot_table

pandas.pivot_table(data, 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:
data:DataFrame
values:список значений или скаляр, необязательно

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Это применимо только если некоторые группировщики — Categoricals. Если 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.pivot_table.html

Spec-Zone.ru

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