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