Spec-Zone.ru › pandas 0.25

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=False) [source]

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

Параметры:
data : DataFrame
values : column to aggregate, optional
index : column, Grouper, array, or list of the previous

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

columns : column, Grouper, array, or list of the previous

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

aggfunc : function, list of functions, dict, default numpy.mean

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

fill_value : scalar, default None

Значение для заполнения пропущенных значений

margins : boolean, default False

Добавить все строки/столбцы (например, для подсчета итогов/общих итогов)

dropna : boolean, default True

Не включать столбцы, чьи значения — все NaN

margins_name : string, default ‘All’

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

observed : boolean, default False

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

Изменено в версии 0.25.0.

Возвращает:
DataFrame

См. также

DataFrame.pivot
Сводка без агрегирования, которая может обрабатывать нечисленные данные.

Примеры

>>> 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.0  7.500000  6.0
    small  5.500000  9.0  8.500000  8.0
foo large  2.000000  5.0  4.500000  4.0
    small  2.333333  6.0  4.333333  2.0

© 2008–2012, 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/0.25.0/reference/api/pandas.pivot_table.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API