pandas.pivot_table#

pandas.pivot_table(данные, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=, sort=True)[источник]#

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

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

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

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

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

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

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

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

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

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

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

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

поля итоговbool, по умолчанию False

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

dropnabool, по умолчанию True

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

margins_namestr, по умолчанию 'All'

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

observedbool, по умолчанию False

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

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

sortbool, по умолчанию 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