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=<no_default>, sort=True)[исходный код]

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

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

Параметры:
values:список или скалярное значение, необязательно

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

index:столбец, Grouper, массив или список из перечисленных типов

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

columns:столбец, Grouper, массив или список из перечисленных типов

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

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

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

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

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

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

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

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

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

margins_name:str, по умолчанию ‘All’

Имя строки или столбца, содержащего итоги, если margins равно True.

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

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

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

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

Определяет, следует ли сортировать результат.

Добавлено в версии 1.3.0.

Возвращает:
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–2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
© 2011–2025, Open source contributors
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.3.0/reference/api/pandas.DataFrame.pivot_table.html

Spec-Zone.ru

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