Spec-Zone.ru › pandas 1

pandas.DataFrame.pivot_table

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

Создаёт сводную таблицу в формате DataFrame, похожую на таблицу в электронных таблицах.

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

Parameters
values:столбец для агрегирования, необязательно
index:столбец, Grouper, массив или список предыдущих

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

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

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

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

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

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

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

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

Добавить все строки/столбцы (например, для подсумм/общей суммы).

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

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

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

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

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

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

Изменено в версии 0.25.0.

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=np.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=np.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': np.mean,
...                              'E': np.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': np.mean,
...                              'E': [min, max, np.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/1.5.0/reference/api/pandas.DataFrame.pivot_table.html

Spec-Zone.ru

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