python中pivot函数用法_Python pandas.DataFrame.pivot_table函数方法的使用

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 :函数,函数列表,字典,默认numpy.mean

如果传递了函数列表,

则生成的pivot table将具有层次结构列,

其顶层是函数名称(从函数对象本身推论得出)。

如果传递了dict,则键为要汇总的列,

值是函数或函数列表。

fill_value :scalar(标量),默认为None

用于替换缺失值的值。

margins :bool,默认为False

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

dropna :bool,默认为True

不要包括所有条目均为NaN的列。

margins_name:str,默认为"All"

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

observed:bool,默认为False

仅当任何 groupers是分类者时才适用。

如果为True:仅显示分类 groupers 的观测值。

如果为False:显示分类 groupers 的所有值。

在版本0.25.0中进行了更改。

返回值:DataFrame

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

你可能感兴趣的:(python中pivot函数用法_Python pandas.DataFrame.pivot_table函数方法的使用)