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