DataFrame.pivot_table(self, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All', observed=False) → 'DataFrame' [source]
创建电子表格样式的pivot table
作为DataFrame
。
pivot table中的级别将存储在结果DataFrame
的索引和列上的MultiIndex对象(分层索引)中。
参数: | values :要汇总的列,可选 index : column,Grouper,array或上一个list 如果传递数组,则其长度必须与数据长度相同。 该列表可以包含任何其他类型(列表除外)。 在pivot table索引上进行分组的键。 如果传递了数组,则其使用方式与列值相同。 columns : column,Grouper,array或上一个list 如果传递数组,则其长度必须与数据长度相同。 该列表可以包含任何其他类型(列表除外)。 在pivot table列上进行分组的键。如果传递了数组, 则其使用方式与列值相同。 aggfunc :函数,函数列表,字典,默认 如果传递了函数列表, 则生成的pivot table将具有层次结构列, 其顶层是函数名称(从函数对象本身推论得出)。 如果传递了dict,则键为要汇总的列, 值是函数或函数列表。 fill_value : 用于替换缺失值的值。 margins : 添加所有行/列(例如,小计/总计)。 dropna : 不要包括所有条目均为NaN的列。 margins_name : 当 observed : 仅当任何 groupers是分类者时才适用。 如果为 如果为 在版本0.25.0中进行了更改。 |
返回值: |
Excel样式的pivot table. |
例子,
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