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