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=_NoDefault.no_default, sort=True)[source]
-
Создаёт сводную таблицу в формате DataFrame, похожую на таблицу в электронных таблицах.
Уровни в сводной таблице будут храниться в объектах MultiIndex (иерархических индексах) в индексе и колонках результирующего DataFrame.
- Parameters:
-
- data:DataFrame
- values:список значений или скаляр, необязательно
-
Столбец или столбцы для агрегирования.
- index:столбец, Grouper, массив или список предыдущих
-
Ключи для группировки по индексу сводной таблицы. Если передан список, он может содержать любые другие типы (кроме списка). Если передан массив, его длина должна быть такой же, как у данных, и он будет использоваться так же, как значения столбцов.
- columns:столбец, Grouper, массив или список предыдущих
-
Ключи для группировки по столбцам сводной таблицы. Если передан список, он может содержать любые другие типы (кроме списка). Если передан массив, его длина должна быть такой же, как у данных, и он будет использоваться так же, как значения столбцов.
- aggfunc:функция, список функций, словарь, по умолчанию “среднее”
-
Если передан список функций, результирующая сводная таблица будет иметь иерархические столбцы, верхний уровень которых — имена функций (выведенные из самих объектов функций). Если передан словарь, ключ — столбец для агрегирования, значение — функция или список функций. Если
margin=True, aggfunc будет использоваться для расчёта частичных агрегатов. - fill_value:скаляр, по умолчанию None
-
Значение для заполнения пропущенных значений (в результирующей сводной таблице после агрегирования).
- margins:bool, по умолчанию False
-
Если
margins=True, будут добавлены специальныеAllстолбцы и строки с частичными агрегатами групп по категориям в строках и столбцах. - dropna:bool, по умолчанию True
-
Не включать столбцы, все значения которых — NaN. Если True, строки с NaN значением в любом столбце будут исключены перед вычислением margins.
- margins_name:строка, по умолчанию ‘All’
-
Имя строки/столбца, которое будет содержать итоги, когда margins — True.
- observed:bool, по умолчанию False
-
Это применимо только если некоторые группировщики — Categoricals. Если True: показывать только наблюдаемые значения для категориальных группировщиков. Если False: показывать все значения для категориальных группировщиков.
Устарело начиная с версии 2.2.0: Значение по умолчанию
Falseустарело и будет изменено наTrueв будущей версии pandas. - 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="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–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/2.2.2/reference/api/pandas.pivot_table.html