当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python 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=False, sort=True)

创建一个 spreadsheet-style 数据透视表作为 DataFrame。

数据透视表中的级别将存储在结果 DataFrame 的索引和列上的 MultiIndex 对象(分层索引)中。

参数

values要聚合的列,可选
index列、Grouper、数组或前一个列表

如果传递一个数组,它必须与数据的长度相同。该列表可以包含任何其他类型(列表除外)。在数据透视表索引上分组的键。如果传递了一个数组,则它的使用方式与列值相同。

columns列、Grouper、数组或前一个列表

如果传递一个数组,它必须与数据的长度相同。该列表可以包含任何其他类型(列表除外)。在数据透视表列上分组的键。如果传递了一个数组,则它的使用方式与列值相同。

aggfunc函数,函数列表,dict,默认 numpy.mean

如果传递函数列表,则生成的数据透视表将具有分层列,其顶层是函数名称(从函数对象本身推断)如果传递 dict,则键是要聚合的列,值是函数或函数列表。

fill_value标量,默认无

用于替换缺失值的值(在结果数据透视表中,聚合后)。

margins布尔值,默认为 False

添加所有行/列(例如小计/总计)。

dropna布尔值,默认为真

不要包括其条目全部为 NaN 的列。

margins_namestr,默认“全部”

当边距为 True 时将包含总计的行/列的名称。

observed布尔值,默认为 False

这仅适用于任何 groupers 是分类的。如果为真:仅显示分类分组的观察值。如果为 False:显示分类分组的所有值。

sort布尔值,默认为真

指定是否应该对结果进行排序。

返回

DataFrame

Excel 风格的数据透视表。

注意

有关更多示例,请参阅用户指南。

例子

>>> 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

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.pivot_table。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。