Spec-Zone.ru › pandas 1

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=False, sort=True)[source]

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

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

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

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

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

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

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

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

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

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

margins:булево, по умолчанию False

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

dropna:булево, по умолчанию True

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

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

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

observed:булево, по умолчанию False

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

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

sort:булево, по умолчанию 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=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.pivot_table.html

Spec-Zone.ru

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