pandas.pivot_table

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

创建一个电子表格样式的数据透视表作为DataFrame。数据透视表中的级别将存储在结果DataFrame的索引和列上的MultiIndex对象(层次索引)中。

参数:

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

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

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

fill_value : 标量,默认无
用于替换缺失值的值

margin : boolean,默认为False
添加所有行/列(例如,对于小计/总计)

dropna : 布尔值,默认为True
不包括条目全部为NaN的列

margins_name : string,默认为'All'
当margin为True时,将包含总计的行/列的名称。

返回:
table : DataFrame

也可以看看
DataFrame.pivot
没有聚合的Pivot可以处理非数字数据。
Examples

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
This first example aggregates values by taking the sum.

table = pivot_table(df, values='D', index=['A', 'B'],
... columns=['C'], aggfunc=np.sum)

table
C large small
A B
bar one 4 5
two 7 6
foo one 4 1
two NaN 6
We can also fill missing values using the fill_value parameter.

table = 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
The next example aggregates by taking the mean across multiple columns.

table = pivot_table(df, values=['D', 'E'], index=['A', 'C'],
... aggfunc={'D': np.mean,
... 'E': np.mean})

table
D E
mean mean
A C
bar large 5.500000 7.500000
small 5.500000 8.500000
foo large 2.000000 4.500000
small 2.333333 4.333333
We can also calculate multiple types of aggregations for any given value column.

table = 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.pivot_table)