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. |
例子,
1)按店铺和产品聚合销售额
import pandas as pd # 创建数据 data = { '店铺': ['店铺A', '店铺A', '店铺B', '店铺B', '店铺A', '店铺B'], '产品': ['产品1', '产品2', '产品1', '产品2', '产品1', '产品2'], '销售额': [100, 150, 200, 250, 120, 300] } df = pd.DataFrame(data) # 使用 pivot_table 创建透视表 pivot = df.pivot_table(values='销售额', index='店铺', columns='产品', aggfunc='sum', fill_value=0) print(pivot)
2)按店铺和产品聚合销售额,并计算平均值
import pandas as pd # 创建数据 data = { '店铺': ['店铺A', '店铺A', '店铺B', '店铺B', '店铺A', '店铺B'], '产品': ['产品1', '产品2', '产品1', '产品2', '产品1', '产品2'], '销售额': [100, 150, 200, 250, 120, 300] } df = pd.DataFrame(data) pivot = df.pivot_table(values='销售额', index='店铺', columns='产品', aggfunc='mean', fill_value=0) print(pivot)
3)添加汇总行和列(margins)
import pandas as pd # 创建数据 data = { '店铺': ['店铺A', '店铺A', '店铺B', '店铺B', '店铺A', '店铺B'], '产品': ['产品1', '产品2', '产品1', '产品2', '产品1', '产品2'], '销售额': [100, 150, 200, 250, 120, 300] } df = pd.DataFrame(data) pivot_with_margins = df.pivot_table(values='销售额', index='店铺', columns='产品', aggfunc='sum', margins=True) print(pivot_with_margins)