官方文档参考:Jupyter Notebook Viewer
其他文档参考:Pandas_聚合数据_pivot_table()_Python_学习笔记-CSDN博客
pd.pivot_table(data, values=None, index=None, columns=None, aggfunc='mean', fill_value=None, margins=False, dropna=True, margins_name='All')
在需要多个group by的时候,可以优先考虑此函数
1.index
相当于sql里的group by后面的列,用于分组的列,相当于行索引
如果赋值的是列表,那么从左到右依次聚合,会自动合并第一列相同的值
2.values
相当于sql里的聚合函数操作的列,放在聚合函数里的列
上面说明是对Price聚合,如果不指定其他参数 ,默认聚合是求平均
3.aggfunc
相当于sql里的聚合函数,如果不指明,默认求平均.可以接受列表,即对values作不同的聚合,也可以接受字典,即对不同的values作不同的操作,也可以将字典里的值改为列表形式的,即对某列作几种不同的操作.切记,对于aggfunc,操作的是values后面的值,而不是columns后面的值.
这个就是对Quantity列求count,对Price列求和
对Price列分别求和和求平均两种操作,可以看出,上面的mean*len=sum,len相当于count
4.columns
相当于列索引,就是更细化地展示一些内容.
从上面两图可看出,以john smith为例,在图一中总和是40000,可以细化成下面几部分:
80000=CPU(35000)+Maintenance(5000)+Monitor(0)+Software(0)
相当于把总的情况细致化,可以看清楚每部分的情况.同时也发现一个问题,有NAN,其实也就是0,这就需要用fill_value来填充.
5.fill_value
就是填充NAN的.
6.margins
不是简单地求和,而是与 aggfunc 的规则相同,为True时会添加行/列的总计.